From c24aef7fa42ae45b74eb067949d69fbdfe0e1fce Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Thu, 9 Apr 2026 15:39:19 +0200 Subject: [PATCH 01/12] Docs: Add comprehensive API, migration, code style, and guide documentation - Add `.gitignore` rules for `docs/` to exclude build artifacts and dependencies. - Introduce API reference in `docs/content/api.md` outlining split strategy for conceptual and generated API resources. - Add Blazor WebView integration guide with project setup, lifecycle, and advanced configurations in `docs/content/guides/blazor-webview.md`. - Detail coding conventions for C/C++ and C# in `docs/content/cpp/code-style.md` and `docs/content/csharp/code-style.md`. - Provide a migration guide for breaking Photino to InfiniFrame changes in `docs/content/concepts/breaking-changes-from-photino.md`. - Add core window builder and runtime API usage guide in `docs/content/guides/core-window.md`. --- .../workflows/shared-release-publish-docs.yml | 49 +- .github/workflows/shared-testing-docs.yml | 14 +- README.md | 34 +- docs/.gitignore | 3 + docs/content/api.md | 15 + .../concepts/breaking-changes-from-photino.md | 301 + docs/content/cpp/code-style.md | 9 + docs/content/cpp/native-cpp-api.md | 32 + docs/content/csharp/code-style.md | 13 + docs/content/guides/blazor-webview.md | 206 + docs/content/guides/core-window.md | 416 + docs/content/guides/custom-window-chrome.md | 198 + docs/content/guides/getting-started.md | 190 + docs/content/guides/javascript-interop.md | 217 + docs/content/guides/pack-tool.md | 240 + docs/content/guides/web-server.md | 189 + docs/content/intro.md | 14 + docs/content/migration/docfx-to-docusaurus.md | 43 + docs/docusaurus.config.ts | 99 + docs/package-lock.json | 15979 ++++++++++++++++ docs/package.json | 32 + docs/scripts/serve-docs.ps1 | 7 + docs/sidebars.ts | 46 + docs/src/css/custom.css | 9 + docs/tsconfig.json | 11 + package.json | 2 + 26 files changed, 18340 insertions(+), 28 deletions(-) create mode 100644 docs/.gitignore create mode 100644 docs/content/api.md create mode 100644 docs/content/concepts/breaking-changes-from-photino.md create mode 100644 docs/content/cpp/code-style.md create mode 100644 docs/content/cpp/native-cpp-api.md create mode 100644 docs/content/csharp/code-style.md create mode 100644 docs/content/guides/blazor-webview.md create mode 100644 docs/content/guides/core-window.md create mode 100644 docs/content/guides/custom-window-chrome.md create mode 100644 docs/content/guides/getting-started.md create mode 100644 docs/content/guides/javascript-interop.md create mode 100644 docs/content/guides/pack-tool.md create mode 100644 docs/content/guides/web-server.md create mode 100644 docs/content/intro.md create mode 100644 docs/content/migration/docfx-to-docusaurus.md create mode 100644 docs/docusaurus.config.ts create mode 100644 docs/package-lock.json create mode 100644 docs/package.json create mode 100644 docs/sidebars.ts create mode 100644 docs/src/css/custom.css create mode 100644 docs/tsconfig.json diff --git a/.github/workflows/shared-release-publish-docs.yml b/.github/workflows/shared-release-publish-docs.yml index e2505787..22e86612 100644 --- a/.github/workflows/shared-release-publish-docs.yml +++ b/.github/workflows/shared-release-publish-docs.yml @@ -20,7 +20,7 @@ concurrency: jobs: build: name: Build Docs - runs-on: windows-latest + runs-on: ubuntu-latest steps: - name: Checkout @@ -37,30 +37,49 @@ jobs: 10.x - name: Install DocFX - shell: pwsh + shell: bash run: | dotnet tool install --global docfx --version 2.78.5 - "$env:USERPROFILE\.dotnet\tools" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + echo "$HOME/.dotnet/tools" >> "$GITHUB_PATH" + + - name: Setup Node + uses: actions/setup-node@v6 + with: + node-version: 20 + cache: npm + cache-dependency-path: | + package-lock.json + docs/package-lock.json - name: Install Doxygen - shell: pwsh - run: choco install doxygen.install -y --no-progress + run: | + sudo apt-get update + sudo apt-get install -y doxygen + + - name: Install Docusaurus Dependencies + shell: bash + run: npm ci --prefix docs - - name: Generate API Metadata + - name: Generate API Metadata (DocFX Parity) run: docfx metadata docs/docfx.json - - name: Generate C++ Docs + - name: Generate C++ Docs (DocFX Parity) shell: pwsh run: ./docs/scripts/update-cpp-api.ps1 -Required - - name: Build Docs Site - shell: pwsh + - name: Build DocFX Site (Parallel Validation) + shell: bash run: | - $logPath = Join-Path $env:RUNNER_TEMP "docfx-build.log" - docfx build docs/docfx.json 2>&1 | Tee-Object -FilePath $logPath - if (Select-String -Path $logPath -Pattern '^\s*[1-9][0-9]* warning\(s\)' -Quiet) { - throw "DocFX reported warnings." - } + set -euo pipefail + + docfx build docs/docfx.json 2>&1 | tee /tmp/docfx-build.log + if grep -Eq '^[[:space:]]*[1-9][0-9]* warning\(s\)' /tmp/docfx-build.log; then + exit 1 + fi + + - name: Build Docusaurus Site + shell: bash + run: npm run docs:build - name: Setup Pages uses: actions/configure-pages@v6 @@ -68,7 +87,7 @@ jobs: - name: Upload Pages Artifact uses: actions/upload-pages-artifact@v4 with: - path: docs/_site + path: docs/build deploy: name: Deploy Docs diff --git a/.github/workflows/shared-testing-docs.yml b/.github/workflows/shared-testing-docs.yml index ce0032ab..7ecaaf4a 100644 --- a/.github/workflows/shared-testing-docs.yml +++ b/.github/workflows/shared-testing-docs.yml @@ -42,7 +42,11 @@ jobs: - name: Setup Node uses: actions/setup-node@v6 with: - node-version: 24 + node-version: 20 + cache: npm + cache-dependency-path: | + package-lock.json + docs/package-lock.json - name: Cache .NET Tools & NuGet uses: actions/cache@v5 @@ -77,6 +81,10 @@ jobs: uses: awalsh128/cache-apt-pkgs-action@v1 with: packages: doxygen + + - name: Install Docusaurus Dependencies + shell: bash + run: npm ci --prefix docs - name: Set Docs Pending env: @@ -109,6 +117,10 @@ jobs: if grep -Eq '^[[:space:]]*[1-9][0-9]* warning\(s\)' /tmp/docfx-build.log; then exit 1 fi + + - name: Build Docusaurus Docs + shell: bash + run: npm run docs:build - name: Complete Docs Check if: always() diff --git a/README.md b/README.md index c0ae13db..7078c7f6 100644 --- a/README.md +++ b/README.md @@ -135,44 +135,54 @@ dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj --rid win-x64 ## Documentation - [Docs Home](https://docs.infiniframe.dev/) -- [Getting Started](https://docs.infiniframe.dev/articles/guides/getting-started.html) — Installation, first app, +- [Getting Started](https://docs.infiniframe.dev/guides/getting-started) — Installation, first app, platform requirements ### Guides -- [Core Window](https://docs.infiniframe.dev/articles/guides/core-window.html) — Builder pattern, configuration, events, +- [Core Window](https://docs.infiniframe.dev/guides/core-window) — Builder pattern, configuration, events, messaging -- [Blazor WebView](https://docs.infiniframe.dev/articles/guides/blazor-webview.html) — Hosting a full Blazor app in a +- [Blazor WebView](https://docs.infiniframe.dev/guides/blazor-webview) — Hosting a full Blazor app in a native window -- [Web Server](https://docs.infiniframe.dev/articles/guides/web-server.html) — ASP.NET Core + native window integration -- [Custom Window Chrome](https://docs.infiniframe.dev/articles/guides/custom-window-chrome.html) — Chromeless windows +- [Web Server](https://docs.infiniframe.dev/guides/web-server) — ASP.NET Core + native window integration +- [Custom Window Chrome](https://docs.infiniframe.dev/guides/custom-window-chrome) — Chromeless windows with Blazor components -- [JavaScript Interop](https://docs.infiniframe.dev/articles/guides/javascript-interop.html) — Communicating between JS +- [JavaScript Interop](https://docs.infiniframe.dev/guides/javascript-interop) — Communicating between JS and C# ### API Reference -- [Native C++ API Guide](https://docs.infiniframe.dev/articles/cpp/native-cpp-api.html) +- [Native C++ API Guide](https://docs.infiniframe.dev/cpp/native-cpp-api) - [Native C++ API Reference (Generated)](https://docs.infiniframe.dev/api/cpp/native-cpp-reference.html) - [Generated C# API Reference](https://docs.infiniframe.dev/api/cs/) ### Migration -- [Breaking Changes vs Photino.NET](https://docs.infiniframe.dev/articles/concepts/breaking-changes-from-photino.html) — +- [Breaking Changes vs Photino.NET](https://docs.infiniframe.dev/concepts/breaking-changes-from-photino) — API, namespace, event system, and behavioral differences from the original Photino projects ### Build Docs Locally Requirements: -- `docfx` (required) -- `Doxygen` (required for generated C++ API reference) -- `Node.js`/`npm` (required for `npx moxygen` during C++ API reference generation) +- `Node.js`/`npm` (required) Run: ```powershell -.\docs\scripts\serve-docs.ps1 +npm run docs:dev +``` + +Build static site: + +```powershell +npm run docs:build +``` + +Legacy DocFX parity flow (temporary during migration): + +```powershell +.\docs\scripts\serve-docs.ps1 -LegacyDocfx ``` ## Platform Requirements diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 00000000..531b31c8 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,3 @@ +.docusaurus +build +node_modules diff --git a/docs/content/api.md b/docs/content/api.md new file mode 100644 index 00000000..91d0b418 --- /dev/null +++ b/docs/content/api.md @@ -0,0 +1,15 @@ +--- +id: api +slug: /api +title: API Reference +--- + +InfiniFrame uses a split API docs strategy during the DocFX to Docusaurus migration: + +- Conceptual API guidance lives in Docusaurus: + - [Native C++ API Guide](cpp/native-cpp-api.md) +- Generated API references remain hosted separately on the legacy DocFX endpoint: + - [Generated C# API Reference](https://docs.infiniframe.dev/api/cs/) + - [Generated C++ API Reference](https://docs.infiniframe.dev/api/cpp/native-cpp-reference.html) + +This keeps generated API output stable while Markdown guides and concepts move to Docusaurus. diff --git a/docs/content/concepts/breaking-changes-from-photino.md b/docs/content/concepts/breaking-changes-from-photino.md new file mode 100644 index 00000000..86efdaee --- /dev/null +++ b/docs/content/concepts/breaking-changes-from-photino.md @@ -0,0 +1,301 @@ +# Breaking Changes vs Photino.NET + +InfiniFrame is a complete, independent rework of [Photino.NET](https://github.com/tryphotino/photino.NET) and [photino.native](https://github.com/tryphotino/photino.native). It is not a drop-in replacement — this document covers every API, naming, and behavioral difference to assist with migration + +## Table of Contents + +- [Package and Namespace](#package-and-namespace) +- [Entry Point and Builder API](#entry-point-and-builder-api) +- [Runtime Window API](#runtime-window-api) +- [Event System](#event-system) +- [Web Messaging and Message Routing](#web-messaging-and-message-routing) +- [Logging](#logging) +- [Native C++ Interface](#native-c-interface) +- [Known Photino Issues Addressed](#known-photino-issues-addressed) +- [Removed or Replaced Features](#removed-or-replaced-features) + +## Package and Namespace + +| Aspect | Photino | InfiniFrame | +|--------------------------|-----------------------------------------|--------------------------------------| +| NuGet package | `Photino.NET` | `InfiniLore.InfiniFrame` | +| C# namespace | `Photino.NET` | `InfiniFrame` | +| Native DLL | `Photino.Native` | `InfiniFrame.Native` (internal) | +| C++ class | `Photino` | `InfiniFrameWindow` | +| C++ init params | `PhotinoInitParams` | `InfiniFrameInitParams` | +| Exported function prefix | `Photino_` | `InfiniFrame_` | +| Default window title | `"Photino"` | `"InfiniFrame"` | +| Default user agent | `"Photino WebView"` | `"InfiniFrame WebView"` | +| Default temp path | `%LocalAppData%\Photino` (Windows-only) | `%TEMP%\infiniframe` (all platforms) | + +All type names that were prefixed `Photino` are now prefixed `InfiniFrame`. If you have any code targeting the native DLL directly via P/Invoke, all exported symbol names must be updated from `Photino_*` to `InfiniFrame_*` + +## Entry Point and Builder API + +### Photino — direct construction + +```csharp +var window = new PhotinoWindow() + .SetTitle("My App") + .SetDevToolsEnabled(true) + .Load(new Uri("https://example.com")); +window.WaitForClose(); +``` + +`PhotinoWindow` is constructed directly. All configuration is done by calling methods on the object after construction. There is no separate builder class + +### InfiniFrame — explicit builder + +```csharp +IInfiniFrameWindow window = InfiniFrameWindowBuilder.Create() + .SetTitle("My App") + .SetDevToolsEnabled(true) + .SetStartUrl("https://example.com") + .Build(); +window.WaitForClose(); +``` + +Configuration must be set **before** calling `Build()`. The builder accepts an optional `IServiceProvider` for DI integration. The resulting type is `IInfiniFrameWindow`, not a concrete class + +### Configuration from appsettings.json + +InfiniFrame supports sourcing window configuration from `IConfiguration` under an `"InfiniFrame"` key — not available in Photino: + +```json +{ + "InfiniFrame": { + "Title": "My App", + "Width": 1280, + "Height": 720 + } +} +``` + +### Type and class changes + +| Photino | InfiniFrame | Notes | +|---------------------------------------------------|-------------------------------------------------------------------|------------------------------------------------| +| `PhotinoWindow` (monolithic) | `IInfiniFrameWindow` (interface) + `InfiniFrameWindow` (concrete) | Users interact through the interface | +| No builder | `InfiniFrameWindowBuilder` | Separate builder class | +| No configuration type | `InfiniFrameWindowConfiguration` | Separates build-time config from runtime | +| `PhotinoWindow(PhotinoWindow parent)` constructor | `builder.SetParent(parentWindow)` | Parent passed through builder, not constructor | + +## Runtime Window API + +### Method renames and removals + +| Photino | InfiniFrame | Notes | +|------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------| +| `PhotinoWindow.Load(Uri)` / `Load(string)` | `IInfiniFrameWindow.Load(Uri)` / `Load(string)` | Renamed and available at runtime; initial URL can also be set via `SetStartUrl()` in the builder | +| `PhotinoWindow.LoadRawString(string)` | `IInfiniFrameWindow.LoadRawString(string)` | Available at runtime; initial HTML can also be set via `SetStartString()` in the builder | +| `PhotinoWindow.Center()` | `IInfiniFrameWindow.Center()` / `CenterOnCurrentMonitor()` / `CenterOnMonitor(int)` | Available at runtime | +| `PhotinoWindow.MoveTo(Point, bool)` / `Offset(Point)` | `window.SetLocation(x, y)` / `window.Offset(x, y)` | | +| `PhotinoWindow.SetMinHeight(int)` / `SetMinWidth(int)` | Removed — use `SetMinSize(width, height)` | Consolidated | +| `PhotinoWindow.SetMaxHeight(int)` / `SetMaxWidth(int)` | Removed — use `SetMaxSize(width, height)` | Consolidated | +| `PhotinoWindow.SetLogVerbosity(int)` | Removed — see [Logging](#logging) | | +| `PhotinoWindow.Win32SetWebView2Path(string)` | Internal — not on public interface | | +| `PhotinoWindow.MacOsVersion` (static) | Removed | | +| `PhotinoWindow.IsWindowsPlatform` / `IsMacOsPlatform` / `IsLinuxPlatform` (static) | Removed from public interface | | +| `PhotinoWindow.WaitForClose()` | `IInfiniFrameWindow.WaitForClose()` and `WaitForCloseAsync()` | Async variant added | +| `Monitor` struct | `InfiniMonitor` record | Type renamed. Collection changed from `IReadOnlyList` to `ImmutableArray` | +| `PhotinoDialogButtons` / `PhotinoDialogResult` / `PhotinoDialogIcon` | `InfiniFrameDialogButtons` / `InfiniFrameDialogResult` / `InfiniFrameDialogIcon` | Renamed enums | +| `ShowSaveFile(title, defaultPath, filters, count)` | `ShowSaveFile(title, defaultPath, filters, count, defaultFileName)` | Added `defaultFileName` parameter | + +### New APIs not in Photino + +| API | Description | +|-----------------------------------------------------------------------------|-----------------------------------------------------------------------------| +| `IInfiniFrameWindow.Focused` | Query or set keyboard focus state | +| `IInfiniFrameWindow.WaitForCloseAsync()` | Async wait for window close | +| `IInfiniFrameWindow.ManagedThreadId` | Thread ID of the window's message loop | +| `IInfiniFrameWindow.InstanceHandle` / `NativeType` | Low-level native access | +| `IInfiniFrameWindow.CachedPreFullScreenBounds` / `CachedPreMaximizedBounds` | Saved geometry for restore | +| `RegisterCustomSchemeHandler()` | Returns `IInfiniFrameWindow` (fluent) — in Photino it returned void | +| `ZoomEnabled` | Separate bool controlling whether user can zoom, distinct from `Zoom` level | + +## Event System + +Photino uses standard .NET `EventHandler` delegates. Assigning a new handler **replaces** the previous one: + +```csharp +// Photino — last assignment wins +window.RegisterWindowClosingHandler((sender, args) => { ... }); +``` + +InfiniFrame uses `InfiniFrameOrderedEvent` — an ordered multi-subscriber system with deterministic execution order. Handlers are added via `.Add()` and execute in registration order: + +```csharp +// InfiniFrame — all handlers run in order +window.Events.WindowClosing.Add((window, args) => { ... }); +window.Events.WindowClosing.Add((window, args) => { ... }); // also runs +``` + +### Closing event split + +Photino has a single `RegisterWindowClosingHandler`. InfiniFrame splits this into two events: + +| Event | Type | Description | +|--------------------------|----------------------------------|---------------------------------------------------------------------------------------| +| `WindowClosingRequested` | `InfiniFrameOrderedClosingEvent` | Fired when close is requested and returning `true` from any handler cancels the close | +| `WindowClosing` | `InfiniFrameOrderedEvent` | Fired when the window is definitively closing and cannot be cancelled | + +### Event handler DI injection + +InfiniFrame event handlers support DI-resolved parameters when a `IServiceProvider` is provided to `Build()`: + +```csharp +window.Events.WindowClosing.Add((MyService svc, IInfiniFrameWindow w) => { ... }); +``` + +This is not available in Photino. + +## Web Messaging and Message Routing + +### Photino — single raw handler + +```csharp +window.RegisterWebMessageReceivedHandler((sender, message) => { + // message is the full raw string from JS +}); +``` + +One handler. The full message string is passed as-is. + +### InfiniFrame — typed message routing + +InfiniFrame uses a `messageId;payload` protocol. Messages sent from JavaScript as `"myEvent;some data"` are dispatched to the handler registered for `"myEvent"`: + +```csharp +window.MessageHandlers.RegisterMessageHandler("myEvent", (window, payload) => { + // payload is "some data" +}); +``` + +A fallback `RegisterWebMessageReceivedHandler` is still available for raw unrouted messages, but the typed routing is the primary pattern + +The JavaScript side must use the `messageId;payload` format: + +```js +window.external.sendMessage("myEvent;some data"); +``` + +## Logging + +### Photino — integer verbosity + +```csharp +window.SetLogVerbosity(2); // 0 = silent, higher = more verbose +``` + +Logs were written to `Console.Out`. Setting verbosity would itself log a message even when verbosity was 0 (known bug [#257](https://github.com/tryphotino/photino.NET/issues/257)). + +### InfiniFrame — ILogger + +The integer verbosity system is removed entirely. InfiniFrame integrates with `Microsoft.Extensions.Logging`: + +```csharp +var window = InfiniFrameWindowBuilder.Create() + .Build(serviceProvider); // ILogger resolved from DI +``` + +Log output respects the configured logging provider and log-level filtering + +## Native C++ Interface + +This section is only relevant if you extend InfiniFrame at the native level or have code that calls the native DLL directly + +### Pimpl architecture + +Photino's `Photino` class exposes platform-specific fields (`_hWnd`, `GtkWidget*`, `NSWindow*`) directly in its class declaration, requiring platform headers to be included everywhere the class is used. + +InfiniFrame uses the [Pimpl idiom](https://en.cppreference.com/w/cpp/language/pimpl.html) throughout: a `struct Impl` held by `std::unique_ptr` is defined per-platform in the `.cpp`/`.mm` file. The `InfiniFrameWindow.h` header is entirely platform-agnostic + +### Build system and dependencies + +| Aspect | Photino | InfiniFrame | +|--------------------|----------------------------------------|-----------------------------------| +| Build system | Visual Studio `.vcxproj` + Makefile | CMake 4.0 | +| C++ standard | C++17 | C++23 | +| JSON library | `json.hpp` (nlohmann, bundled) | `simdjson` via CMake FetchContent | +| String conversion | Custom `ToWide`/`ToUTF8String` methods | `simdutf` via CMake FetchContent | +| Formatting | None | `std::format` (C++23 standard) | +| Sanitizers (Debug) | None | ASan / UBSan / LeakSan enabled | + +### Platform file layout + +| Photino | InfiniFrame | +|------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------| +| `Photino.Windows.cpp` (all Windows code) | `Platform/Windows/Window.cpp` | +| `Photino.Linux.cpp` (all Linux code) | `Platform/Linux/Window.cpp` | +| `Photino.Mac.mm` (all macOS code) | `Platform/Mac/Window.mm` + separate delegate files | +| macOS delegates inline in `.mm` | `AppDelegate`, `UiDelegate`, `WindowDelegate`, `NavigationDelegate`, `UrlSchemeHandler`, `NSWindowBorderless` in separate files | + +### P/Invoke generation + +Photino uses manual `[DllImport]` attributes. InfiniFrame uses source-generated `[LibraryImport]` (requires .NET 7+): + +```csharp +// Photino +[DllImport("Photino.Native", ...)] +static extern void Photino_SetTitle(IntPtr instance, string title); + +// InfiniFrame +[LibraryImport("InfiniFrame.Native", ...)] +static partial void InfiniFrame_SetTitle(IntPtr instance, ...); +``` + +### String ownership + +Photino has no explicit API for freeing native-allocated strings, which leads to memory leaks in long-running applications + +InfiniFrame exports explicit free functions that must be called on any string returned from the native layer: + +```csharp +InfiniFrame_FreeString(ptr); +InfiniFrame_FreeStringArray(ptr, count); +``` + +These are called automatically by the managed wrapper — but if you call native exports directly, you are responsible for invoking them + +### `SaveFileDialog` signature change + +The native `SaveFileDialog` export gained a `defaultFileName` parameter: + +```csharp +// Photino +Photino_ShowSaveFile(title, defaultPath, filters, count) + +// InfiniFrame +InfiniFrame_ShowSaveFile(title, defaultPath, filters, count, defaultFileName) +``` + +## Known Photino Issues Addressed + +The following are open or previously reported issues in the Photino repositories that are resolved in InfiniFrame: + +| Photino Issue | Description | How InfiniFrame Addresses It | +|------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------| +| [photino.native #173/174](https://github.com/tryphotino/photino.native/issues/173) | Custom scheme handlers completely broken on Windows (WebResourceRequested never fires) | Rewritten registration path. Scheme handlers tested end-to-end in examples | +| [photino.native #165](https://github.com/tryphotino/photino.native/issues/165) | Memory leak in `SendWebMessage` on Windows | Explicit `InfiniFrame_FreeString` ownership model. Pimpl isolates per-window native allocations | +| [photino.native #158](https://github.com/tryphotino/photino.native/issues/158) | No way to programmatically focus a window | `InfiniFrame_SetFocused` / `InfiniFrame_GetFocused` exported. Exposed via `IInfiniFrameWindow.Focused` | +| [photino.native #163](https://github.com/tryphotino/photino.native/issues/163) | UTF encoding bug in `SetWebView2RuntimePath` silently corrupts non-ASCII paths | `simdutf` used for all UTF-8 ↔ UTF-16 conversions on Windows | +| [photino.native #141](https://github.com/tryphotino/photino.native/issues/141) | Stack overflow in `WaitForExit` on Linux | Per-window independent message loops. No shared global `MessageLoopState` lock | +| [photino.NET #75](https://github.com/tryphotino/photino.NET/issues/75) | `RegisterWindowClosingHandler` does not fire on Linux | Closing handler rewritten using GTK `delete-event` signal correctly | +| [photino.NET #257](https://github.com/tryphotino/photino.NET/issues/257) | `SetLogVerbosity(0)` still logs a message | Integer verbosity removed entirely. Replaced by `ILogger` | +| [photino.NET #232](https://github.com/tryphotino/photino.NET/issues/232) | Custom scheme handlers break `fetch`/`XHR` (CORS interference) | Scheme handler registration refactored. CORS headers handled correctly per platform | +| [photino.native #175](https://github.com/tryphotino/photino.native/issues/175) | `SetTopmost` uses wrong Win32 style. `null` crash on Linux | Fixed Win32 `HWND_TOPMOST`/`HWND_NOTOPMOST` usage. `null` guards added on Linux | + +## Removed or Replaced Features + +The following Photino features are not present in InfiniFrame: + +| Feature | Notes | +|------------------------------------------------------------------------------------|-----------------------------------------------------------| +| `SetMinHeight` / `SetMinWidth` / `SetMaxHeight` / `SetMaxWidth` individual methods | Consolidated into `SetMinSize(w, h)` / `SetMaxSize(w, h)` | +| `LogVerbosity` integer system | Replaced by `ILogger` | +| `MacOsVersion` static property | Removed | +| `IsWindowsPlatform` / `IsMacOsPlatform` / `IsLinuxPlatform` static properties | Internal. Not on public interface | +| `UseOsDefaultLocation` / `UseOsDefaultSize` runtime properties | Builder / config time only | +| `BrowserControlInitParameters` runtime property | Builder / config time only | +| `nlohmann/json.hpp` bundled JSON header | Replaced by `simdjson` | +| `fmt` formatting library | Replaced by `std::format` | diff --git a/docs/content/cpp/code-style.md b/docs/content/cpp/code-style.md new file mode 100644 index 00000000..d326bde0 --- /dev/null +++ b/docs/content/cpp/code-style.md @@ -0,0 +1,9 @@ +# C/C++ Code Style + +InfiniFrame uses **K&R brace style** for all C and C++ code. + +This style is enforced through the repository-level `.clang-format` file at the project root: + +- `/.clang-format` + +Use `clang-format` with the repo configuration when editing native sources to keep formatting consistent. diff --git a/docs/content/cpp/native-cpp-api.md b/docs/content/cpp/native-cpp-api.md new file mode 100644 index 00000000..1057187e --- /dev/null +++ b/docs/content/cpp/native-cpp-api.md @@ -0,0 +1,32 @@ +# Native C++ API + +InfiniFrame native API documentation is hosted inside DocFX as conceptual reference and is sourced from the native headers and Doxygen-style comments under `src/InfiniFrame.Native`. + +## Core headers + +- `Core/InfiniFrame.h`: top-level native interop include. +- `Core/InfiniFrameWindow.h`: main native window class and callbacks. +- `Core/InfiniFrameDialog.h`: dialog surface for file/folder/message dialogs. +- `Core/InfiniFrameInitParams.h`: build-time and startup window parameters. +- `Core/InfiniFrameWindowImpl.h`: shared implementation state for platform windows. + +## Shared native types + +- `Types/Basic.h`: primitive and interop-safe aliases. +- `Types/Dialog.h`: dialog enums and result contracts. +- `Types/Callbacks.h`: callback signatures used by interop exports. +- `Utils/Event.h`: event helper abstraction used across native layers. + +## Platform implementations + +- `Platform/Windows/*`: Win32 + WebView2 host implementation. +- `Platform/Mac/*`: Cocoa/WKWebView host implementation. +- `Platform/Linux/*`: GTK/WebKitGTK host implementation. + +## Exported bridge + +- `Exports.cpp`: exported C ABI used by the managed layer. + +For detailed behavior, see source comments in the files above. This page is maintained in DocFX to keep C++ documentation and C# documentation in one navigation model. + +For generated member-level C++ reference, see [Native C++ API Reference (Generated)](../api.md). diff --git a/docs/content/csharp/code-style.md b/docs/content/csharp/code-style.md new file mode 100644 index 00000000..e9aaf33b --- /dev/null +++ b/docs/content/csharp/code-style.md @@ -0,0 +1,13 @@ +# C# Code Style + +InfiniFrame uses **K&R brace style** for C# code. + +This is enforced through the repository-level `.editorconfig` at the project root: + +- `/.editorconfig` + +Relevant rule: + +- `csharp_new_line_before_open_brace = none` + +Use your IDE formatter or `dotnet format` with the repository settings so C# formatting stays consistent. diff --git a/docs/content/guides/blazor-webview.md b/docs/content/guides/blazor-webview.md new file mode 100644 index 00000000..63d87343 --- /dev/null +++ b/docs/content/guides/blazor-webview.md @@ -0,0 +1,206 @@ +# Blazor WebView Guide + +`InfiniLore.InfiniFrame.BlazorWebView` integrates a full Blazor WebAssembly-style application into a native window with no HTTP server required — the Blazor runtime runs entirely in-process + +## Contents + +- [How It Works](#how-it-works) +- [Project Setup](#project-setup) +- [Program.cs](#programcs) +- [Available Builder API](#available-builder-api) +- [Dependency Injection](#dependency-injection) +- [Custom File Provider](#custom-file-provider) +- [Error Handling](#error-handling) +- [HttpClient](#httpclient) +- [Lifecycle](#lifecycle) +- [Custom Window Chrome](#custom-window-chrome) + +## How It Works + +InfiniFrame registers a custom URL scheme (`app://`) and handles all requests from the WebView internally — Blazor component files, JavaScript, and CSS are served from an `IFileProvider` backed by your `wwwroot/` folder +There is no localhost server; all communication happens through the native browser bridge + +## Project Setup + +Your project must use the Razor SDK: + +```xml + + + net9.0 + Exe + + + + + + +``` + +### wwwroot/index.html + +A minimal host page: + +```html + + + + + + + + + +
Loading...
+ + + + +``` + +## Program.cs + +```csharp +using InfiniFrame.BlazorWebView; +using Microsoft.Extensions.DependencyInjection; + +var builder = InfiniFrameBlazorAppBuilder.CreateDefault(args, w => w + .SetTitle("My Blazor App") + .SetSize(1280, 720) + .Center() + .SetChromeless(true) // Optional: remove native title bar +); + +// Register services — same as a standard Blazor or ASP.NET Core app +builder.Services.AddSingleton(); +builder.Services.AddScoped(); + +// Register root components — these map to elements in index.html +builder.RootComponents.Add("#app"); +builder.RootComponents.Add("head::after"); + +builder.Build().Run(); +``` + +`Run()` blocks until the window is closed and then disposes all services + +## Available Builder API + +`InfiniFrameBlazorAppBuilder` exposes three properties for configuration: + +| Property | Type | Description | +|------------------|-----------------------------|-------------------------------------------------------------------------------| +| `WindowBuilder` | `IInfiniFrameWindowBuilder` | Fluent window configuration — all options from the generated C# API reference | +| `Services` | `IServiceCollection` | Standard .NET DI container | +| `RootComponents` | `RootComponentList` | Maps Blazor components to CSS selectors in index.html | + +### Configuring the window separately + +```csharp +var builder = InfiniFrameBlazorAppBuilder.CreateDefault(); + +builder.WithInfiniFrameWindowBuilder(w => w + .SetTitle("Configured Later") + .SetDevToolsEnabled(true) +); +``` + +## Dependency Injection + +The following services are automatically registered and available for injection: + +| Service | Lifetime | Description | +|----------------------|-----------|---------------------------------------| +| `IInfiniFrameWindow` | Singleton | The native window instance | +| `IInfiniFrameJs` | Scoped | JavaScript interop utilities | +| `HttpClient` | Scoped | Preconfigured for in-process requests | +| `Dispatcher` | Singleton | Blazor's component dispatcher | + +### Injecting the window in a component + +```razor +@inject IInfiniFrameWindow Window + + + + +@code { + void Minimize() => Window.Invoke(() => { /* window ops must be on UI thread */ }); + void Close() => Window.Close(); +} +``` + +## Custom File Provider + +By default, files are served from `{AppBaseDirectory}/wwwroot/` +You can supply a custom `IFileProvider` for embedded resources, encrypted assets, or virtual file systems: + +```csharp +using Microsoft.Extensions.FileProviders; + +var embeddedProvider = new EmbeddedFileProvider(typeof(Program).Assembly, "MyApp.wwwroot"); + +var builder = InfiniFrameBlazorAppBuilder.CreateDefault( + fileProvider: embeddedProvider, + args: args +); +``` + +## Error Handling + +Unhandled exceptions in the process are caught automatically and shown as a native message dialog: + +``` +Fatal exception +System.NullReferenceException: Object reference not set... +``` + +To customize error handling, register a handler before `Build()`: + +```csharp +AppDomain.CurrentDomain.UnhandledException += (_, e) => { + // Custom logging or reporting +}; +``` + +## HttpClient + +An `HttpClient` is registered automatically with `BaseAddress` set to the internal app base URI +This lets you make in-process requests to your static assets or call external APIs: + +```razor +@inject HttpClient Http + +@code { + protected override async Task OnInitializedAsync() { + var data = await Http.GetFromJsonAsync("data/mydata.json"); + } +} +``` + +## Lifecycle + +``` +InfiniFrameBlazorAppBuilder.CreateDefault() + ↓ +Configure Services & RootComponents + ↓ +.Build() ← Registers the custom scheme, creates the window + ↓ +.Run() ← Starts the Blazor runtime, blocks until window closes + ↓ +DisposeAsync() ← Disposes all services +``` + +## Custom Window Chrome + +Combine with `InfiniLore.InfiniFrame.Blazor` for a fully custom title bar + +See the [Custom Window Chrome Guide](custom-window-chrome.md) for details + +## Examples + +- `InfiniFrameExample.BlazorWebView` (`examples/InfiniFrameExample.BlazorWebView`) - minimal Blazor app with window configuration and Serilog +- `InfiniFrameExample.BlazorWebView.MultiWindowSample` (`examples/InfiniFrameExample.BlazorWebView.MultiWindowSample`) - multiple windows each hosting a different Blazor component diff --git a/docs/content/guides/core-window.md b/docs/content/guides/core-window.md new file mode 100644 index 00000000..0f65cadc --- /dev/null +++ b/docs/content/guides/core-window.md @@ -0,0 +1,416 @@ +# Core Window Guide + +This guide covers everything available through the `InfiniLore.InfiniFrame` package — the foundation of all InfiniFrame integrations + +## Contents + +- [Building a Window](#building-a-window) +- [Single-File Native Packaging](#single-file-native-packaging) +- [Window Configuration](#window-configuration) +- [Browser Features](#browser-features) +- [Runtime Window Control](#runtime-window-control) +- [Events](#events) +- [Web Messaging](#web-messaging) +- [Custom URL Schemes](#custom-url-schemes) +- [Dialogs](#dialogs) +- [Monitor Information](#monitor-information) +- [DI Container Integration](#di-container-integration) + +## Building a Window + +All windows are created through `InfiniFrameWindowBuilder` using a fluent API + +```csharp +using InfiniFrame; + +var window = InfiniFrameWindowBuilder.Create() + .SetTitle("My App") + .SetSize(1280, 720) + .Center() + .SetStartUrl("https://myapp.local") + .Build(); + +window.WaitForClose(); +``` + +`Build()` creates and displays the native window immediately on the calling thread +The returned `IInfiniFrameWindow` gives you full control over the window at runtime + +## Single-File Native Packaging + +When your app is published as a single-file executable with embedded InfiniFrame native binaries, call `InfiniFrameSingleFileBootstrap.Initialize()` before creating any windows. + +```csharp +using InfiniFrame; + +public static class Program { + [STAThread] + public static void Main(string[] args) { + InfiniFrameSingleFileBootstrap.Initialize(); + + var window = InfiniFrameWindowBuilder.Create() + .SetTitle("My App") + .SetSize(1280, 720) + .Center() + .SetStartUrl("app://index.html") + .Build(); + + window.WaitForClose(); + } +} +``` + +`Initialize()` is idempotent and safe to call once at startup. +Use it for packaged deployments created by `InfiniLore.InfiniFrame.Tools.Pack` (or any equivalent flow that embeds native files as resources), not for standard development runs where native binaries are already present beside your app. + +## Window Configuration + +All configuration methods are chainable and must be called before `Build()` + +### Title and Icon + +```csharp +builder + .SetTitle("My Application") + .SetIconFile("assets/icon.ico") // Windows and Linux only; .ico on Windows, .png on Linux +``` + +### Size and Position + +```csharp +builder + .SetSize(1280, 720) // Width × Height + .SetMinSize(800, 600) + .SetMaxSize(1920, 1080) + .SetLocation(100, 100) // Left, Top in screen coordinates + .Center() // Center on the primary monitor + .SetUseOsDefaultSize(true) // Let the OS choose the initial size + .SetUseOsDefaultLocation(true) +``` + +Calling `SetSize` or `SetLocation` disables the corresponding OS default and centering behavior + +### Window State + +```csharp +builder + .SetMaximized(true) + .SetMinimized(true) + .SetFullScreen(true) + .SetResizable(false) + .SetTopMost(true) // Always on top + .SetChromeless(true) // Remove the native title bar and borders + .SetTransparent(true) // Enable window transparency +``` + +On Windows, enabling `SetChromeless` automatically disables `UseOsDefaultLocation`, `UseOsDefaultSize`, and `Resizable` since they are incompatible + +### Content + +```csharp +builder + .SetStartUrl("https://example.com") + .SetStartUrl(new Uri("https://example.com")) + .SetStartString("Hello") // Render HTML directly +``` + +`SetStartUrl` and `SetStartString` are mutually exclusive — the last one set wins + +## Browser Features + +```csharp +builder + .SetDevToolsEnabled(true) + .SetContextMenuEnabled(false) + .SetZoomEnabled(false) + .SetZoom(150) // Zoom level (100 = default) + .SetMediaAutoplayEnabled(true) + .SetFileSystemAccessEnabled(true) + .SetWebSecurityEnabled(false) // Disable CORS (use with caution) + .SetJavascriptClipboardAccessEnabled(true) + .SetMediaStreamEnabled(true) // Camera/microphone access + .SetSmoothScrollingEnabled() + .SetIgnoreCertificateErrorsEnabled() + .SetUserAgent("MyApp/1.0") +``` + +### Notifications (Windows only) + +```csharp +builder + .SetNotificationsEnabled() + .SetNotificationRegistrationId("com.myapp.notifications") // Windows only + .GrantBrowserPermissions() // Auto-grant camera/mic permissions (Windows only) +``` + +### Platform-specific browser parameters + +The `SetBrowserControlInitParameters` method passes raw flags to the underlying browser engine: + +```csharp +// Windows — space-separated Chromium flags +builder.SetBrowserControlInitParameters("--disable-gpu --no-sandbox") + +// Linux — JSON object matching WebKit2GTK settings +builder.SetBrowserControlInitParameters("{ \"enable_developer_extras\": true }") + +// macOS — JSON object matching WKPreferences keys +builder.SetBrowserControlInitParameters("{ \"minimumFontSize\": 12 }") +``` + +## Runtime Window Control + +Once a window is built, `IInfiniFrameWindow` provides methods to control it at runtime + +### State and properties + +```csharp +window.Size // Current size (read-only) +window.Location // Current position (read-only) +window.MaxSize // Get or set the maximum size at runtime +window.MinSize // Get or set the minimum size at runtime +window.Focused // Whether the window currently has focus +window.Maximized // (via events, not a direct property at runtime) +window.ScreenDpi // Current DPI + +window.Monitors // ImmutableArray — all connected monitors +window.MainMonitor // The monitor the window is currently on +``` + +### Window operations + +```csharp +window.Close() +window.WaitForClose() +await window.WaitForCloseAsync() +``` + +### STA requirement (Windows) + +WebView2 is COM-based and requires the thread that calls `Build()` to be STA. Without `[STAThread]`, the window opens but the browser control renders as a black screen, and `Build()` now throws `InvalidOperationException` to surface this early + +```csharp +// Required for all InfiniFrame apps on Windows +internal class Program { + [STAThread] + static void Main(string[] args) { + var window = InfiniFrameWindowBuilder.Create() + // ... + .Build(); + + window.WaitForClose(); + } +} +``` + +Top-level statements cannot carry `[STAThread]` so use an explicit `static void Main()` as shown above + +> **Note:** `[STAThread]` is silently ignored on `async Task Main`. The async continuation runs on thread pool threads (MTA). Never use `async Task Main` as the entry point for an InfiniFrame application. **Linux does not have this restriction** because GTK has no COM apartment model. The native constructor calls `gtk_init()` itself and implicitly claims whichever thread calls `Build()` as the GTK main thread + +### Cross-thread invocation + +All UI operations must run on the window's thread — use `Invoke` to marshal work from a background thread: + +```csharp +Task.Run(() => { + // Background thread + window.Invoke(() => { + // Runs on the window thread + window.Close(); + }); +}); +``` + +## Events + +Events are available through `IInfiniFrameWindowEvents`, accessible via `IInfiniFrameWindowBuilder.Events` + +```csharp +var builder = InfiniFrameWindowBuilder.Create(); + +builder.Events.WindowCreated.Add(() => Console.WriteLine("Window opened")); +builder.Events.WindowSizeChanged.Add(size => Console.WriteLine($"Resized to {size}")); +builder.Events.WindowLocationChanged.Add(loc => Console.WriteLine($"Moved to {loc}")); +builder.Events.WindowFocusIn.Add(() => Console.WriteLine("Focus gained")); +builder.Events.WindowFocusOut.Add(() => Console.WriteLine("Focus lost")); +builder.Events.WindowMaximized.Add(() => Console.WriteLine("Maximized")); +builder.Events.WindowMinimized.Add(() => Console.WriteLine("Minimized")); +builder.Events.WindowRestored.Add(() => Console.WriteLine("Restored")); +builder.Events.WebMessageReceived.Add(msg => Console.WriteLine($"Message: {msg}")); + +var window = builder.Build(); +window.WaitForClose(); +``` + +### Intercepting window close + +Use `WindowClosingRequested` to cancel or intercept a close: + +```csharp +builder.Events.WindowClosingRequested.Add(() => { + // Return true to allow closing, false to cancel + return AskUserToConfirm(); +}); +``` + +Use `WindowClosing` to run cleanup before the window is destroyed: + +```csharp +builder.Events.WindowClosing.Add((window, cancel) => { + SaveAppState(); + return false; // returning false here does not cancel — use WindowClosingRequested for that +}); +``` + +See the generated C# API reference for the full event system documentation + +## Web Messaging + +InfiniFrame provides a two-way messaging channel between JavaScript running in the browser control and your C# code + +### C# → JavaScript + +```csharp +window.SendWebMessage("hello from C#"); +await window.SendWebMessageAsync("async hello"); +``` + +In JavaScript, listen with: + +```js +window.external.receiveMessage(function(message) { + console.log("Received:", message); +}); +``` + +### JavaScript → C# + +In JavaScript, send with: + +```js +window.external.sendMessage("hello from JS"); +``` + +In C#, handle with: + +```csharp +builder.Events.WebMessageReceived.Add(message => { + Console.WriteLine($"From JS: {message}"); +}); +``` + +Or register a named handler through `IInfiniFrameWindowMessageHandlers`: + +```csharp +builder.MessageHandlers.RegisterMessageHandler("ping", (window, _) => { + window.SendWebMessage("pong"); +}); +``` + +## Custom URL Schemes + +You can intercept requests for custom URL schemes (e.g. `app://`) and serve content from C# code — useful for loading local assets or implementing a virtual file system + +```csharp +builder.RegisterCustomSchemeHandler("app", (sender, scheme, url, out string? contentType) => { + contentType = "text/html"; + var html = "Hello from custom scheme"; + return new MemoryStream(Encoding.UTF8.GetBytes(html)); +}); +``` + +- Up to 16 custom schemes can be registered before `Build()` is called +- Additional handlers can be added after `Build()` via `window.RegisterCustomSchemeHandler(...)` +- Scheme names are lowercased automatically + +## Dialogs + +InfiniFrame exposes the native OS dialog system + +### Message box + +```csharp +var result = window.ShowMessage( + title: "Confirm", + text: "Are you sure you want to quit?", + buttons: InfiniFrameDialogButtons.YesNo, + icon: InfiniFrameDialogIcon.Question +); + +if (result == InfiniFrameDialogResult.Yes) { + window.Close(); +} +``` + +### File pickers + +```csharp +// Open one or more files +string?[] files = window.ShowOpenFile( + title: "Open File", + defaultPath: null, + multiSelect: true, + filters: [("Images", ["png", "jpg", "gif"]), ("All Files", ["*"])] +); + +// Open folder(s) +string?[] folders = window.ShowOpenFolder("Select Folder", multiSelect: false); + +// Save file +string? path = window.ShowSaveFile( + title: "Save As", + defaultPath: null, + filters: [("Text Files", ["txt"])] +); +``` + +All dialogs also have async overloads (`ShowOpenFileAsync`, `ShowSaveFileAsync`, etc.) + +### Notifications (Windows only) + +```csharp +window.SendNotification("Update available", "A new version is ready to install"); +``` + +Requires `SetNotificationsEnabled()` and `SetNotificationRegistrationId(...)` to be set during configuration + +## Monitor Information + +```csharp +// All connected monitors +foreach (InfiniMonitor monitor in window.Monitors) { + Console.WriteLine($"Monitor: {monitor.MonitorArea}, Work area: {monitor.WorkArea}, Scale: {monitor.Scale}"); +} + +// The monitor the window is currently on +InfiniMonitor main = window.MainMonitor; +``` + +## DI Container Integration + +When building with a `ServiceProvider`, the builder reads configuration from the `InfiniFrame` section automatically: + +```csharp +// appsettings.json +{ + "InfiniFrame": { + "Title": "My App", + "Width": 1280, + "Height": 720 + } +} +``` + +Pass the provider to `Build`: + +```csharp +var window = builder.Build(serviceProvider); +``` + +`IInfiniFrameWindow` will then be resolvable from the container if registered + +## Examples + +- `InfiniFrameExample.WebApp.React` (`examples/InfiniFrameExample.WebApp.React`) - custom URL scheme handler and web messaging with DI-resolved services +- `InfiniFrameExample.BlazorWebView` (`examples/InfiniFrameExample.BlazorWebView`) - window builder configuration with size, position, and icon +- `InfiniFrameExample.SingleFileExe` (`examples/InfiniFrameExample.SingleFileExe`) - embedded static assets and single-file native bootstrap diff --git a/docs/content/guides/custom-window-chrome.md b/docs/content/guides/custom-window-chrome.md new file mode 100644 index 00000000..5d13b98e --- /dev/null +++ b/docs/content/guides/custom-window-chrome.md @@ -0,0 +1,198 @@ +# Custom Window Chrome Guide + +`InfiniLore.InfiniFrame.Blazor` provides pre-built Razor components for building custom window title bars and resize handles — typically used together with a chromeless window + +## Contents + +- [Installation](#installation) +- [Enable Chromeless Mode](#enable-chromeless-mode) +- [Components](#components) +- [Full Layout Example](#full-layout-example) +- [JavaScript Interop for Drag Areas](#javascript-interop-for-drag-areas) +- [Styling Tips](#styling-tips) + +## Installation + +```bash +dotnet add package InfiniLore.InfiniFrame.Blazor +``` + +This package is a companion to `InfiniLore.InfiniFrame.BlazorWebView` or `InfiniLore.InfiniFrame.WebServer` + +## Enable Chromeless Mode + +Remove the native OS title bar so your Blazor UI is the entire window: + +```csharp +builder.WithInfiniFrameWindowBuilder(w => w + .SetChromeless(true) + .SetTransparent(true) // Optional: for rounded corners or glassmorphism effects + .SetSize(1280, 720) + .Center() +); +``` + +On Windows, enabling chromeless mode automatically disables `UseOsDefaultLocation`, `UseOsDefaultSize`, and `Resizable` — set them explicitly if needed after calling `SetChromeless` + +## Components + +### InfiniFrameWindowDragArea + +Makes any area of the page draggable — acts as the window's title bar + +```razor + + My Application + +``` + +Place this at the top of your layout to create a custom drag region +The component handles pointer capture automatically so drag operations remain stable even when the cursor moves fast + +### InfiniFrameWindowButton + +A button that performs a window action (minimize, maximize, or close): + +```razor + + + +``` + +| `WindowAction` | Description | +|----------------|---------------------------------------------| +| `Minimize` | Minimizes the window to the taskbar | +| `Maximize` | Maximizes or restores the window | +| `Close` | Closes the window and exits the application | + +Each button is styled via its `.razor.css` scoped stylesheet — override the styles in your own CSS by targeting the component's generated class or wrapping it in a styled container + +### InfiniFrameWindowResizeThumb + +A drag handle for resizing the window from a specific edge or corner: + +```razor + +``` + +### InfiniFrameWindowResizeThumbContainer + +Renders resize thumbs for all edges and corners in a single declaration: + +```razor + +``` + +Place this at the root level of your layout so it covers the entire window perimeter + +## Full Layout Example + +A complete custom window chrome in a Blazor layout: + +```razor +@* MainLayout.razor *@ +@inherits LayoutComponentBase + +
+ + + + + +
+ + App icon + My Application + + +
+ + + +
+
+ + +
+ @Body +
+ +
+``` + +```css +/* MainLayout.razor.css */ +.window-root { + display: flex; + flex-direction: column; + height: 100vh; + overflow: hidden; +} + +.titlebar { + display: flex; + align-items: center; + height: 32px; + background: #1e1e2e; + user-select: none; +} + +.drag-region { + flex: 1; + display: flex; + align-items: center; + gap: 8px; + padding: 0 12px; + height: 100%; +} + +.window-buttons { + display: flex; + height: 100%; +} + +.content { + flex: 1; + overflow: auto; +} +``` + +## JavaScript Interop for Drag Areas + +`InfiniLore.InfiniFrame.Js` is used internally by the drag and resize components to call `setPointerCapture` on the underlying DOM element — this ensures drag operations continue even when the pointer leaves the element boundary + +If you are building your own drag components, you can use `IInfiniFrameJs` directly: + +```csharp +@inject IInfiniFrameJs InfiniJs + +
...
+ +@code { + ElementReference dragRef; + + async Task OnPointerDown(PointerEventArgs e) { + await InfiniJs.SetPointerCaptureAsync(dragRef, e.PointerId, CancellationToken.None); + } +} +``` + +See the [JavaScript Interop Guide](javascript-interop.md) for full details + +## Styling Tips + +- The resize thumbs are transparent by default — they only respond to pointer events at the window edge +- On Windows with `SetTransparent(true)`, your CSS `background: transparent` will show through to the desktop, enabling acrylic or mica-style effects via the CSS backdrop +- Double-clicking on a `InfiniFrameWindowDragArea` does not automatically maximize — handle `@ondblclick` yourself if you want that behavior: + +```razor +@inject IInfiniFrameWindow Window + + + ... + + +@code { + void ToggleMaximize() => Window.ToggleMaximized(); +} +``` diff --git a/docs/content/guides/getting-started.md b/docs/content/guides/getting-started.md new file mode 100644 index 00000000..33b13164 --- /dev/null +++ b/docs/content/guides/getting-started.md @@ -0,0 +1,190 @@ +# Getting Started + +This guide walks you through installing InfiniFrame and creating your first native desktop window + +## Contents + +- [Prerequisites](#prerequisites) +- [Choose Your Integration](#choose-your-integration) +- [Option 1 — Core Window](#option-1--core-window) +- [Option 2 — Blazor WebView](#option-2--blazor-webview) +- [Option 3 — Web Server](#option-3--web-server) +- [Next Steps](#next-steps) + +## Prerequisites + +- [.NET 8 SDK](https://dotnet.microsoft.com/download) or later (.NET 8, 9, and 10 are all supported) +- A console or class library project targeting `net8.0`, `net9.0`, or `net10.0` + +### Platform-specific requirements + +| Platform | Requirement | +|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Windows | [WebView2 Runtime](https://developer.microsoft.com/en-us/microsoft-edge/webview2/) — pre-installed on Windows 11; available as a redistributable for Windows 10 | +| Linux | `webkit2gtk-4.0` and `libgtk-3-dev` installed via your package manager | +| macOS | macOS 10.15 Catalina or later (WKWebView is built into the OS) | + +## Choose Your Integration + +InfiniFrame supports three integration models depending on your use case: + +| Use Case | Package | +|-----------------------------------------------------|----------------------------------------| +| Load a URL or HTML string in a window | `InfiniLore.InfiniFrame` | +| Run a Blazor app inside a native window (no server) | `InfiniLore.InfiniFrame.BlazorWebView` | +| Run an ASP.NET Core web app with a native window | `InfiniLore.InfiniFrame.WebServer` | + +## Option 1 — Core Window + +### Install + +```bash +dotnet add package InfiniLore.InfiniFrame +``` + +### Create a window + +```csharp +using InfiniFrame; + +// Create and configure the window +var window = InfiniFrameWindowBuilder.Create() + .SetTitle("Hello, InfiniFrame") + .SetSize(1280, 720) + .Center() + .SetStartUrl("https://example.com") + .Build(); + +// Block until the user closes the window +window.WaitForClose(); +``` + +The window opens immediately when `Build()` is called and runs on the current thread +`WaitForClose()` blocks until the native window is destroyed + +> **Windows:** WebView2 requires the calling thread to be STA (single-threaded apartment). Add `[STAThread]` to your `Main` method. Top-level statements do not support `[STAThread]` directly — use an explicit `static void Main()` instead. Calling `Build()` on a non-STA thread will throw an `InvalidOperationException` + +### Single-file/native packaging bootstrap + +If you package your app with embedded native binaries (for example via `InfiniLore.InfiniFrame.Tools.Pack`), initialize the single-file bootstrap before building your first window: + +```csharp +using InfiniFrame; + +public static class Program { + [STAThread] + public static void Main(string[] args) { + InfiniFrameSingleFileBootstrap.Initialize(); + + var window = InfiniFrameWindowBuilder.Create() + .SetTitle("Hello, InfiniFrame") + .SetSize(1280, 720) + .Center() + .SetStartUrl("https://example.com") + .Build(); + + window.WaitForClose(); + } +} +``` + +You only need this for packaged outputs that embed native runtime files as resources. Standard development runs (`dotnet run`) do not require it. + +## Option 2 — Blazor WebView + +This integration runs a Blazor application entirely in-process — no server, no HTTP port + +### Install + +```bash +dotnet add package InfiniLore.InfiniFrame.BlazorWebView +``` + +### Project setup + +Your project must use `Microsoft.NET.Sdk.Razor` and have a `wwwroot/` folder with `index.html` + +A minimal `index.html`: + +```html + + + + + + + +
Loading...
+
An error has occurred.
+ + + +``` + +### Program.cs + +```csharp +using InfiniFrame.BlazorWebView; +using Microsoft.Extensions.DependencyInjection; + +var builder = InfiniFrameBlazorAppBuilder.CreateDefault(args, w => w + .SetTitle("My Blazor App") + .SetSize(1280, 720) + .Center() +); + +// Register your services +builder.Services.AddSingleton(); + +// Register root Blazor components +builder.RootComponents.Add("#app"); +builder.RootComponents.Add("head::after"); + +builder.Build().Run(); +``` + +### Service access in components + +`IInfiniFrameWindow` is automatically registered in the DI container so you can inject it directly into any Blazor component or service: + +```csharp +@inject IInfiniFrameWindow Window + + +``` + +## Option 3 — Web Server + +This integration starts an ASP.NET Core web server in a background thread and opens a native window pointing at it — ideal when you want the full ASP.NET Core pipeline (middleware, controllers, SignalR, etc.) + +### Install + +```bash +dotnet add package InfiniLore.InfiniFrame.WebServer +``` + +### Program.cs + +```csharp +using InfiniFrame.WebServer; + +var app = InfiniFrameWebApplication.CreateBuilder(args) + .Build() + .UseAutoServerClose(); + +// Configure the ASP.NET Core pipeline on app.WebApp +app.WebApp.UseRouting(); +app.WebApp.MapGet("/", () => "Hello from InfiniFrame"); + +app.Run(); +``` + +The start URL is automatically read from `ASPNETCORE_URLS` or the `urls` configuration key +`UseAutoServerClose()` ensures the server shuts down gracefully when the window is closed + +## Next Steps + +- [Core Window Guide](core-window.md) — Window events, messaging, dialogs, custom schemes +- [Blazor Guide](blazor-webview.md) — DI, file providers, component configuration +- [Web Server Guide](web-server.md) — ASP.NET Core pipeline, DI access, graceful shutdown +- Generated C# API Reference (`docs/api`, via `docfx metadata`) — Complete member-level reference diff --git a/docs/content/guides/javascript-interop.md b/docs/content/guides/javascript-interop.md new file mode 100644 index 00000000..a3c10e2e --- /dev/null +++ b/docs/content/guides/javascript-interop.md @@ -0,0 +1,217 @@ +# JavaScript Interop Guide + +InfiniFrame provides two layers of JS interop: + +## Contents + +- [Web Messaging](#web-messaging) +- [InfiniFrame.Js](#infiniframejs) +- [Built-in JavaScript Message Handlers](#built-in-javascript-message-handlers) +- [Exchanging Structured Data](#exchanging-structured-data) + +1. **Web messaging** — a simple string-based channel between C# and the page's JavaScript +2. **InfiniFrame.Js** — Blazor-specific utilities for pointer capture and built-in window management message handlers + +## Web Messaging + +The messaging channel works the same way regardless of whether you are using plain HTML, a Blazor app, or an ASP.NET Core server + +### Sending from C# to JavaScript + +```csharp +window.SendWebMessage("hello from C#"); +await window.SendWebMessageAsync("async hello"); +``` + +In the browser: + +```js +window.external.receiveMessage(function(message) { + console.log("Received from C#:", message); +}); +``` + +### Sending from JavaScript to C# + +```js +window.external.sendMessage(JSON.stringify({ type: "action", payload: 42 })); +``` + +In C#: + +```csharp +builder.Events.WebMessageReceived.Add(raw => { + var msg = JsonSerializer.Deserialize(raw); + // handle msg +}); +``` + +### Named message handlers + +Instead of parsing all messages in one handler, register named handlers through `IInfiniFrameWindowMessageHandlers`: + +```csharp +// At build time, via the builder +var window = InfiniFrameWindowBuilder.Create() + ... + .Build(); + +window.MessageHandlers.RegisterMessageHandler("ping", (window, _) => { + window.SendWebMessage("pong"); +}); + +window.MessageHandlers.RegisterMessageHandler("set-title", (window, title) => { + // handle title change — title is the payload after ';' +}); +``` + +```js +// Messages use the "handlerId;payload" format +window.external.sendMessage("ping"); +window.external.sendMessage("set-title;New Title"); +``` + +## InfiniFrame.Js + +`InfiniLore.InfiniFrame.Js` provides Blazor-specific interop and registers built-in message handlers for window management from JavaScript + +### Installation + +```bash +dotnet add package InfiniLore.InfiniFrame.Js +``` + +This package is automatically included by `InfiniLore.InfiniFrame.BlazorWebView` + +### DI Registration + +When using the core package directly (not BlazorWebView), register the service manually: + +```csharp +services.AddInfiniFrameJs(); +``` + +### IInfiniFrameJs + +`IInfiniFrameJs` exposes pointer capture methods for Blazor components: + +```csharp +public interface IInfiniFrameJs { + Task SetPointerCaptureAsync(ElementReference element, long pointerId, CancellationToken ct); + Task ReleasePointerCaptureAsync(ElementReference element, long pointerId, CancellationToken ct); +} +``` + +These wrap the browser's `element.setPointerCapture(pointerId)` / `element.releasePointerCapture(pointerId)` APIs, which are necessary for reliable drag interactions — the pointer capture keeps events flowing to the element even after the pointer leaves it + +```razor +@inject IInfiniFrameJs InfiniJs + +
+ Drag me +
+ +@code { + ElementReference handle; + + async Task StartDrag(PointerEventArgs e) { + await InfiniJs.SetPointerCaptureAsync(handle, e.PointerId, default); + } + + async Task EndDrag(PointerEventArgs e) { + await InfiniJs.ReleasePointerCaptureAsync(handle, e.PointerId, default); + } +} +``` + +## Built-in JavaScript Message Handlers + +`InfiniFrame.Js` registers several message handlers that the client-side `InfiniFrame.js` script uses to control the native window from JavaScript + +### Including the script + +```html + +``` + +### Available handlers + +| Handler ID | Triggered by | What it does | +|----------------------------------|------------------|----------------------------------------------------------| +| `__infiniframe:window:minimize` | `InfiniFrame.js` | Minimize the window | +| `__infiniframe:window:maximize` | `InfiniFrame.js` | Maximize the window | +| `__infiniframe:window:close` | `InfiniFrame.js` | Close the window | +| `__infiniframe:fullscreen:enter` | `InfiniFrame.js` | Enter fullscreen | +| `__infiniframe:fullscreen:exit` | `InfiniFrame.js` | Exit fullscreen | +| `__infiniframe:title:change` | `InfiniFrame.js` | Update the native window title | +| `__infiniframe:open:external` | `InfiniFrame.js` | Open links with `target="_blank"` in the default browser | + +These are used internally by `InfiniFrameWindowDragArea`, `InfiniFrameWindowButton`, and related components — you do not need to call them manually unless you are building custom components + +### Sending a window management message from custom JavaScript + +All messages follow the `"handlerId;payload"` format — payload is optional: + +```js +window.external.sendMessage("__infiniframe:window:minimize"); +window.external.sendMessage("__infiniframe:window:maximize"); +window.external.sendMessage("__infiniframe:window:close"); +``` + +```js +// Title payload is the new title string +window.external.sendMessage("__infiniframe:title:change;New Window Title"); +``` + +```js +window.external.sendMessage("__infiniframe:fullscreen:enter"); +window.external.sendMessage("__infiniframe:fullscreen:exit"); +``` + +When using `InfiniFrame.js`, you can go through its API instead: + +```js +window.infiniFrame.HostMessaging.sendMessageToHost("__infiniframe:window:minimize"); +window.infiniFrame.HostMessaging.sendMessageToHost("__infiniframe:title:change", "New Title"); +``` + +## Exchanging Structured Data + +The message channel is string-only, so use JSON for structured communication: + +**C# → JS:** + +```csharp +var payload = JsonSerializer.Serialize(new { type = "update", count = 42 }); +window.SendWebMessage(payload); +``` + +```js +window.external.receiveMessage(function(raw) { + const msg = JSON.parse(raw); + if (msg.type === "update") { + updateUI(msg.count); + } +}); +``` + +**JS → C#:** + +```js +window.external.sendMessage(JSON.stringify({ type: "log", message: "hello" })); +``` + +```csharp +builder.Events.WebMessageReceived.Add(raw => { + using var doc = JsonDocument.Parse(raw); + var type = doc.RootElement.GetProperty("type").GetString(); + // route by type +}); +``` + +## Examples + +- `InfiniFrameExample.WebApp.Vue` (`examples/InfiniFrameExample.WebApp.Vue`) - registers all built-in message handlers for window management, fullscreen, title change, and external links +- `InfiniFrameExample.WebApp.React` (`examples/InfiniFrameExample.WebApp.React`) - custom scheme handler returning dynamic JavaScript, and a two-way messaging round-trip diff --git a/docs/content/guides/pack-tool.md b/docs/content/guides/pack-tool.md new file mode 100644 index 00000000..34d8fabb --- /dev/null +++ b/docs/content/guides/pack-tool.md @@ -0,0 +1,240 @@ +# InfiniLore.InfiniFrame.Tools.Pack Guide + +`InfiniLore.InfiniFrame.Tools.Pack` is a .NET tool that packages an InfiniFrame application into a single-file executable while embedding: + +- `wwwroot` content +- Native InfiniFrame runtime binaries for the selected runtime identifier (RID) + +This guide covers how to install the tool, run it, and avoid common packaging issues. + +## Contents + +- [Overview](#overview) +- [How It Works](#how-it-works) +- [Install and Setup](#install-and-setup) +- [Install from NuGet](#install-from-nuget) +- [Command Syntax](#command-syntax) +- [Usage Examples](#usage-examples) +- [Common Patterns](#common-patterns) +- [App Bootstrap Requirement](#app-bootstrap-requirement) +- [Edge Cases and Pitfalls](#edge-cases-and-pitfalls) + +## Overview + +Use `InfiniLore.InfiniFrame.Tools.Pack` when you want a single distributable output for an InfiniFrame app. + +Compared to a regular `dotnet publish`, the tool additionally: + +- Resolves native InfiniFrame runtime files from publish output +- Verifies required native artifacts exist before publish starts +- Injects custom MSBuild targets so `wwwroot` and native runtime files are embedded as resources +- Cleans unpacked runtime artifacts from the final publish directory + +Because native files are embedded as resources, your app must initialize the runtime resolver at startup with `InfiniFrameSingleFileBootstrap.Initialize()`. + +## How It Works + +At a high level, `infiniframe-pack publish` runs this pipeline: + +1. Parse CLI options and resolve defaults (`RID`, framework, output path). +2. Resolve native runtime artifacts from a preflight `dotnet publish` output (repo-agnostic, works for NuGet consumers). +3. Run `dotnet publish` in single-file mode with custom MSBuild targets. +4. Remove unpacked `wwwroot` and native runtime files from the publish folder. + +## Install and Setup + +### Prerequisites + +- .NET 10 SDK (or a compatible SDK for your repo setup) +- A publishable app `.csproj` +- An app publish output that includes InfiniFrame native runtime files for the selected RID + +### Build and install from source (local feed) + +From the repository root: + +```powershell +.\src\InfiniFrame.Tools.Pack\install-or-update-pack-tool.ps1 +``` + +```bash +bash ./src/InfiniFrame.Tools.Pack/install-or-update-pack-tool.sh +``` + +Manual alternative: + +```bash +dotnet pack src/InfiniFrame.Tools.Pack/InfiniFrame.Tools.Pack.csproj -c Release +dotnet tool install --local --add-source ./src/InfiniFrame.Tools.Pack/bin/Release InfiniLore.InfiniFrame.Tools.Pack +``` + +Run with: + +```bash +dotnet tool run infiniframe-pack --help +``` + +## Install from NuGet + +If the package is published to NuGet, you can install it directly without building from source. + +### Global install + +```bash +dotnet tool install --global InfiniLore.InfiniFrame.Tools.Pack +``` + +Run with: + +```bash +infiniframe-pack --help +``` + +### Update or uninstall + +```bash +dotnet tool update --global InfiniLore.InfiniFrame.Tools.Pack +dotnet tool uninstall --global InfiniLore.InfiniFrame.Tools.Pack +``` + +## Command Syntax + +```bash +dotnet tool run infiniframe-pack publish [options] +``` + +Options: + +- `--rid `: Target runtime identifier. Default is `auto`. +- `--configuration `: Build configuration. Default is `Release`. +- `--framework `: Target framework. Default is `TargetFramework`, or first `TargetFrameworks` entry. +- `--self-contained `: Self-contained publish mode. Default is `true`. +- `--output `: Publish output directory. Default is `bin////publish`. +- `--no-restore`: Skip restore during publish. +- `--verbose`: Use normal verbosity for preflight and final publish. +- `--force-clean-output`: Allow recursive deletion of non-default output folders before publish. + +## Usage Examples + +### Basic publish with defaults + +```bash +dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj +``` + +### Publish for a specific runtime + +```bash +dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj --rid win-x64 +``` + +### Multi-targeted app, choose framework explicitly + +```bash +dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj --framework net10.0 +``` + +### Custom output and faster inner-loop publish + +```bash +dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj \ + --configuration Debug \ + --no-restore \ + --output artifacts/publish/MyApp-win-x64 \ + --verbose +``` + +## Common Patterns + +### MSBuild integration (for `InfiniFramePackAfterBuild`) + +If your project runs packaging from an MSBuild target (for example with `$(InfiniFramePackCommand)`), the tool command +must be available on the machine first. + +For repo development, build and install from `src/InfiniFrame.Tools.Pack/InfiniFrame.Tools.Pack.csproj`: + +```powershell +.\src\InfiniFrame.Tools.Pack\install-or-update-pack-tool.ps1 +``` + +```bash +bash ./src/InfiniFrame.Tools.Pack/install-or-update-pack-tool.sh +``` + +Manual alternative: + +```bash +dotnet pack src/InfiniFrame.Tools.Pack/InfiniFrame.Tools.Pack.csproj -c Release +dotnet tool install --global --add-source ./src/InfiniFrame.Tools.Pack/bin/Release InfiniLore.InfiniFrame.Tools.Pack +``` + +If you cannot install globally, set your project to use a different command, for example: + +```bash +-p:InfiniFramePackCommand="dotnet tool run infiniframe-pack" +``` + +### CI-friendly deterministic output paths + +Pass an explicit `--output` directory so build artifacts land in a stable path: + +```bash +dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj --output artifacts/publish/MyApp +``` + +### Packaging multiple RIDs + +Run the tool once per RID and separate outputs: + +```bash +dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj --rid win-x64 --output artifacts/publish/MyApp-win-x64 +dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj --rid linux-x64 --output artifacts/publish/MyApp-linux-x64 +dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj --rid osx-arm64 --output artifacts/publish/MyApp-osx-arm64 +``` + +### Prefer explicit `--framework` for multi-targeting projects + +If your project uses `TargetFrameworks`, pass `--framework` to avoid accidental changes when framework order is edited. + +## App Bootstrap Requirement + +After packaging with `InfiniLore.InfiniFrame.Tools.Pack`, initialize the single-file bootstrap before creating a window: + +```csharp +using InfiniFrame; + +public static class Program { + [STAThread] + public static void Main(string[] args) { + InfiniFrameSingleFileBootstrap.Initialize(); + + var window = InfiniFrameWindowBuilder.Create() + .SetTitle("My App") + .SetSize(1280, 720) + .Center() + .Build(); + + window.WaitForClose(); + } +} +``` + +Why this is required: + +- `infiniframe-pack publish` embeds `InfiniFrame.Native` and platform loader files (`WebView2Loader.dll` on Windows) as resources. +- `InfiniFrameSingleFileBootstrap.Initialize()` extracts them to a temporary RID-specific folder and registers a native resolver so P/Invoke can load them. + +## Edge Cases and Pitfalls + +- If preflight publish output does not contain required native files for the selected RID, the tool exits with a dedicated dependency-missing failure. + The process exit code is `2`. +- `--rid auto` only supports current OS with `x64` or `arm64`. + Other architectures throw a platform-not-supported error. +- Existing output folders are deleted before publish. + By default, only project-local `bin/...` outputs are allowed to be cleaned. + Use `--force-clean-output` to allow cleaning custom output folders. +- If your project defines `TargetFrameworks` and you omit `--framework`, the first framework entry is used. +- The tool performs a preflight `dotnet publish` before final single-file publish. + If native artifacts are missing in preflight output, packaging stops early. +- `--self-contained` must be `true` or `false` (case-insensitive boolean parsing). +- If final output does not contain the expected main single-file executable, the tool exits with a non-zero code. diff --git a/docs/content/guides/web-server.md b/docs/content/guides/web-server.md new file mode 100644 index 00000000..5b193bca --- /dev/null +++ b/docs/content/guides/web-server.md @@ -0,0 +1,189 @@ +# Web Server Guide + +`InfiniLore.InfiniFrame.WebServer` runs a standard ASP.NET Core web application in a background thread while opening a native window pointed at it +This approach gives you the full ASP.NET Core pipeline — middleware, controllers, SignalR, minimal APIs, Blazor Server — without any browser overhead + +## Contents + +- [How It Works](#how-it-works) +- [Installation](#installation) +- [Minimal Setup](#minimal-setup) +- [Builder API](#builder-api) +- [Start URL](#start-url) +- [Accessing the Window from ASP.NET Core](#accessing-the-window-from-aspnet-core) +- [Graceful Shutdown](#graceful-shutdown) +- [Example: Blazor Server](#example-blazor-server) +- [Static Web Assets](#static-web-assets) +- [Thread Model](#thread-model) + +## How It Works + +- The ASP.NET Core server starts on a background thread +- A native window opens and navigates to the server's URL +- Both shut down together when the window is closed (with `UseAutoServerClose()`) + +## Installation + +```bash +dotnet add package InfiniLore.InfiniFrame.WebServer +``` + +## Minimal Setup + +```csharp +using InfiniFrame.WebServer; + +var app = InfiniFrameWebApplication.CreateBuilder(args) + .Build() + .UseAutoServerClose(); + +app.WebApp.MapGet("/", () => "Hello from InfiniFrame"); + +app.Run(); +``` + +`app.Run()` starts the web server in the background, opens the window, and blocks until the window is closed + +## Builder API + +`InfiniFrameWebApplication.CreateBuilder(args)` returns an `InfiniFrameWebApplicationBuilder` with two properties: + +| Property | Type | Description | +|----------|----------------------------|-----------------------------------------------------------------------| +| `WebApp` | `WebApplicationBuilder` | Standard ASP.NET Core builder — add services, configure Kestrel, etc. | +| `Window` | `InfiniFrameWindowBuilder` | Fluent window configuration | + +### Configuring the window + +```csharp +var builder = InfiniFrameWebApplication.CreateBuilder(args); + +builder.Window + .SetTitle("My Desktop App") + .SetSize(1280, 720) + .Center() + .SetDevToolsEnabled(true); + +builder.WebApp.Services.AddControllers(); +builder.WebApp.Services.AddSignalR(); + +var app = builder.Build().UseAutoServerClose(); +app.WebApp.MapControllers(); +app.WebApp.MapHub("/hub"); + +app.Run(); +``` + +## Start URL + +The window's start URL is automatically resolved from configuration in this priority order: + +1. `ASPNETCORE_URLS` environment variable +2. `urls` configuration key (e.g. in `appsettings.json`) +3. Manual override via `builder.Window.SetStartUrl(...)` + +```json +// appsettings.json +{ + "urls": "http://localhost:5200" +} +``` + +If multiple URLs are configured (e.g. `"http://localhost:5200;https://localhost:7200"`), the first one is used as the window's start URL + +## Accessing the Window from ASP.NET Core + +`IInfiniFrameWindow` and `IInfiniFrameWindowBuilder` are registered in the web app's DI container: + +```csharp +app.WebApp.MapGet("/close", (IInfiniFrameWindow window) => { + window.Close(); + return Results.Ok(); +}); +``` + +```csharp +public class MyController(IInfiniFrameWindow window) : ControllerBase { + [HttpGet("minimize")] + public IActionResult Minimize() { + window.Invoke(() => { /* minimize logic */ }); + return Ok(); + } +} +``` + +> **Note:** Window operations that affect the native UI must be marshalled to the window thread using `window.Invoke(...)` + +## Graceful Shutdown + +### UseAutoServerClose + +Automatically stops the web server when the window is closed or a close is requested: + +```csharp +var app = builder.Build().UseAutoServerClose(); +``` + +Internally this registers handlers on both `WindowClosing` and `WindowClosingRequested` that call `WebApp.StopAsync()` in a background task, so the UI thread is never blocked + +### Manual shutdown + +```csharp +app.Stop(); // Stops the web server and closes the window +``` + +```csharp +await app.WebApp.StopAsync(); // Stop server only +app.Window.Close(); // Then close window +``` + +## Example: Blazor Server + +```csharp +using InfiniFrame.WebServer; + +var builder = InfiniFrameWebApplication.CreateBuilder(args); + +builder.Window + .SetTitle("Blazor Server App") + .SetSize(1280, 720) + .Center(); + +builder.WebApp.Services.AddRazorComponents() + .AddInteractiveServerComponents(); + +var app = builder.Build().UseAutoServerClose(); + +app.WebApp.UseStaticFiles(); +app.WebApp.UseAntiforgery(); +app.WebApp.MapRazorComponents() + .AddInteractiveServerRenderMode(); + +app.Run(); +``` + +## Static Web Assets + +`UseStaticWebAssets()` is called automatically during builder initialization, so static files from Razor class libraries are served correctly without additional configuration + +`UseDefaultFiles()` is also applied during `Build()`, which causes requests to `/` to serve `wwwroot/index.html` if it exists + +## Thread Model + +| Thread | Runs | +|-------------------|---------------------------| +| Main thread | Native window (UI thread) | +| Background thread | ASP.NET Core / Kestrel | + +All window API calls from ASP.NET Core handlers must use `window.Invoke(...)` to marshal to the window thread +Web server calls from window event handlers can be made directly since ASP.NET Core is thread-safe + +> **Windows:** The main thread must be STA. Add `[STAThread]` to your `Main` method and use an explicit `static void Main()` — top-level statements and `async Task Main` do not support STA correctly + +--- + +## Examples + +- `InfiniFrameExample.WebApp.Blazor` (`examples/InfiniFrameExample.WebApp.Blazor`) - Blazor Server with InteractiveServerComponents, HttpClient factory, and InfiniFrameJs +- `InfiniFrameExample.WebApp.React` (`examples/InfiniFrameExample.WebApp.React`) - React frontend with custom scheme handler and two-way messaging +- `InfiniFrameExample.WebApp.Vue` (`examples/InfiniFrameExample.WebApp.Vue`) - Vue.js frontend with all built-in JS message handlers diff --git a/docs/content/intro.md b/docs/content/intro.md new file mode 100644 index 00000000..1a541db1 --- /dev/null +++ b/docs/content/intro.md @@ -0,0 +1,14 @@ +--- +id: intro +slug: / +title: InfiniFrame Documentation +--- + +InfiniFrame documentation is organized into Guides, Concepts, and API references for both managed and native layers. + +## Sections + +- [Guides](guides/getting-started.md) +- [Packaging Tool Guide](guides/pack-tool.md) +- [Concepts](concepts/breaking-changes-from-photino.md) +- [API References](api.md) diff --git a/docs/content/migration/docfx-to-docusaurus.md b/docs/content/migration/docfx-to-docusaurus.md new file mode 100644 index 00000000..fca7fdf7 --- /dev/null +++ b/docs/content/migration/docfx-to-docusaurus.md @@ -0,0 +1,43 @@ +--- +id: docfx-to-docusaurus +slug: /migration/docfx-to-docusaurus +title: DocFX to Docusaurus Migration +--- + +## What Changed + +- Docusaurus is now the primary docs site generator. +- Existing Markdown guides and concepts from `docs/articles/**` were migrated into `docs/content/**`. +- Navigation moved from DocFX `toc.yml` files to Docusaurus `sidebars.ts`. +- Route redirects were added to preserve key legacy DocFX URLs. + +## API Docs Strategy + +Option B is used: generated API docs stay on the legacy DocFX endpoint and are linked from Docusaurus. + +Reason: C# API output currently depends on DocFX metadata + templates, and this avoids a risky generator rewrite during initial migration. + +## Local Development + +From repository root: + +```powershell +npm run docs:dev +``` + +Build static output: + +```powershell +npm run docs:build +``` + +## CI / Deployment + +- Docs test workflow builds both DocFX and Docusaurus during the parallel-validation period. +- Release docs workflow deploys Docusaurus output (`docs/build`) to GitHub Pages. +- Legacy DocFX build still runs in CI as parity validation and to keep API generation monitored. + +## Follow-Up for Full DocFX Retirement + +- Move generated API docs away from DocFX to a dedicated non-DocFX generator, or fully separate API hosting. +- Remove DocFX config and scripts after API generation no longer depends on it. diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts new file mode 100644 index 00000000..7f3c077a --- /dev/null +++ b/docs/docusaurus.config.ts @@ -0,0 +1,99 @@ +import type { Config } from "@docusaurus/types"; +import type * as Preset from "@docusaurus/preset-classic"; + +const config: Config = { + title: "InfiniFrame Documentation", + tagline: "Guides, concepts, and API references", + url: "https://docs.infiniframe.dev", + baseUrl: "/", + onBrokenLinks: "throw", + onBrokenMarkdownLinks: "warn", + trailingSlash: false, + i18n: { + defaultLocale: "en", + locales: ["en"], + }, + presets: [ + [ + "classic", + { + docs: { + path: "content", + routeBasePath: "/", + sidebarPath: "./sidebars.ts", + editUrl: "https://github.com/InfiniLore/InfiniFrame/tree/core/docs/", + }, + blog: false, + pages: false, + theme: { + customCss: "./src/css/custom.css", + }, + sitemap: { + changefreq: "weekly", + priority: 0.5, + }, + } satisfies Preset.Options, + ], + ], + plugins: [ + [ + "@docusaurus/plugin-client-redirects", + { + redirects: [ + { from: ["/index.html"], to: "/" }, + { from: ["/articles/guides"], to: "/guides/getting-started" }, + { from: ["/articles/concepts"], to: "/concepts/breaking-changes-from-photino" }, + { from: ["/articles/csharp"], to: "/csharp/code-style" }, + { from: ["/articles/cpp"], to: "/cpp/native-cpp-api" }, + { from: ["/articles/guides/getting-started", "/articles/guides/getting-started.html"], to: "/guides/getting-started" }, + { from: ["/articles/guides/pack-tool", "/articles/guides/pack-tool.html"], to: "/guides/pack-tool" }, + { from: ["/articles/guides/core-window", "/articles/guides/core-window.html"], to: "/guides/core-window" }, + { from: ["/articles/guides/blazor-webview", "/articles/guides/blazor-webview.html"], to: "/guides/blazor-webview" }, + { from: ["/articles/guides/web-server", "/articles/guides/web-server.html"], to: "/guides/web-server" }, + { from: ["/articles/guides/javascript-interop", "/articles/guides/javascript-interop.html"], to: "/guides/javascript-interop" }, + { from: ["/articles/guides/custom-window-chrome", "/articles/guides/custom-window-chrome.html"], to: "/guides/custom-window-chrome" }, + { from: ["/articles/concepts/breaking-changes-from-photino", "/articles/concepts/breaking-changes-from-photino.html"], to: "/concepts/breaking-changes-from-photino" }, + { from: ["/articles/csharp/code-style", "/articles/csharp/code-style.html"], to: "/csharp/code-style" }, + { from: ["/articles/cpp/native-cpp-api", "/articles/cpp/native-cpp-api.html"], to: "/cpp/native-cpp-api" }, + { from: ["/articles/cpp/code-style", "/articles/cpp/code-style.html"], to: "/cpp/code-style" }, + { from: ["/api/cpp/native-cpp-reference", "/api/cpp/native-cpp-reference.html"], to: "/api" }, + { from: ["/api/cpp"], to: "/api" }, + { from: ["/api/cs", "/api/cs/index.html"], to: "/api" } + ] + } + ] + ], + themeConfig: { + navbar: { + title: "InfiniFrame Docs", + items: [ + { type: "docSidebar", sidebarId: "docsSidebar", position: "left", label: "Documentation" }, + { href: "https://github.com/InfiniLore/InfiniFrame", label: "GitHub", position: "right" } + ], + }, + footer: { + style: "dark", + links: [ + { + title: "Docs", + items: [ + { label: "Getting Started", to: "/guides/getting-started" }, + { label: "API Strategy", to: "/api" } + ], + }, + { + title: "Project", + items: [ + { label: "GitHub", href: "https://github.com/InfiniLore/InfiniFrame" }, + ], + } + ], + copyright: `Copyright ${new Date().getFullYear()} InfiniLore`, + }, + prism: { + additionalLanguages: ["csharp", "bash", "powershell"], + }, + } satisfies Preset.ThemeConfig, +}; + +export default config; diff --git a/docs/package-lock.json b/docs/package-lock.json new file mode 100644 index 00000000..4385dff5 --- /dev/null +++ b/docs/package-lock.json @@ -0,0 +1,15979 @@ +{ + "name": "infiniframe-docs", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "infiniframe-docs", + "version": "0.1.0", + "dependencies": { + "@docusaurus/core": "3.5.2", + "@docusaurus/plugin-client-redirects": "3.5.2", + "@docusaurus/preset-classic": "3.5.2", + "clsx": "2.1.1", + "prism-react-renderer": "2.4.1", + "react": "18.2.0", + "react-dom": "18.2.0" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "3.5.2", + "@docusaurus/types": "3.5.2", + "typescript": "5.6.3", + "webpack": "5.94.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@algolia/abtesting": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.16.1.tgz", + "integrity": "sha512-Xxk4l00pYI+jE0PNw8y0MvsQWh5278WRtZQav8/BMMi3HKi2xmeuqe11WJ3y8/6nuBHdv39w76OpJb09TMfAVQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.1", + "@algolia/requester-browser-xhr": "5.50.1", + "@algolia/requester-fetch": "5.50.1", + "@algolia/requester-node-http": "5.50.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.9.tgz", + "integrity": "sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.17.9", + "@algolia/autocomplete-shared": "1.17.9" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.9.tgz", + "integrity": "sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.17.9" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.9.tgz", + "integrity": "sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.17.9" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.9.tgz", + "integrity": "sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ==", + "license": "MIT", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/cache-browser-local-storage": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.27.0.tgz", + "integrity": "sha512-YGog2s57sO20lvpa+hv5XLAAmiTI1kHsCMRtPVfiaOdIQnvRla21lfH08onqEbZihOPVI8GULwt79zQB2ymKzg==", + "license": "MIT", + "dependencies": { + "@algolia/cache-common": "4.27.0" + } + }, + "node_modules/@algolia/cache-common": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.27.0.tgz", + "integrity": "sha512-Sr8zjNXj82p6lO4W9CdzfF0m0/9h/H6VAdSHOTtimm/cTzXIYXRI2IZq7+Nt2ljJ7Ukx+7dIFcxQjE57eQSPsw==", + "license": "MIT" + }, + "node_modules/@algolia/cache-in-memory": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.27.0.tgz", + "integrity": "sha512-abgMRTcVD0IllNvMM9JFhxtyLn1v6Ey7mQ7+BGS3JCzvkCX7KZqlS0BIuVUDgx9sPIfOeNsG/awGzMmP50TwZw==", + "license": "MIT", + "dependencies": { + "@algolia/cache-common": "4.27.0" + } + }, + "node_modules/@algolia/client-abtesting": { + "version": "5.50.1", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.50.1.tgz", + "integrity": "sha512-4peZlPXMwTOey9q1rQKMdCnwZb/E95/1e+7KujXpLLSh0FawJzg//U2NM+r4AiJy4+naT2MTBhj0K30yshnVTA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.1", + "@algolia/requester-browser-xhr": "5.50.1", + "@algolia/requester-fetch": "5.50.1", + "@algolia/requester-node-http": "5.50.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-account": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.27.0.tgz", + "integrity": "sha512-sSHxwrKTKJrwfoR/LcQJZfmiWJcM5d9Rp7afMChxOcdGdkSdIwrNBC8SCcHRenA3GsZ6mg+j6px7KWYxJ34btA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "4.27.0", + "@algolia/client-search": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/client-account/node_modules/@algolia/client-common": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.27.0.tgz", + "integrity": "sha512-ZrT6l/YPQgyIUuBCxcYPeXol2VBLUMuNb1rKXrm6z1f/iTiwqtnEEb16/6CC11+Re0ZGXrdcMVrgDRrzveQ1aQ==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/client-account/node_modules/@algolia/client-search": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.27.0.tgz", + "integrity": "sha512-qmX/f67ay0eZ4V5Io8fWWOcUVo/gqre2yei1PnmEhQU2Gul6ushg25QnNrfu4BODiRrw1rwYveZaLCiHvcUxrQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "4.27.0", + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.27.0.tgz", + "integrity": "sha512-MqIDyxODljn9ZC4oqjQD0kez2a4zjIJ9ywA/b7cIiUiK/tDjZNTVjYd9WXMKQlXnWUwfrfXJZClVVqN1iCXS+Q==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "4.27.0", + "@algolia/client-search": "4.27.0", + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/client-analytics/node_modules/@algolia/client-common": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.27.0.tgz", + "integrity": "sha512-ZrT6l/YPQgyIUuBCxcYPeXol2VBLUMuNb1rKXrm6z1f/iTiwqtnEEb16/6CC11+Re0ZGXrdcMVrgDRrzveQ1aQ==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/client-analytics/node_modules/@algolia/client-search": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.27.0.tgz", + "integrity": "sha512-qmX/f67ay0eZ4V5Io8fWWOcUVo/gqre2yei1PnmEhQU2Gul6ushg25QnNrfu4BODiRrw1rwYveZaLCiHvcUxrQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "4.27.0", + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "5.50.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.50.1.tgz", + "integrity": "sha512-Hw52Fwapyk/7hMSV/fI4+s3H9MGZEUcRh4VphyXLAk2oLYdndVUkc6KBi0zwHSzwPAr+ZBwFPe2x6naUt9mZGw==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights": { + "version": "5.50.1", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.50.1.tgz", + "integrity": "sha512-Bn/wtwhJ7p1OD/6pY+Zzn+zlu2N/SJnH46md/PAbvqIzmjVuwjNwD4y0vV5Ov8naeukXdd7UU9v550+v8+mtlg==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.1", + "@algolia/requester-browser-xhr": "5.50.1", + "@algolia/requester-fetch": "5.50.1", + "@algolia/requester-node-http": "5.50.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.27.0.tgz", + "integrity": "sha512-OZqaFFVm+10hAlmxpiTWi/o2n+YKBESbSqSy2yXAumPH/kaK4moJHFblbh8IkV3KZR0lLm4hzPtn8Q2nWNiDUA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "4.27.0", + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/client-personalization/node_modules/@algolia/client-common": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.27.0.tgz", + "integrity": "sha512-ZrT6l/YPQgyIUuBCxcYPeXol2VBLUMuNb1rKXrm6z1f/iTiwqtnEEb16/6CC11+Re0ZGXrdcMVrgDRrzveQ1aQ==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/client-query-suggestions": { + "version": "5.50.1", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.50.1.tgz", + "integrity": "sha512-jofcWNYMXJDDr87Z2eivlWY6o71Zn7F7aOvQCXSDAo9QTlyf7BhXEsZymLUvF0O1yU9Q9wvrjAWn8uVHYnAvgw==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.1", + "@algolia/requester-browser-xhr": "5.50.1", + "@algolia/requester-fetch": "5.50.1", + "@algolia/requester-node-http": "5.50.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "5.50.1", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.50.1.tgz", + "integrity": "sha512-OteRb8WubcmEvU0YlMJwCXs3Q6xrdkb0v50/qZBJP1TF0CvujFZQM++9BjEkTER/Jr9wbPHvjSFKnbMta0b4dQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.1", + "@algolia/requester-browser-xhr": "5.50.1", + "@algolia/requester-fetch": "5.50.1", + "@algolia/requester-node-http": "5.50.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/events": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz", + "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==", + "license": "MIT" + }, + "node_modules/@algolia/ingestion": { + "version": "1.50.1", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.50.1.tgz", + "integrity": "sha512-0GmfSgDQK6oiIVXnJvGxtNFOfosBspRTR7csCOYCTL1P8QtxX2vDCIKwTM7xdSAEbJaZ43QlWg25q0Qdsndz8Q==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.1", + "@algolia/requester-browser-xhr": "5.50.1", + "@algolia/requester-fetch": "5.50.1", + "@algolia/requester-node-http": "5.50.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/logger-common": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.27.0.tgz", + "integrity": "sha512-pIrmQRXtDV+zTMVXKtKCosC2rWhn0F0TdUeb9etA6RiAz6jY6bY6f0+JX7YekDK09SnmZMLIyUa7Jci+Ied9bw==", + "license": "MIT" + }, + "node_modules/@algolia/logger-console": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.27.0.tgz", + "integrity": "sha512-UWvta8BxsR/u5z9eI088mOSLQaGtmoCtXeN3DYJurlxAdJwPuKtEb5+433kxA6/E9f2/JgoW89KZ1vNP9pcHBQ==", + "license": "MIT", + "dependencies": { + "@algolia/logger-common": "4.27.0" + } + }, + "node_modules/@algolia/monitoring": { + "version": "1.50.1", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.50.1.tgz", + "integrity": "sha512-ySuigKEe4YjYV3si8NVk9BHQpFj/1B+ON7DhhvTvbrZJseHQQloxzq0yHwKmznSdlO6C956fx4pcfOKkZClsyg==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.1", + "@algolia/requester-browser-xhr": "5.50.1", + "@algolia/requester-fetch": "5.50.1", + "@algolia/requester-node-http": "5.50.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.27.0.tgz", + "integrity": "sha512-CFy54xDjrsazPi3KN04yPmLRDT72AKokc3RLOdWQvG0/uEUjj7dhWqe9qenxpL4ydsjO7S1eY5YqmX+uMGonlg==", + "license": "MIT", + "dependencies": { + "@algolia/cache-browser-local-storage": "4.27.0", + "@algolia/cache-common": "4.27.0", + "@algolia/cache-in-memory": "4.27.0", + "@algolia/client-common": "4.27.0", + "@algolia/client-search": "4.27.0", + "@algolia/logger-common": "4.27.0", + "@algolia/logger-console": "4.27.0", + "@algolia/requester-browser-xhr": "4.27.0", + "@algolia/requester-common": "4.27.0", + "@algolia/requester-node-http": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/client-common": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.27.0.tgz", + "integrity": "sha512-ZrT6l/YPQgyIUuBCxcYPeXol2VBLUMuNb1rKXrm6z1f/iTiwqtnEEb16/6CC11+Re0ZGXrdcMVrgDRrzveQ1aQ==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/client-search": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.27.0.tgz", + "integrity": "sha512-qmX/f67ay0eZ4V5Io8fWWOcUVo/gqre2yei1PnmEhQU2Gul6ushg25QnNrfu4BODiRrw1rwYveZaLCiHvcUxrQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "4.27.0", + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/requester-browser-xhr": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.27.0.tgz", + "integrity": "sha512-dTenMBIIpyp5o3C2ZnfbsuSlD/lL9jPkk6T+2+qm38fyw2nf49ANbcHFE79NgiGrnmw7QrYveCs9NIP3Wk4v6g==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.27.0" + } + }, + "node_modules/@algolia/recommend/node_modules/@algolia/requester-node-http": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.27.0.tgz", + "integrity": "sha512-y8nUqaUQeSOQ5oaNo0b2QPznyBFW9LoIwljyUphJ+gUZpU6O/j2/C8ovoqDpIe6J0etqHg5RCcBizrCFZuLpyw==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.27.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.50.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.50.1.tgz", + "integrity": "sha512-XKdGGLikfrlK66ZSXh/vWcXZZ8Vg3byDFbJD8pwEvN1FoBRGxhxya476IY2ohoTymLa4qB5LBRlIa+2TLHx3Uw==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-common": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.27.0.tgz", + "integrity": "sha512-VC3prAQVgWTubMStb3mJz6i61Hqbtagi2LeIbgNtoFJFff3XZDcAaO1D5r0GYl2+DrB2VzUHnQXbkiuI+HHYyg==", + "license": "MIT" + }, + "node_modules/@algolia/requester-fetch": { + "version": "5.50.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.50.1.tgz", + "integrity": "sha512-mBAU6WyVsDwhHyGM+nodt1/oebHxgvuLlOAoMGbj/1i6LygDHZWDgL1t5JEs37x9Aywv7ZGhqbM1GsfZ54sU6g==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.50.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.50.1.tgz", + "integrity": "sha512-qmo1LXrNKLHvJE6mdQbLnsZAoZvj7VyF2ft4xmbSGWI2WWm87fx/CjUX4kEExt4y0a6T6nEts6ofpUfH5TEE1A==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/transporter": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.27.0.tgz", + "integrity": "sha512-PvSbELU4VjN3xSX79ki+zIdOGhTxyJXWvRDzkUjfTx2iNfPWDdTjzKbP1o+268coJztxrkuBwJz90Urek7o1Kw==", + "license": "MIT", + "dependencies": { + "@algolia/cache-common": "4.27.0", + "@algolia/logger-common": "4.27.0", + "@algolia/requester-common": "4.27.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", + "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", + "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", + "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", + "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.27.1.tgz", + "integrity": "sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", + "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz", + "integrity": "sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-jsx": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", + "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", + "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz", + "integrity": "sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.2.tgz", + "integrity": "sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.29.0", + "@babel/plugin-transform-async-to-generator": "^7.28.6", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.28.6", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", + "@babel/plugin-transform-modules-systemjs": "^7.29.0", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.29.0", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", + "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8", + "core-js-compat": "^3.48.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz", + "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.28.0", + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", + "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.29.2.tgz", + "integrity": "sha512-Lc94FOD5+0aXhdb0Tdg3RUtqT6yWbI/BbFWvlaSJ3gAb9Ks+99nHRDKADVqC37er4eCB0fHyWT+y+K3QOvJKbw==", + "license": "MIT", + "dependencies": { + "core-js-pure": "^3.48.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@docsearch/css": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.9.0.tgz", + "integrity": "sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA==", + "license": "MIT" + }, + "node_modules/@docsearch/react": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.9.0.tgz", + "integrity": "sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-core": "1.17.9", + "@algolia/autocomplete-preset-algolia": "1.17.9", + "@docsearch/css": "3.9.0", + "algoliasearch": "^5.14.2" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 20.0.0", + "react": ">= 16.8.0 < 20.0.0", + "react-dom": ">= 16.8.0 < 20.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@docsearch/react/node_modules/@algolia/client-analytics": { + "version": "5.50.1", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.50.1.tgz", + "integrity": "sha512-i+aWHHG8NZvGFHtPeMZkxL2Loc6Fm7iaRo15lYSMx8gFL+at9vgdWxhka7mD1fqxkrxXsQstUBCIsSY8FvkEOw==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.1", + "@algolia/requester-browser-xhr": "5.50.1", + "@algolia/requester-fetch": "5.50.1", + "@algolia/requester-node-http": "5.50.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@docsearch/react/node_modules/@algolia/client-personalization": { + "version": "5.50.1", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.50.1.tgz", + "integrity": "sha512-0V4Tu0RWR8YxkgI9EPVOZHGE4K5pEIhkLNN0CTkP/rnPsqaaSQpNMYW3/mGWdiKOWbX0iVmwLB9QESk3H0jS5g==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.1", + "@algolia/requester-browser-xhr": "5.50.1", + "@algolia/requester-fetch": "5.50.1", + "@algolia/requester-node-http": "5.50.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@docsearch/react/node_modules/@algolia/recommend": { + "version": "5.50.1", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.50.1.tgz", + "integrity": "sha512-Cp8T/B0gVmjFlzzp6eP47hwKh5FGyeqQp1N48/ANDdvdiQkPqLyFHQVDwLBH0LddfIPQE+yqmZIgmKc82haF4A==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.50.1", + "@algolia/requester-browser-xhr": "5.50.1", + "@algolia/requester-fetch": "5.50.1", + "@algolia/requester-node-http": "5.50.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@docsearch/react/node_modules/algoliasearch": { + "version": "5.50.1", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.50.1.tgz", + "integrity": "sha512-/bwdue1/8LWELn/DBalGRfuLsXBLXULJo/yOeavJtDu8rBwxIzC6/Rz9Jg19S21VkJvRuZO1k8CZXBMS73mYbA==", + "license": "MIT", + "dependencies": { + "@algolia/abtesting": "1.16.1", + "@algolia/client-abtesting": "5.50.1", + "@algolia/client-analytics": "5.50.1", + "@algolia/client-common": "5.50.1", + "@algolia/client-insights": "5.50.1", + "@algolia/client-personalization": "5.50.1", + "@algolia/client-query-suggestions": "5.50.1", + "@algolia/client-search": "5.50.1", + "@algolia/ingestion": "1.50.1", + "@algolia/monitoring": "1.50.1", + "@algolia/recommend": "5.50.1", + "@algolia/requester-browser-xhr": "5.50.1", + "@algolia/requester-fetch": "5.50.1", + "@algolia/requester-node-http": "5.50.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@docusaurus/core": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.5.2.tgz", + "integrity": "sha512-4Z1WkhCSkX4KO0Fw5m/Vuc7Q3NxBG53NE5u59Rs96fWkMPZVSrzEPP16/Nk6cWb/shK7xXPndTmalJtw7twL/w==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.23.3", + "@babel/generator": "^7.23.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/preset-react": "^7.22.5", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", + "@babel/runtime-corejs3": "^7.22.6", + "@babel/traverse": "^7.22.8", + "@docusaurus/cssnano-preset": "3.5.2", + "@docusaurus/logger": "3.5.2", + "@docusaurus/mdx-loader": "3.5.2", + "@docusaurus/utils": "3.5.2", + "@docusaurus/utils-common": "3.5.2", + "@docusaurus/utils-validation": "3.5.2", + "autoprefixer": "^10.4.14", + "babel-loader": "^9.1.3", + "babel-plugin-dynamic-import-node": "^2.3.3", + "boxen": "^6.2.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "clean-css": "^5.3.2", + "cli-table3": "^0.6.3", + "combine-promises": "^1.1.0", + "commander": "^5.1.0", + "copy-webpack-plugin": "^11.0.0", + "core-js": "^3.31.1", + "css-loader": "^6.8.1", + "css-minimizer-webpack-plugin": "^5.0.1", + "cssnano": "^6.1.2", + "del": "^6.1.1", + "detect-port": "^1.5.1", + "escape-html": "^1.0.3", + "eta": "^2.2.0", + "eval": "^0.1.8", + "file-loader": "^6.2.0", + "fs-extra": "^11.1.1", + "html-minifier-terser": "^7.2.0", + "html-tags": "^3.3.1", + "html-webpack-plugin": "^5.5.3", + "leven": "^3.1.0", + "lodash": "^4.17.21", + "mini-css-extract-plugin": "^2.7.6", + "p-map": "^4.0.0", + "postcss": "^8.4.26", + "postcss-loader": "^7.3.3", + "prompts": "^2.4.2", + "react-dev-utils": "^12.0.1", + "react-helmet-async": "^1.3.0", + "react-loadable": "npm:@docusaurus/react-loadable@6.0.0", + "react-loadable-ssr-addon-v5-slorber": "^1.0.1", + "react-router": "^5.3.4", + "react-router-config": "^5.1.1", + "react-router-dom": "^5.3.4", + "rtl-detect": "^1.0.4", + "semver": "^7.5.4", + "serve-handler": "^6.1.5", + "shelljs": "^0.8.5", + "terser-webpack-plugin": "^5.3.9", + "tslib": "^2.6.0", + "update-notifier": "^6.0.2", + "url-loader": "^4.1.1", + "webpack": "^5.88.1", + "webpack-bundle-analyzer": "^4.9.0", + "webpack-dev-server": "^4.15.1", + "webpack-merge": "^5.9.0", + "webpackbar": "^5.0.2" + }, + "bin": { + "docusaurus": "bin/docusaurus.mjs" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "@mdx-js/react": "^3.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/cssnano-preset": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.5.2.tgz", + "integrity": "sha512-D3KiQXOMA8+O0tqORBrTOEQyQxNIfPm9jEaJoALjjSjc2M/ZAWcUfPQEnwr2JB2TadHw2gqWgpZckQmrVWkytA==", + "license": "MIT", + "dependencies": { + "cssnano-preset-advanced": "^6.1.2", + "postcss": "^8.4.38", + "postcss-sort-media-queries": "^5.2.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + } + }, + "node_modules/@docusaurus/logger": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.5.2.tgz", + "integrity": "sha512-LHC540SGkeLfyT3RHK3gAMK6aS5TRqOD4R72BEU/DE2M/TY8WwEUAMY576UUc/oNJXv8pGhBmQB6N9p3pt8LQw==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + } + }, + "node_modules/@docusaurus/mdx-loader": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.5.2.tgz", + "integrity": "sha512-ku3xO9vZdwpiMIVd8BzWV0DCqGEbCP5zs1iHfKX50vw6jX8vQo0ylYo1YJMZyz6e+JFJ17HYHT5FzVidz2IflA==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.5.2", + "@docusaurus/utils": "3.5.2", + "@docusaurus/utils-validation": "3.5.2", + "@mdx-js/mdx": "^3.0.0", + "@slorber/remark-comment": "^1.0.0", + "escape-html": "^1.0.3", + "estree-util-value-to-estree": "^3.0.1", + "file-loader": "^6.2.0", + "fs-extra": "^11.1.1", + "image-size": "^1.0.2", + "mdast-util-mdx": "^3.0.0", + "mdast-util-to-string": "^4.0.0", + "rehype-raw": "^7.0.0", + "remark-directive": "^3.0.0", + "remark-emoji": "^4.0.0", + "remark-frontmatter": "^5.0.0", + "remark-gfm": "^4.0.0", + "stringify-object": "^3.3.0", + "tslib": "^2.6.0", + "unified": "^11.0.3", + "unist-util-visit": "^5.0.0", + "url-loader": "^4.1.1", + "vfile": "^6.0.1", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/module-type-aliases": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.5.2.tgz", + "integrity": "sha512-Z+Xu3+2rvKef/YKTMxZHsEXp1y92ac0ngjDiExRdqGTmEKtCUpkbNYH8v5eXo5Ls+dnW88n6WTa+Q54kLOkwPg==", + "license": "MIT", + "dependencies": { + "@docusaurus/types": "3.5.2", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "@types/react-router-dom": "*", + "react-helmet-async": "*", + "react-loadable": "npm:@docusaurus/react-loadable@6.0.0" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@docusaurus/plugin-client-redirects": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.5.2.tgz", + "integrity": "sha512-GMU0ZNoVG1DEsZlBbwLPdh0iwibrVZiRfmdppvX17SnByCVP74mb/Nne7Ss7ALgxQLtM4IHbXi8ij90VVjAJ+Q==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.2", + "@docusaurus/logger": "3.5.2", + "@docusaurus/utils": "3.5.2", + "@docusaurus/utils-common": "3.5.2", + "@docusaurus/utils-validation": "3.5.2", + "eta": "^2.2.0", + "fs-extra": "^11.1.1", + "lodash": "^4.17.21", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-blog": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.5.2.tgz", + "integrity": "sha512-R7ghWnMvjSf+aeNDH0K4fjyQnt5L0KzUEnUhmf1e3jZrv3wogeytZNN6n7X8yHcMsuZHPOrctQhXWnmxu+IRRg==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.2", + "@docusaurus/logger": "3.5.2", + "@docusaurus/mdx-loader": "3.5.2", + "@docusaurus/theme-common": "3.5.2", + "@docusaurus/types": "3.5.2", + "@docusaurus/utils": "3.5.2", + "@docusaurus/utils-common": "3.5.2", + "@docusaurus/utils-validation": "3.5.2", + "cheerio": "1.0.0-rc.12", + "feed": "^4.2.2", + "fs-extra": "^11.1.1", + "lodash": "^4.17.21", + "reading-time": "^1.5.0", + "srcset": "^4.0.0", + "tslib": "^2.6.0", + "unist-util-visit": "^5.0.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "@docusaurus/plugin-content-docs": "*", + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-docs": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.5.2.tgz", + "integrity": "sha512-Bt+OXn/CPtVqM3Di44vHjE7rPCEsRCB/DMo2qoOuozB9f7+lsdrHvD0QCHdBs0uhz6deYJDppAr2VgqybKPlVQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.2", + "@docusaurus/logger": "3.5.2", + "@docusaurus/mdx-loader": "3.5.2", + "@docusaurus/module-type-aliases": "3.5.2", + "@docusaurus/theme-common": "3.5.2", + "@docusaurus/types": "3.5.2", + "@docusaurus/utils": "3.5.2", + "@docusaurus/utils-common": "3.5.2", + "@docusaurus/utils-validation": "3.5.2", + "@types/react-router-config": "^5.0.7", + "combine-promises": "^1.1.0", + "fs-extra": "^11.1.1", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "tslib": "^2.6.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-pages": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.5.2.tgz", + "integrity": "sha512-WzhHjNpoQAUz/ueO10cnundRz+VUtkjFhhaQ9jApyv1a46FPURO4cef89pyNIOMny1fjDz/NUN2z6Yi+5WUrCw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.2", + "@docusaurus/mdx-loader": "3.5.2", + "@docusaurus/types": "3.5.2", + "@docusaurus/utils": "3.5.2", + "@docusaurus/utils-validation": "3.5.2", + "fs-extra": "^11.1.1", + "tslib": "^2.6.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-debug": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.5.2.tgz", + "integrity": "sha512-kBK6GlN0itCkrmHuCS6aX1wmoWc5wpd5KJlqQ1FyrF0cLDnvsYSnh7+ftdwzt7G6lGBho8lrVwkkL9/iQvaSOA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.2", + "@docusaurus/types": "3.5.2", + "@docusaurus/utils": "3.5.2", + "fs-extra": "^11.1.1", + "react-json-view-lite": "^1.2.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-analytics": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.5.2.tgz", + "integrity": "sha512-rjEkJH/tJ8OXRE9bwhV2mb/WP93V441rD6XnM6MIluu7rk8qg38iSxS43ga2V2Q/2ib53PcqbDEJDG/yWQRJhQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.2", + "@docusaurus/types": "3.5.2", + "@docusaurus/utils-validation": "3.5.2", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-gtag": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.5.2.tgz", + "integrity": "sha512-lm8XL3xLkTPHFKKjLjEEAHUrW0SZBSHBE1I+i/tmYMBsjCcUB5UJ52geS5PSiOCFVR74tbPGcPHEV/gaaxFeSA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.2", + "@docusaurus/types": "3.5.2", + "@docusaurus/utils-validation": "3.5.2", + "@types/gtag.js": "^0.0.12", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-tag-manager": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.5.2.tgz", + "integrity": "sha512-QkpX68PMOMu10Mvgvr5CfZAzZQFx8WLlOiUQ/Qmmcl6mjGK6H21WLT5x7xDmcpCoKA/3CegsqIqBR+nA137lQg==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.2", + "@docusaurus/types": "3.5.2", + "@docusaurus/utils-validation": "3.5.2", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/plugin-sitemap": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.5.2.tgz", + "integrity": "sha512-DnlqYyRAdQ4NHY28TfHuVk414ft2uruP4QWCH//jzpHjqvKyXjj2fmDtI8RPUBh9K8iZKFMHRnLtzJKySPWvFA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.2", + "@docusaurus/logger": "3.5.2", + "@docusaurus/types": "3.5.2", + "@docusaurus/utils": "3.5.2", + "@docusaurus/utils-common": "3.5.2", + "@docusaurus/utils-validation": "3.5.2", + "fs-extra": "^11.1.1", + "sitemap": "^7.1.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/preset-classic": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.5.2.tgz", + "integrity": "sha512-3ihfXQ95aOHiLB5uCu+9PRy2gZCeSZoDcqpnDvf3B+sTrMvMTr8qRUzBvWkoIqc82yG5prCboRjk1SVILKx6sg==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.2", + "@docusaurus/plugin-content-blog": "3.5.2", + "@docusaurus/plugin-content-docs": "3.5.2", + "@docusaurus/plugin-content-pages": "3.5.2", + "@docusaurus/plugin-debug": "3.5.2", + "@docusaurus/plugin-google-analytics": "3.5.2", + "@docusaurus/plugin-google-gtag": "3.5.2", + "@docusaurus/plugin-google-tag-manager": "3.5.2", + "@docusaurus/plugin-sitemap": "3.5.2", + "@docusaurus/theme-classic": "3.5.2", + "@docusaurus/theme-common": "3.5.2", + "@docusaurus/theme-search-algolia": "3.5.2", + "@docusaurus/types": "3.5.2" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/theme-classic": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.5.2.tgz", + "integrity": "sha512-XRpinSix3NBv95Rk7xeMF9k4safMkwnpSgThn0UNQNumKvmcIYjfkwfh2BhwYh/BxMXQHJ/PdmNh22TQFpIaYg==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.2", + "@docusaurus/mdx-loader": "3.5.2", + "@docusaurus/module-type-aliases": "3.5.2", + "@docusaurus/plugin-content-blog": "3.5.2", + "@docusaurus/plugin-content-docs": "3.5.2", + "@docusaurus/plugin-content-pages": "3.5.2", + "@docusaurus/theme-common": "3.5.2", + "@docusaurus/theme-translations": "3.5.2", + "@docusaurus/types": "3.5.2", + "@docusaurus/utils": "3.5.2", + "@docusaurus/utils-common": "3.5.2", + "@docusaurus/utils-validation": "3.5.2", + "@mdx-js/react": "^3.0.0", + "clsx": "^2.0.0", + "copy-text-to-clipboard": "^3.2.0", + "infima": "0.2.0-alpha.44", + "lodash": "^4.17.21", + "nprogress": "^0.2.0", + "postcss": "^8.4.26", + "prism-react-renderer": "^2.3.0", + "prismjs": "^1.29.0", + "react-router-dom": "^5.3.4", + "rtlcss": "^4.1.0", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/theme-common": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.5.2.tgz", + "integrity": "sha512-QXqlm9S6x9Ibwjs7I2yEDgsCocp708DrCrgHgKwg2n2AY0YQ6IjU0gAK35lHRLOvAoJUfCKpQAwUykB0R7+Eew==", + "license": "MIT", + "dependencies": { + "@docusaurus/mdx-loader": "3.5.2", + "@docusaurus/module-type-aliases": "3.5.2", + "@docusaurus/utils": "3.5.2", + "@docusaurus/utils-common": "3.5.2", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "clsx": "^2.0.0", + "parse-numeric-range": "^1.3.0", + "prism-react-renderer": "^2.3.0", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "@docusaurus/plugin-content-docs": "*", + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/theme-search-algolia": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.5.2.tgz", + "integrity": "sha512-qW53kp3VzMnEqZGjakaV90sst3iN1o32PH+nawv1uepROO8aEGxptcq2R5rsv7aBShSRbZwIobdvSYKsZ5pqvA==", + "license": "MIT", + "dependencies": { + "@docsearch/react": "^3.5.2", + "@docusaurus/core": "3.5.2", + "@docusaurus/logger": "3.5.2", + "@docusaurus/plugin-content-docs": "3.5.2", + "@docusaurus/theme-common": "3.5.2", + "@docusaurus/theme-translations": "3.5.2", + "@docusaurus/utils": "3.5.2", + "@docusaurus/utils-validation": "3.5.2", + "algoliasearch": "^4.18.0", + "algoliasearch-helper": "^3.13.3", + "clsx": "^2.0.0", + "eta": "^2.2.0", + "fs-extra": "^11.1.1", + "lodash": "^4.17.21", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/theme-translations": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.5.2.tgz", + "integrity": "sha512-GPZLcu4aT1EmqSTmbdpVrDENGR2yObFEX8ssEFYTCiAIVc0EihNSdOIBTazUvgNqwvnoU1A8vIs1xyzc3LITTw==", + "license": "MIT", + "dependencies": { + "fs-extra": "^11.1.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + } + }, + "node_modules/@docusaurus/types": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.5.2.tgz", + "integrity": "sha512-N6GntLXoLVUwkZw7zCxwy9QiuEXIcTVzA9AkmNw16oc0AP3SXLrMmDMMBIfgqwuKWa6Ox6epHol9kMtJqekACw==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@docusaurus/utils": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.5.2.tgz", + "integrity": "sha512-33QvcNFh+Gv+C2dP9Y9xWEzMgf3JzrpL2nW9PopidiohS1nDcyknKRx2DWaFvyVTTYIkkABVSr073VTj/NITNA==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.5.2", + "@docusaurus/utils-common": "3.5.2", + "@svgr/webpack": "^8.1.0", + "escape-string-regexp": "^4.0.0", + "file-loader": "^6.2.0", + "fs-extra": "^11.1.1", + "github-slugger": "^1.5.0", + "globby": "^11.1.0", + "gray-matter": "^4.0.3", + "jiti": "^1.20.0", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "micromatch": "^4.0.5", + "prompts": "^2.4.2", + "resolve-pathname": "^3.0.0", + "shelljs": "^0.8.5", + "tslib": "^2.6.0", + "url-loader": "^4.1.1", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "@docusaurus/types": "*" + }, + "peerDependenciesMeta": { + "@docusaurus/types": { + "optional": true + } + } + }, + "node_modules/@docusaurus/utils-common": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.5.2.tgz", + "integrity": "sha512-i0AZjHiRgJU6d7faQngIhuHKNrszpL/SHQPgF1zH4H+Ij6E9NBYGy6pkcGWToIv7IVPbs+pQLh1P3whn0gWXVg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "@docusaurus/types": "*" + }, + "peerDependenciesMeta": { + "@docusaurus/types": { + "optional": true + } + } + }, + "node_modules/@docusaurus/utils-validation": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.5.2.tgz", + "integrity": "sha512-m+Foq7augzXqB6HufdS139PFxDC5d5q2QKZy8q0qYYvGdI6nnlNsGH4cIGsgBnV7smz+mopl3g4asbSDvMV0jA==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.5.2", + "@docusaurus/utils": "3.5.2", + "@docusaurus/utils-common": "3.5.2", + "fs-extra": "^11.2.0", + "joi": "^17.9.2", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "license": "MIT" + }, + "node_modules/@mdx-js/mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz", + "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "acorn": "^8.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/react": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz", + "integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==", + "license": "MIT", + "dependencies": { + "@types/mdx": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=16", + "react": ">=16" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "license": "MIT", + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "license": "ISC" + }, + "node_modules/@pnpm/npm-conf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-3.0.2.tgz", + "integrity": "sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==", + "license": "MIT", + "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "license": "MIT" + }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "license": "BSD-3-Clause" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "license": "MIT" + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@slorber/remark-comment": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@slorber/remark-comment/-/remark-comment-1.0.0.tgz", + "integrity": "sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==", + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.1.0", + "micromark-util-symbol": "^1.0.1" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", + "license": "MIT", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.21.3", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^8.1.3", + "deepmerge": "^4.3.1", + "svgo": "^3.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/webpack": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz", + "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@babel/plugin-transform-react-constant-elements": "^7.21.3", + "@babel/preset-env": "^7.20.2", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.21.0", + "@svgr/core": "8.1.0", + "@svgr/plugin-jsx": "8.1.0", + "@svgr/plugin-svgo": "8.1.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "license": "MIT", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "^1" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", + "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/express/node_modules/@types/express-serve-static-core": { + "version": "4.19.8", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", + "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/gtag.js": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.12.tgz", + "integrity": "sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==", + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", + "license": "MIT" + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "license": "MIT" + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==", + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.17", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.5.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.2.tgz", + "integrity": "sha512-tO4ZIRKNC+MDWV4qKVZe3Ql/woTnmHDr5JD8UI5hn2pwBrHEwOEMZK7WlNb5RKB6EoJ02gwmQS9OrjuFnZYdpg==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", + "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" + }, + "node_modules/@types/prismjs": { + "version": "1.26.6", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.6.tgz", + "integrity": "sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==", + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "license": "MIT", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, + "node_modules/@types/react-router-config": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.11.tgz", + "integrity": "sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==", + "license": "MIT", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "^5.1.0" + } + }, + "node_modules/@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "license": "MIT", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "license": "MIT" + }, + "node_modules/@types/sax": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", + "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "license": "Apache-2.0" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/algoliasearch": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.27.0.tgz", + "integrity": "sha512-C88C5grLa5VOCp9eYZJt+q99ik7yNdm92l7Q9+4XK0Md8kL05Lg8l2v9ZVX0uMW3mH9pAFxMMXlLOvqNumA4lw==", + "license": "MIT", + "dependencies": { + "@algolia/cache-browser-local-storage": "4.27.0", + "@algolia/cache-common": "4.27.0", + "@algolia/cache-in-memory": "4.27.0", + "@algolia/client-account": "4.27.0", + "@algolia/client-analytics": "4.27.0", + "@algolia/client-common": "4.27.0", + "@algolia/client-personalization": "4.27.0", + "@algolia/client-search": "4.27.0", + "@algolia/logger-common": "4.27.0", + "@algolia/logger-console": "4.27.0", + "@algolia/recommend": "4.27.0", + "@algolia/requester-browser-xhr": "4.27.0", + "@algolia/requester-common": "4.27.0", + "@algolia/requester-node-http": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/algoliasearch-helper": { + "version": "3.28.1", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.28.1.tgz", + "integrity": "sha512-6iXpbkkrAI5HFpCWXlNmIDSBuoN/U1XnEvb2yJAoWfqrZ+DrybI7MQ5P5mthFaprmocq+zbi6HxnR28xnZAYBw==", + "license": "MIT", + "dependencies": { + "@algolia/events": "^4.0.1" + }, + "peerDependencies": { + "algoliasearch": ">= 3.1 < 6" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/client-common": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.27.0.tgz", + "integrity": "sha512-ZrT6l/YPQgyIUuBCxcYPeXol2VBLUMuNb1rKXrm6z1f/iTiwqtnEEb16/6CC11+Re0ZGXrdcMVrgDRrzveQ1aQ==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/client-search": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.27.0.tgz", + "integrity": "sha512-qmX/f67ay0eZ4V5Io8fWWOcUVo/gqre2yei1PnmEhQU2Gul6ushg25QnNrfu4BODiRrw1rwYveZaLCiHvcUxrQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "4.27.0", + "@algolia/requester-common": "4.27.0", + "@algolia/transporter": "4.27.0" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/requester-browser-xhr": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.27.0.tgz", + "integrity": "sha512-dTenMBIIpyp5o3C2ZnfbsuSlD/lL9jPkk6T+2+qm38fyw2nf49ANbcHFE79NgiGrnmw7QrYveCs9NIP3Wk4v6g==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.27.0" + } + }, + "node_modules/algoliasearch/node_modules/@algolia/requester-node-http": { + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.27.0.tgz", + "integrity": "sha512-y8nUqaUQeSOQ5oaNo0b2QPznyBFW9LoIwljyUphJ+gUZpU6O/j2/C8ovoqDpIe6J0etqHg5RCcBizrCFZuLpyw==", + "license": "MIT", + "dependencies": { + "@algolia/requester-common": "4.27.0" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "license": "MIT", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.27", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz", + "integrity": "sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001774", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/babel-loader": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", + "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", + "license": "MIT", + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "license": "MIT", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", + "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.8", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", + "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.16", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.16.tgz", + "integrity": "sha512-Lyf3aK28zpsD1yQMiiHD4RvVb6UdMoo8xzG2XzFIfR9luPzOpcBlAsT/qfB1XWS1bxWT+UtE4WmQgsp297FYOA==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "license": "MIT" + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/bonjour-service": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/boxen": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz", + "integrity": "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==", + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^6.2.0", + "chalk": "^4.1.2", + "cli-boxes": "^3.0.0", + "string-width": "^5.0.1", + "type-fest": "^2.5.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request": { + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001787", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001787.tgz", + "integrity": "sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-table3/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "node_modules/combine-promises": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz", + "integrity": "sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "license": "ISC" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compressible/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "license": "MIT", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "license": "BSD-2-Clause", + "dependencies": { + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/yeoman/configstore?sponsor=1" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "license": "MIT" + }, + "node_modules/copy-text-to-clipboard": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.2.tgz", + "integrity": "sha512-T6SqyLd1iLuqPA90J5N4cTalrtovCySh58iiZDGJ6FGznbclKh4UI+FGacQSgFzwKG77W7XT5gwbVEbd9cIH1A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "license": "MIT", + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "license": "MIT", + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/core-js": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.49.0.tgz", + "integrity": "sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.49.0.tgz", + "integrity": "sha512-XM4RFka59xATyJv/cS3O3Kml72hQXUeGRuuTmMYFxwzc9/7C8OYTaIR/Ji+Yt8DXzsFLNhat15cE/JP15HrCgw==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "license": "MIT", + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/css-declaration-sorter": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.4.0.tgz", + "integrity": "sha512-LTuzjPoyA2vMGKKcaOqKSp7Ub2eGrNfKiZH4LpezxpNrsICGCSFvsQOI29psISxNZtaXibkC2CXzrQ5enMeGGw==", + "license": "ISC", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "cssnano": "^6.0.1", + "jest-worker": "^29.4.3", + "postcss": "^8.4.24", + "schema-utils": "^4.0.1", + "serialize-javascript": "^6.0.1" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "lightningcss": { + "optional": true + } + } + }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz", + "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==", + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^6.1.2", + "lilconfig": "^3.1.1" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-preset-advanced": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz", + "integrity": "sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==", + "license": "MIT", + "dependencies": { + "autoprefixer": "^10.4.19", + "browserslist": "^4.23.0", + "cssnano-preset-default": "^6.1.2", + "postcss-discard-unused": "^6.0.5", + "postcss-merge-idents": "^6.0.3", + "postcss-reduce-idents": "^6.0.3", + "postcss-zindex": "^6.0.2" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-preset-default": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", + "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^4.0.2", + "postcss-calc": "^9.0.1", + "postcss-colormin": "^6.1.0", + "postcss-convert-values": "^6.1.0", + "postcss-discard-comments": "^6.0.2", + "postcss-discard-duplicates": "^6.0.3", + "postcss-discard-empty": "^6.0.3", + "postcss-discard-overridden": "^6.0.2", + "postcss-merge-longhand": "^6.0.5", + "postcss-merge-rules": "^6.1.1", + "postcss-minify-font-values": "^6.1.0", + "postcss-minify-gradients": "^6.0.3", + "postcss-minify-params": "^6.1.0", + "postcss-minify-selectors": "^6.0.4", + "postcss-normalize-charset": "^6.0.2", + "postcss-normalize-display-values": "^6.0.2", + "postcss-normalize-positions": "^6.0.2", + "postcss-normalize-repeat-style": "^6.0.2", + "postcss-normalize-string": "^6.0.2", + "postcss-normalize-timing-functions": "^6.0.2", + "postcss-normalize-unicode": "^6.1.0", + "postcss-normalize-url": "^6.0.2", + "postcss-normalize-whitespace": "^6.0.2", + "postcss-ordered-values": "^6.0.2", + "postcss-reduce-initial": "^6.1.0", + "postcss-reduce-transforms": "^6.0.2", + "postcss-svgo": "^6.0.3", + "postcss-unique-selectors": "^6.0.4" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-utils": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", + "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "license": "CC0-1.0" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "license": "MIT", + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "license": "MIT" + }, + "node_modules/detect-port": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", + "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", + "license": "MIT", + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "license": "MIT", + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, + "engines": { + "node": ">= 4.2.1" + } + }, + "node_modules/detect-port-alt/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/detect-port-alt/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "license": "MIT", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "license": "MIT", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dot-prop/node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "license": "MIT" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.334", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.334.tgz", + "integrity": "sha512-mgjZAz7Jyx1SRCwEpy9wefDS7GvNPazLthHg8eQMJ76wBdGQQDW33TCrUTvQ4wzpmOrv2zrFoD3oNufMdyMpog==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/emoticon": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-4.1.0.tgz", + "integrity": "sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", + "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-value-to-estree": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.5.0.tgz", + "integrity": "sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eta": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz", + "integrity": "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "url": "https://github.com/eta-dev/eta?sponsor=1" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eval": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz", + "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==", + "dependencies": { + "@types/node": "*", + "require-like": ">= 0.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", + "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", + "license": "MIT" + }, + "node_modules/express/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fault": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "license": "MIT", + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/feed": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", + "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", + "license": "MIT", + "dependencies": { + "xml-js": "^1.6.11" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/file-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/file-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/filesize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "license": "MIT", + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "license": "MIT", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", + "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "license": "MIT", + "engines": { + "node": ">= 14.17" + } + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs-monkey": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", + "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", + "license": "Unlicense" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "license": "ISC" + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/github-slugger": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", + "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==", + "license": "ISC" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "license": "BSD-2-Clause" + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "license": "MIT", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "license": "MIT", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "license": "MIT", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/got/node_modules/@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/gray-matter/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-yarn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", + "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz", + "integrity": "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "license": "MIT" + }, + "node_modules/html-minifier-terser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", + "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "~5.3.2", + "commander": "^10.0.0", + "entities": "^4.4.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.15.1" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.6.6", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.6.tgz", + "integrity": "sha512-bLjW01UTrvoWTJQL5LsMRo1SypHW80FTm12OJRSnr3v6YHNhfe+1r0MYUZJMACxnCHURVnBWRwAsWs2yPU9Ezw==", + "license": "MIT", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/html-webpack-plugin/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-webpack-plugin/node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", + "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", + "license": "MIT", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/infima": { + "version": "0.2.0-alpha.44", + "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.44.tgz", + "integrity": "sha512-tuRkUSO/lB3rEhLJk25atwAjgLuzq070+pOW8XcvpHky/YbENnRRdPd85IBkyeTgttmOy5ah+yHYsK1HhUd4lQ==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", + "license": "MIT" + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", + "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "license": "MIT", + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "license": "MIT", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-npm": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.1.0.tgz", + "integrity": "sha512-O2z4/kNgyjhQwVR1Wpkbfc19JIhggF97NZNCpWTnjH7kVcZMUrnut9XSN7txI7VdyIYk5ZatOq3zvSuWpU8hoA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-yarn-global": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", + "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/joi": { + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/latest-version": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", + "license": "MIT", + "dependencies": { + "package-json": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/launch-editor": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.13.2.tgz", + "integrity": "sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg==", + "license": "MIT", + "dependencies": { + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/loader-runner": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "license": "MIT", + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "license": "MIT" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdast-util-directive": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz", + "integrity": "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", + "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/mdast-util-frontmatter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", + "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "escape-string-regexp": "^5.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "license": "CC0-1.0" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-directive": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz", + "integrity": "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-frontmatter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", + "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", + "license": "MIT", + "dependencies": { + "fault": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "license": "MIT", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-destination/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-destination/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-space": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-space/node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-character": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-character/node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-events-to-acorn/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-normalize-identifier/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "license": "MIT", + "dependencies": { + "mime-db": "~1.33.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.2.tgz", + "integrity": "sha512-AOSS0IdEB95ayVkxn5oGzNQwqAi2J0Jb/kKm43t7H73s8+f5873g0yuj0PNvK4dO75mu5DHg4nlgp4k6Kga8eg==", + "license": "MIT", + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-emoji": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz", + "integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/node-forge": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", + "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.37", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", + "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.1.tgz", + "integrity": "sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==", + "license": "MIT" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", + "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", + "license": "MIT", + "dependencies": { + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-numeric-range": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==", + "license": "ISC" + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "license": "(WTFPL OR MIT)" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", + "license": "MIT", + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "license": "MIT", + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.9.tgz", + "integrity": "sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", + "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-convert-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", + "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-comments": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", + "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", + "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-empty": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", + "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", + "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-unused": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-6.0.5.tgz", + "integrity": "sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-loader": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz", + "integrity": "sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^8.3.5", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-merge-idents": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz", + "integrity": "sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g==", + "license": "MIT", + "dependencies": { + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz", + "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^6.1.1" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-merge-rules": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz", + "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^4.0.2", + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz", + "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", + "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", + "license": "MIT", + "dependencies": { + "colord": "^2.9.3", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-params": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", + "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz", + "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", + "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", + "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", + "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", + "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-string": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", + "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", + "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", + "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-url": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", + "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", + "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-ordered-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", + "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", + "license": "MIT", + "dependencies": { + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-idents": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz", + "integrity": "sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", + "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", + "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-sort-media-queries": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz", + "integrity": "sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==", + "license": "MIT", + "dependencies": { + "sort-css-media-queries": "2.2.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.4.23" + } + }, + "node_modules/postcss-svgo": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", + "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.2.0" + }, + "engines": { + "node": "^14 || ^16 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz", + "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/postcss-zindex": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz", + "integrity": "sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/prism-react-renderer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.4.1.tgz", + "integrity": "sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==", + "license": "MIT", + "dependencies": { + "@types/prismjs": "^1.26.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.0.0" + } + }, + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "license": "ISC" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pupa": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.3.0.tgz", + "integrity": "sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA==", + "license": "MIT", + "dependencies": { + "escape-goat": "^4.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "license": "MIT", + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dev-utils": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", + "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.0", + "address": "^1.1.2", + "browserslist": "^4.18.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^4.0.0", + "filesize": "^8.0.6", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "global-modules": "^2.0.0", + "globby": "^11.0.4", + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.11", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-dev-utils/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/react-dev-utils/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dev-utils/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-error-overlay": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.1.0.tgz", + "integrity": "sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==", + "license": "MIT" + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "license": "MIT" + }, + "node_modules/react-helmet-async": { + "name": "@slorber/react-helmet-async", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@slorber/react-helmet-async/-/react-helmet-async-1.3.0.tgz", + "integrity": "sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.12.5", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.2.0", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "react": "^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/react-json-view-lite": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-1.5.0.tgz", + "integrity": "sha512-nWqA1E4jKPklL2jvHWs6s+7Na0qNgw9HCP6xehdQJeg6nPBTFZgGwyko9Q0oj+jQWKTTVRS30u0toM5wiuL3iw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-loadable": { + "name": "@docusaurus/react-loadable", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz", + "integrity": "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==", + "license": "MIT", + "dependencies": { + "@types/react": "*" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-loadable-ssr-addon-v5-slorber": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.3.tgz", + "integrity": "sha512-GXfh9VLwB5ERaCsU6RULh7tkemeX15aNh6wuMEBtfdyMa7fFG8TXrhXlx1SoEK2Ty/l6XIkzzYIQmyaWW3JgdQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.3" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "react-loadable": "*", + "webpack": ">=4.41.1 || 5.x" + } + }, + "node_modules/react-router": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", + "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-router-config": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", + "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.1.2" + }, + "peerDependencies": { + "react": ">=15", + "react-router": ">=5" + } + }, + "node_modules/react-router-dom": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", + "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.3.4", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reading-time": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", + "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==", + "license": "MIT" + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/recma-build-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-jsx": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz", + "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==", + "license": "MIT", + "dependencies": { + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/recma-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/registry-auth-token": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.1.tgz", + "integrity": "sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==", + "license": "MIT", + "dependencies": { + "@pnpm/npm-conf": "^3.0.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/registry-url": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "license": "MIT", + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.1.tgz", + "integrity": "sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-recma": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remark-directive": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.1.tgz", + "integrity": "sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-directive": "^3.0.0", + "micromark-extension-directive": "^3.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-emoji": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-4.0.1.tgz", + "integrity": "sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.2", + "emoticon": "^4.0.1", + "mdast-util-find-and-replace": "^3.0.1", + "node-emoji": "^2.1.0", + "unified": "^11.0.4" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/remark-frontmatter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz", + "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-frontmatter": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz", + "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==", + "license": "MIT", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "license": "MIT", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/renderkid/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/renderkid/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-like": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", + "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==", + "engines": { + "node": "*" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "license": "MIT" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==", + "license": "MIT" + }, + "node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "license": "MIT", + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rtl-detect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.1.2.tgz", + "integrity": "sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==", + "license": "BSD-3-Clause" + }, + "node_modules/rtlcss": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.3.0.tgz", + "integrity": "sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==", + "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0", + "postcss": "^8.4.21", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "rtlcss": "bin/rtlcss.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", + "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/search-insights": { + "version": "2.17.3", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", + "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", + "license": "MIT", + "peer": true + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "license": "MIT" + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "license": "MIT", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-handler": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.7.tgz", + "integrity": "sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg==", + "license": "MIT", + "dependencies": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "mime-types": "2.1.18", + "minimatch": "3.1.5", + "path-is-inside": "1.0.2", + "path-to-regexp": "3.3.0", + "range-parser": "1.2.0" + } + }, + "node_modules/serve-handler/node_modules/path-to-regexp": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", + "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==", + "license": "MIT" + }, + "node_modules/serve-index": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.2.tgz", + "integrity": "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.8.0", + "mime-types": "~2.1.35", + "parseurl": "~1.3.3" + }, + "engines": { + "node": ">= 0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "license": "BSD-3-Clause", + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/sitemap": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.3.tgz", + "integrity": "sha512-tAjEd+wt/YwnEbfNB2ht51ybBJxbEWwe5ki/Z//Wh0rpBFTCUSj46GnxUKEWzhfuJTsee8x3lybHxFgUMig2hw==", + "license": "MIT", + "dependencies": { + "@types/node": "^17.0.5", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.2.4" + }, + "bin": { + "sitemap": "dist/cli.js" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.6.0" + } + }, + "node_modules/sitemap/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "license": "MIT" + }, + "node_modules/skin-tone": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "license": "MIT", + "dependencies": { + "unicode-emoji-modifier-base": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sort-css-media-queries": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz", + "integrity": "sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==", + "license": "MIT", + "engines": { + "node": ">= 6.3.0" + } + }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/srcset": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz", + "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "license": "MIT" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-to-js": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.14" + } + }, + "node_modules/style-to-object": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.7" + } + }, + "node_modules/stylehacks": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz", + "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "license": "MIT" + }, + "node_modules/svgo": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.3.tgz", + "integrity": "sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng==", + "license": "MIT", + "dependencies": { + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0", + "sax": "^1.5.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/tapable": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", + "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser": { + "version": "5.46.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", + "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", + "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "license": "MIT" + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "license": "MIT" + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-emoji-modifier-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "license": "MIT", + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-notifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", + "license": "BSD-2-Clause", + "dependencies": { + "boxen": "^7.0.0", + "chalk": "^5.0.1", + "configstore": "^6.0.0", + "has-yarn": "^3.0.0", + "import-lazy": "^4.0.0", + "is-ci": "^3.0.1", + "is-installed-globally": "^0.4.0", + "is-npm": "^6.0.0", + "is-yarn-global": "^0.4.0", + "latest-version": "^7.0.0", + "pupa": "^3.1.0", + "semver": "^7.3.7", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/boxen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/url-loader/node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/url-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/url-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/url-loader/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/url-loader/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/url-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "license": "MIT" + }, + "node_modules/utility-types": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", + "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==", + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/watchpack": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "license": "MIT", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/webpack": { + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz", + "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==", + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "html-escaper": "^2.0.2", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "license": "MIT", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-middleware/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-middleware/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", + "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/webpack/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpackbar": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", + "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.3", + "pretty-time": "^1.1.0", + "std-env": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "webpack": "3 || 4 || 5" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "license": "MIT", + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xdg-basedir": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "license": "MIT", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", + "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 00000000..5ddd2b65 --- /dev/null +++ b/docs/package.json @@ -0,0 +1,32 @@ +{ + "name": "infiniframe-docs", + "private": true, + "version": "0.1.0", + "scripts": { + "dev": "docusaurus start --host 0.0.0.0 --port 3000", + "build": "docusaurus build", + "serve": "docusaurus serve --port 3000", + "clear": "docusaurus clear" + }, + "dependencies": { + "@docusaurus/core": "3.5.2", + "@docusaurus/plugin-client-redirects": "3.5.2", + "@docusaurus/preset-classic": "3.5.2", + "clsx": "2.1.1", + "prism-react-renderer": "2.4.1", + "react": "18.2.0", + "react-dom": "18.2.0" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "3.5.2", + "@docusaurus/types": "3.5.2", + "typescript": "5.6.3", + "webpack": "5.94.0" + }, + "engines": { + "node": ">=20.0" + }, + "overrides": { + "webpack": "5.94.0" + } +} diff --git a/docs/scripts/serve-docs.ps1 b/docs/scripts/serve-docs.ps1 index d495b86d..d3049a14 100644 --- a/docs/scripts/serve-docs.ps1 +++ b/docs/scripts/serve-docs.ps1 @@ -1,10 +1,12 @@ param( + [switch]$LegacyDocfx, [string]$ConfigPath = "docs/docfx.json", [string]$SitePath = "docs/_site" ) $ErrorActionPreference = "Stop" $repoRoot = Split-Path (Split-Path $PSScriptRoot -Parent) -Parent +$docsRoot = Join-Path $repoRoot "docs" if (-not [System.IO.Path]::IsPathRooted($ConfigPath)) { $ConfigPath = Join-Path $repoRoot $ConfigPath @@ -14,6 +16,11 @@ if (-not [System.IO.Path]::IsPathRooted($SitePath)) { $SitePath = Join-Path $repoRoot $SitePath } +if (-not $LegacyDocfx) { + npm --prefix "$docsRoot" run dev + exit $LASTEXITCODE +} + if (-not (Get-Command docfx -ErrorAction SilentlyContinue)) { Write-Error "docfx is not installed or not on PATH. Install with: dotnet tool install --global docfx --version 2.78.5" } diff --git a/docs/sidebars.ts b/docs/sidebars.ts new file mode 100644 index 00000000..50b55aeb --- /dev/null +++ b/docs/sidebars.ts @@ -0,0 +1,46 @@ +import type { SidebarsConfig } from "@docusaurus/plugin-content-docs"; + +const sidebars: SidebarsConfig = { + docsSidebar: [ + "intro", + { + type: "category", + label: "Guides", + items: [ + "guides/getting-started", + "guides/pack-tool", + "guides/core-window", + "guides/blazor-webview", + "guides/web-server", + "guides/javascript-interop", + "guides/custom-window-chrome", + ], + }, + { + type: "category", + label: "Concepts", + items: [ + "concepts/breaking-changes-from-photino", + ], + }, + { + type: "category", + label: "C# Articles", + items: [ + "csharp/code-style", + ], + }, + { + type: "category", + label: "C++ Articles", + items: [ + "cpp/native-cpp-api", + "cpp/code-style", + ], + }, + "api", + "migration/docfx-to-docusaurus", + ], +}; + +export default sidebars; diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css new file mode 100644 index 00000000..08390aee --- /dev/null +++ b/docs/src/css/custom.css @@ -0,0 +1,9 @@ +:root { + --ifm-color-primary: #166534; + --ifm-color-primary-dark: #14532d; + --ifm-color-primary-darker: #0f3f23; + --ifm-color-primary-darkest: #0a2b18; + --ifm-color-primary-light: #15803d; + --ifm-color-primary-lighter: #16a34a; + --ifm-color-primary-lightest: #22c55e; +} diff --git a/docs/tsconfig.json b/docs/tsconfig.json new file mode 100644 index 00000000..bb8f8324 --- /dev/null +++ b/docs/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "@docusaurus/tsconfig", + "compilerOptions": { + "baseUrl": "." + }, + "include": [ + "docusaurus.config.ts", + "sidebars.ts", + "src/**/*" + ] +} diff --git a/package.json b/package.json index 6b317d61..6f6f96b9 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,8 @@ "name": "infinilore.infiniframe", "version": "0.1.0", "scripts": { + "docs:dev": "npm --prefix docs run dev", + "docs:build": "npm --prefix docs run build", "production:build": "npx webpack --env production=true", "watch:typescript": "npx webpack --watch --env production=false" }, From 62bdee0e9b5d7be754dd9355df21ab3a15839f6e Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Thu, 9 Apr 2026 16:43:19 +0200 Subject: [PATCH 02/12] Migrate narrative docs to Docusaurus; retain DocFX for C# API generation --- .../workflows/shared-release-publish-docs.yml | 27 +- .github/workflows/shared-testing-docs.yml | 19 +- README.md | 5 +- docs/.gitignore | 1 + docs/api/cpp/toc.yml | 2 - docs/articles/concepts/toc.yml | 2 - docs/articles/cpp/toc.yml | 4 - docs/articles/csharp/toc.yml | 2 - docs/articles/guides/toc.yml | 14 - docs/content/api.md | 6 +- docs/content/migration/docfx-to-docusaurus.md | 16 +- docs/{docfx.json => docfx.api.json} | 23 +- docs/docusaurus.config.ts | 3 +- docs/index.md | 11 - docs/package-lock.json | 6234 ++++++++++++----- docs/package.json | 8 +- docs/scripts/serve-docs.ps1 | 15 +- docs/static/api/cs/index.html | 16 + docs/toc.yml | 10 - 19 files changed, 4633 insertions(+), 1785 deletions(-) delete mode 100644 docs/api/cpp/toc.yml delete mode 100644 docs/articles/concepts/toc.yml delete mode 100644 docs/articles/cpp/toc.yml delete mode 100644 docs/articles/csharp/toc.yml delete mode 100644 docs/articles/guides/toc.yml rename docs/{docfx.json => docfx.api.json} (70%) delete mode 100644 docs/index.md create mode 100644 docs/static/api/cs/index.html delete mode 100644 docs/toc.yml diff --git a/.github/workflows/shared-release-publish-docs.yml b/.github/workflows/shared-release-publish-docs.yml index 22e86612..0d4f9ada 100644 --- a/.github/workflows/shared-release-publish-docs.yml +++ b/.github/workflows/shared-release-publish-docs.yml @@ -51,36 +51,37 @@ jobs: package-lock.json docs/package-lock.json - - name: Install Doxygen - run: | - sudo apt-get update - sudo apt-get install -y doxygen - - name: Install Docusaurus Dependencies shell: bash run: npm ci --prefix docs - - name: Generate API Metadata (DocFX Parity) - run: docfx metadata docs/docfx.json + - name: Generate C# API Metadata + run: docfx metadata docs/docfx.api.json - - name: Generate C++ Docs (DocFX Parity) - shell: pwsh - run: ./docs/scripts/update-cpp-api.ps1 -Required - - - name: Build DocFX Site (Parallel Validation) + - name: Build C# API Site shell: bash run: | set -euo pipefail - docfx build docs/docfx.json 2>&1 | tee /tmp/docfx-build.log + docfx build docs/docfx.api.json 2>&1 | tee /tmp/docfx-build.log if grep -Eq '^[[:space:]]*[1-9][0-9]* warning\(s\)' /tmp/docfx-build.log; then exit 1 fi + test -f docs/_site_api/api/cs/index.html + - name: Build Docusaurus Site shell: bash run: npm run docs:build + - name: Merge C# API Site Into Docusaurus Output + shell: bash + run: | + set -euo pipefail + mkdir -p docs/build/api + rm -rf docs/build/api/cs + cp -R docs/_site_api/api/cs docs/build/api/cs + - name: Setup Pages uses: actions/configure-pages@v6 diff --git a/.github/workflows/shared-testing-docs.yml b/.github/workflows/shared-testing-docs.yml index 7ecaaf4a..01c0f2a7 100644 --- a/.github/workflows/shared-testing-docs.yml +++ b/.github/workflows/shared-testing-docs.yml @@ -77,11 +77,6 @@ jobs: dotnet tool install --global docfx --version $REQUIRED_VERSION fi - - name: Install Deps - uses: awalsh128/cache-apt-pkgs-action@v1 - with: - packages: doxygen - - name: Install Docusaurus Dependencies shell: bash run: npm ci --prefix docs @@ -101,23 +96,21 @@ jobs: target-url: ${{ format('{0}/{1}/actions/runs/{2}', github.server_url, github.repository, github.run_id) }} allow-status-422: 'true' - - name: Generate API Metadata - run: docfx metadata docs/docfx.json + - name: Generate C# API Metadata + run: docfx metadata docs/docfx.api.json - - name: Generate C++ Docs - shell: pwsh - run: ./docs/scripts/update-cpp-api.ps1 -Required - - - name: Build Docs + - name: Build C# API Site shell: bash run: | set -euo pipefail - docfx build docs/docfx.json 2>&1 | tee /tmp/docfx-build.log + docfx build docs/docfx.api.json 2>&1 | tee /tmp/docfx-build.log if grep -Eq '^[[:space:]]*[1-9][0-9]* warning\(s\)' /tmp/docfx-build.log; then exit 1 fi + test -f docs/_site_api/api/cs/index.html + - name: Build Docusaurus Docs shell: bash run: npm run docs:build diff --git a/README.md b/README.md index 7078c7f6..d367df27 100644 --- a/README.md +++ b/README.md @@ -166,6 +166,7 @@ dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj --rid win-x64 Requirements: - `Node.js`/`npm` (required) +- `.NET SDK` + `docfx` (optional, only if regenerating C# API docs) Run: @@ -179,10 +180,10 @@ Build static site: npm run docs:build ``` -Legacy DocFX parity flow (temporary during migration): +Generate and preview C# API docs only (DocFX API-only pipeline): ```powershell -.\docs\scripts\serve-docs.ps1 -LegacyDocfx +.\docs\scripts\serve-docs.ps1 -BuildCsApiOnly ``` ## Platform Requirements diff --git a/docs/.gitignore b/docs/.gitignore index 531b31c8..1bcaaff1 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -1,3 +1,4 @@ .docusaurus build node_modules +_site_api diff --git a/docs/api/cpp/toc.yml b/docs/api/cpp/toc.yml deleted file mode 100644 index 4385d98a..00000000 --- a/docs/api/cpp/toc.yml +++ /dev/null @@ -1,2 +0,0 @@ -- name: C++ API Reference (Generated) - href: native-cpp-reference.md diff --git a/docs/articles/concepts/toc.yml b/docs/articles/concepts/toc.yml deleted file mode 100644 index 671f085a..00000000 --- a/docs/articles/concepts/toc.yml +++ /dev/null @@ -1,2 +0,0 @@ -- name: Breaking Changes from Photino.NET - href: breaking-changes-from-photino.md diff --git a/docs/articles/cpp/toc.yml b/docs/articles/cpp/toc.yml deleted file mode 100644 index 01dde6dc..00000000 --- a/docs/articles/cpp/toc.yml +++ /dev/null @@ -1,4 +0,0 @@ -- name: Native C++ API - href: native-cpp-api.md -- name: C/C++ Code Style - href: code-style.md diff --git a/docs/articles/csharp/toc.yml b/docs/articles/csharp/toc.yml deleted file mode 100644 index 10d6de27..00000000 --- a/docs/articles/csharp/toc.yml +++ /dev/null @@ -1,2 +0,0 @@ -- name: C# Code Style - href: code-style.md diff --git a/docs/articles/guides/toc.yml b/docs/articles/guides/toc.yml deleted file mode 100644 index 68cdb1fc..00000000 --- a/docs/articles/guides/toc.yml +++ /dev/null @@ -1,14 +0,0 @@ -- name: Getting Started - href: getting-started.md -- name: Packaging Tool - href: pack-tool.md -- name: Core Window - href: core-window.md -- name: Blazor WebView - href: blazor-webview.md -- name: Web Server - href: web-server.md -- name: JavaScript Interop - href: javascript-interop.md -- name: Custom Window Chrome - href: custom-window-chrome.md diff --git a/docs/content/api.md b/docs/content/api.md index 91d0b418..eca289bd 100644 --- a/docs/content/api.md +++ b/docs/content/api.md @@ -8,8 +8,8 @@ InfiniFrame uses a split API docs strategy during the DocFX to Docusaurus migrat - Conceptual API guidance lives in Docusaurus: - [Native C++ API Guide](cpp/native-cpp-api.md) -- Generated API references remain hosted separately on the legacy DocFX endpoint: - - [Generated C# API Reference](https://docs.infiniframe.dev/api/cs/) +- Generated API references: + - Generated C# API Reference - [Generated C++ API Reference](https://docs.infiniframe.dev/api/cpp/native-cpp-reference.html) -This keeps generated API output stable while Markdown guides and concepts move to Docusaurus. +This keeps generated API output stable while Markdown guides and concepts stay in Docusaurus. diff --git a/docs/content/migration/docfx-to-docusaurus.md b/docs/content/migration/docfx-to-docusaurus.md index fca7fdf7..94565455 100644 --- a/docs/content/migration/docfx-to-docusaurus.md +++ b/docs/content/migration/docfx-to-docusaurus.md @@ -13,9 +13,12 @@ title: DocFX to Docusaurus Migration ## API Docs Strategy -Option B is used: generated API docs stay on the legacy DocFX endpoint and are linked from Docusaurus. +Hybrid strategy is used: -Reason: C# API output currently depends on DocFX metadata + templates, and this avoids a risky generator rewrite during initial migration. +- C# generated API reference is produced with DocFX (API-only config) and published under `/api/cs/` in the same docs site. +- C++ generated API reference stays on the legacy external endpoint for now. + +Reason: C# API output already has a stable DocFX pipeline, so we keep DocFX narrowly scoped to API generation while Docusaurus owns all narrative docs and navigation. ## Local Development @@ -33,11 +36,10 @@ npm run docs:build ## CI / Deployment -- Docs test workflow builds both DocFX and Docusaurus during the parallel-validation period. -- Release docs workflow deploys Docusaurus output (`docs/build`) to GitHub Pages. -- Legacy DocFX build still runs in CI as parity validation and to keep API generation monitored. +- Docs test workflow generates/builds the C# API docs with DocFX API-only config, then builds Docusaurus. +- Release docs workflow publishes Docusaurus output (`docs/build`) and merges generated C# API static files at `/api/cs/`. ## Follow-Up for Full DocFX Retirement -- Move generated API docs away from DocFX to a dedicated non-DocFX generator, or fully separate API hosting. -- Remove DocFX config and scripts after API generation no longer depends on it. +- Move C# API generation away from DocFX to a dedicated non-DocFX generator. +- Migrate C++ generated reference off the legacy endpoint. diff --git a/docs/docfx.json b/docs/docfx.api.json similarity index 70% rename from docs/docfx.json rename to docs/docfx.api.json index 200e0a36..ca214819 100644 --- a/docs/docfx.json +++ b/docs/docfx.api.json @@ -26,13 +26,8 @@ "content": [ { "files": [ - "index.md", - "toc.yml", - "articles/**/*.md", - "articles/**/toc.yml", "api/cs/**/*.yml", - "api/cpp/**/*.md", - "api/cpp/**/toc.yml" + "api/cs/**/toc.yml" ], "exclude": [ "**/bin/**", @@ -42,27 +37,15 @@ ] } ], - "resource": [ - { - "files": [ - "articles/**/images/**", - "images/**" - ] - } - ], - "dest": "_site", + "dest": "_site_api", "template": [ "default", "modern" ], "globalMetadata": { - "_appTitle": "InfiniFrame Documentation", + "_appTitle": "InfiniFrame C# API Reference", "_enableSearch": true, "_disableContribution": true - }, - "sitemap": { - "baseUrl": "https://docs.infiniframe.dev" } } } - diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts index 7f3c077a..9538434c 100644 --- a/docs/docusaurus.config.ts +++ b/docs/docusaurus.config.ts @@ -57,8 +57,7 @@ const config: Config = { { from: ["/articles/cpp/native-cpp-api", "/articles/cpp/native-cpp-api.html"], to: "/cpp/native-cpp-api" }, { from: ["/articles/cpp/code-style", "/articles/cpp/code-style.html"], to: "/cpp/code-style" }, { from: ["/api/cpp/native-cpp-reference", "/api/cpp/native-cpp-reference.html"], to: "/api" }, - { from: ["/api/cpp"], to: "/api" }, - { from: ["/api/cs", "/api/cs/index.html"], to: "/api" } + { from: ["/api/cpp"], to: "/api" } ] } ] diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 6c5edf69..00000000 --- a/docs/index.md +++ /dev/null @@ -1,11 +0,0 @@ -# InfiniFrame Documentation - -InfiniFrame documentation is organized into Guides, Concepts, and API references for both managed and native layers. - -## Sections - -- [Guides](articles/guides/getting-started.md) -- [Packaging Tool Guide](articles/guides/pack-tool.md) -- [Concepts](articles/concepts/breaking-changes-from-photino.md) -- [Generated C# API Reference](api/cs/InfiniFrame.yml) -- [Generated C++ API Reference](api/cpp/native-cpp-reference.md) diff --git a/docs/package-lock.json b/docs/package-lock.json index 4385dff5..43568d7c 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -8,16 +8,16 @@ "name": "infiniframe-docs", "version": "0.1.0", "dependencies": { - "@docusaurus/core": "3.5.2", - "@docusaurus/plugin-client-redirects": "3.5.2", - "@docusaurus/preset-classic": "3.5.2", + "@docusaurus/core": "^3.10.0", + "@docusaurus/plugin-client-redirects": "^3.10.0", + "@docusaurus/preset-classic": "^3.10.0", "clsx": "2.1.1", "prism-react-renderer": "2.4.1", "react": "18.2.0", "react-dom": "18.2.0" }, "devDependencies": { - "@docusaurus/module-type-aliases": "3.5.2", + "@docusaurus/module-type-aliases": "^3.10.0", "@docusaurus/types": "3.5.2", "typescript": "5.6.3", "webpack": "5.94.0" @@ -42,74 +42,37 @@ } }, "node_modules/@algolia/autocomplete-core": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.9.tgz", - "integrity": "sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==", + "version": "1.19.8", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.8.tgz", + "integrity": "sha512-3YEorYg44niXcm7gkft3nXYItHd44e8tmh4D33CTszPgP0QWkaLEaFywiNyJBo7UL/mqObA/G9RYuU7R8tN1IA==", "license": "MIT", "dependencies": { - "@algolia/autocomplete-plugin-algolia-insights": "1.17.9", - "@algolia/autocomplete-shared": "1.17.9" + "@algolia/autocomplete-plugin-algolia-insights": "1.19.8", + "@algolia/autocomplete-shared": "1.19.8" } }, "node_modules/@algolia/autocomplete-plugin-algolia-insights": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.9.tgz", - "integrity": "sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ==", + "version": "1.19.8", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.8.tgz", + "integrity": "sha512-ZvJWO8ZZJDpc1LNM2TTBdmQsZBLMR4rU5iNR2OYvEeFBiaf/0ESnRSSLQbryarJY4SVxtoz6A2ZtDMNM+iQEAA==", "license": "MIT", "dependencies": { - "@algolia/autocomplete-shared": "1.17.9" + "@algolia/autocomplete-shared": "1.19.8" }, "peerDependencies": { "search-insights": ">= 1 < 3" } }, - "node_modules/@algolia/autocomplete-preset-algolia": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.9.tgz", - "integrity": "sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ==", - "license": "MIT", - "dependencies": { - "@algolia/autocomplete-shared": "1.17.9" - }, - "peerDependencies": { - "@algolia/client-search": ">= 4.9.1 < 6", - "algoliasearch": ">= 4.9.1 < 6" - } - }, "node_modules/@algolia/autocomplete-shared": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.9.tgz", - "integrity": "sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ==", + "version": "1.19.8", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.8.tgz", + "integrity": "sha512-h5hf2t8ejF6vlOgvLaZzQbWs5SyH2z4PAWygNAvvD/2RI29hdQ54ldUGwqVuj9Srs+n8XUKTPUqb7fvhBhQrnQ==", "license": "MIT", "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", "algoliasearch": ">= 4.9.1 < 6" } }, - "node_modules/@algolia/cache-browser-local-storage": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.27.0.tgz", - "integrity": "sha512-YGog2s57sO20lvpa+hv5XLAAmiTI1kHsCMRtPVfiaOdIQnvRla21lfH08onqEbZihOPVI8GULwt79zQB2ymKzg==", - "license": "MIT", - "dependencies": { - "@algolia/cache-common": "4.27.0" - } - }, - "node_modules/@algolia/cache-common": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.27.0.tgz", - "integrity": "sha512-Sr8zjNXj82p6lO4W9CdzfF0m0/9h/H6VAdSHOTtimm/cTzXIYXRI2IZq7+Nt2ljJ7Ukx+7dIFcxQjE57eQSPsw==", - "license": "MIT" - }, - "node_modules/@algolia/cache-in-memory": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.27.0.tgz", - "integrity": "sha512-abgMRTcVD0IllNvMM9JFhxtyLn1v6Ey7mQ7+BGS3JCzvkCX7KZqlS0BIuVUDgx9sPIfOeNsG/awGzMmP50TwZw==", - "license": "MIT", - "dependencies": { - "@algolia/cache-common": "4.27.0" - } - }, "node_modules/@algolia/client-abtesting": { "version": "5.50.1", "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.50.1.tgz", @@ -125,69 +88,19 @@ "node": ">= 14.0.0" } }, - "node_modules/@algolia/client-account": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.27.0.tgz", - "integrity": "sha512-sSHxwrKTKJrwfoR/LcQJZfmiWJcM5d9Rp7afMChxOcdGdkSdIwrNBC8SCcHRenA3GsZ6mg+j6px7KWYxJ34btA==", - "license": "MIT", - "dependencies": { - "@algolia/client-common": "4.27.0", - "@algolia/client-search": "4.27.0", - "@algolia/transporter": "4.27.0" - } - }, - "node_modules/@algolia/client-account/node_modules/@algolia/client-common": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.27.0.tgz", - "integrity": "sha512-ZrT6l/YPQgyIUuBCxcYPeXol2VBLUMuNb1rKXrm6z1f/iTiwqtnEEb16/6CC11+Re0ZGXrdcMVrgDRrzveQ1aQ==", - "license": "MIT", - "dependencies": { - "@algolia/requester-common": "4.27.0", - "@algolia/transporter": "4.27.0" - } - }, - "node_modules/@algolia/client-account/node_modules/@algolia/client-search": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.27.0.tgz", - "integrity": "sha512-qmX/f67ay0eZ4V5Io8fWWOcUVo/gqre2yei1PnmEhQU2Gul6ushg25QnNrfu4BODiRrw1rwYveZaLCiHvcUxrQ==", - "license": "MIT", - "dependencies": { - "@algolia/client-common": "4.27.0", - "@algolia/requester-common": "4.27.0", - "@algolia/transporter": "4.27.0" - } - }, "node_modules/@algolia/client-analytics": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.27.0.tgz", - "integrity": "sha512-MqIDyxODljn9ZC4oqjQD0kez2a4zjIJ9ywA/b7cIiUiK/tDjZNTVjYd9WXMKQlXnWUwfrfXJZClVVqN1iCXS+Q==", - "license": "MIT", - "dependencies": { - "@algolia/client-common": "4.27.0", - "@algolia/client-search": "4.27.0", - "@algolia/requester-common": "4.27.0", - "@algolia/transporter": "4.27.0" - } - }, - "node_modules/@algolia/client-analytics/node_modules/@algolia/client-common": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.27.0.tgz", - "integrity": "sha512-ZrT6l/YPQgyIUuBCxcYPeXol2VBLUMuNb1rKXrm6z1f/iTiwqtnEEb16/6CC11+Re0ZGXrdcMVrgDRrzveQ1aQ==", - "license": "MIT", - "dependencies": { - "@algolia/requester-common": "4.27.0", - "@algolia/transporter": "4.27.0" - } - }, - "node_modules/@algolia/client-analytics/node_modules/@algolia/client-search": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.27.0.tgz", - "integrity": "sha512-qmX/f67ay0eZ4V5Io8fWWOcUVo/gqre2yei1PnmEhQU2Gul6ushg25QnNrfu4BODiRrw1rwYveZaLCiHvcUxrQ==", + "version": "5.50.1", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.50.1.tgz", + "integrity": "sha512-i+aWHHG8NZvGFHtPeMZkxL2Loc6Fm7iaRo15lYSMx8gFL+at9vgdWxhka7mD1fqxkrxXsQstUBCIsSY8FvkEOw==", "license": "MIT", "dependencies": { - "@algolia/client-common": "4.27.0", - "@algolia/requester-common": "4.27.0", - "@algolia/transporter": "4.27.0" + "@algolia/client-common": "5.50.1", + "@algolia/requester-browser-xhr": "5.50.1", + "@algolia/requester-fetch": "5.50.1", + "@algolia/requester-node-http": "5.50.1" + }, + "engines": { + "node": ">= 14.0.0" } }, "node_modules/@algolia/client-common": { @@ -215,24 +128,18 @@ } }, "node_modules/@algolia/client-personalization": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.27.0.tgz", - "integrity": "sha512-OZqaFFVm+10hAlmxpiTWi/o2n+YKBESbSqSy2yXAumPH/kaK4moJHFblbh8IkV3KZR0lLm4hzPtn8Q2nWNiDUA==", - "license": "MIT", - "dependencies": { - "@algolia/client-common": "4.27.0", - "@algolia/requester-common": "4.27.0", - "@algolia/transporter": "4.27.0" - } - }, - "node_modules/@algolia/client-personalization/node_modules/@algolia/client-common": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.27.0.tgz", - "integrity": "sha512-ZrT6l/YPQgyIUuBCxcYPeXol2VBLUMuNb1rKXrm6z1f/iTiwqtnEEb16/6CC11+Re0ZGXrdcMVrgDRrzveQ1aQ==", + "version": "5.50.1", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.50.1.tgz", + "integrity": "sha512-0V4Tu0RWR8YxkgI9EPVOZHGE4K5pEIhkLNN0CTkP/rnPsqaaSQpNMYW3/mGWdiKOWbX0iVmwLB9QESk3H0jS5g==", "license": "MIT", "dependencies": { - "@algolia/requester-common": "4.27.0", - "@algolia/transporter": "4.27.0" + "@algolia/client-common": "5.50.1", + "@algolia/requester-browser-xhr": "5.50.1", + "@algolia/requester-fetch": "5.50.1", + "@algolia/requester-node-http": "5.50.1" + }, + "engines": { + "node": ">= 14.0.0" } }, "node_modules/@algolia/client-query-suggestions": { @@ -286,21 +193,6 @@ "node": ">= 14.0.0" } }, - "node_modules/@algolia/logger-common": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.27.0.tgz", - "integrity": "sha512-pIrmQRXtDV+zTMVXKtKCosC2rWhn0F0TdUeb9etA6RiAz6jY6bY6f0+JX7YekDK09SnmZMLIyUa7Jci+Ied9bw==", - "license": "MIT" - }, - "node_modules/@algolia/logger-console": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.27.0.tgz", - "integrity": "sha512-UWvta8BxsR/u5z9eI088mOSLQaGtmoCtXeN3DYJurlxAdJwPuKtEb5+433kxA6/E9f2/JgoW89KZ1vNP9pcHBQ==", - "license": "MIT", - "dependencies": { - "@algolia/logger-common": "4.27.0" - } - }, "node_modules/@algolia/monitoring": { "version": "1.50.1", "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.50.1.tgz", @@ -317,61 +209,18 @@ } }, "node_modules/@algolia/recommend": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.27.0.tgz", - "integrity": "sha512-CFy54xDjrsazPi3KN04yPmLRDT72AKokc3RLOdWQvG0/uEUjj7dhWqe9qenxpL4ydsjO7S1eY5YqmX+uMGonlg==", - "license": "MIT", - "dependencies": { - "@algolia/cache-browser-local-storage": "4.27.0", - "@algolia/cache-common": "4.27.0", - "@algolia/cache-in-memory": "4.27.0", - "@algolia/client-common": "4.27.0", - "@algolia/client-search": "4.27.0", - "@algolia/logger-common": "4.27.0", - "@algolia/logger-console": "4.27.0", - "@algolia/requester-browser-xhr": "4.27.0", - "@algolia/requester-common": "4.27.0", - "@algolia/requester-node-http": "4.27.0", - "@algolia/transporter": "4.27.0" - } - }, - "node_modules/@algolia/recommend/node_modules/@algolia/client-common": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.27.0.tgz", - "integrity": "sha512-ZrT6l/YPQgyIUuBCxcYPeXol2VBLUMuNb1rKXrm6z1f/iTiwqtnEEb16/6CC11+Re0ZGXrdcMVrgDRrzveQ1aQ==", - "license": "MIT", - "dependencies": { - "@algolia/requester-common": "4.27.0", - "@algolia/transporter": "4.27.0" - } - }, - "node_modules/@algolia/recommend/node_modules/@algolia/client-search": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.27.0.tgz", - "integrity": "sha512-qmX/f67ay0eZ4V5Io8fWWOcUVo/gqre2yei1PnmEhQU2Gul6ushg25QnNrfu4BODiRrw1rwYveZaLCiHvcUxrQ==", - "license": "MIT", - "dependencies": { - "@algolia/client-common": "4.27.0", - "@algolia/requester-common": "4.27.0", - "@algolia/transporter": "4.27.0" - } - }, - "node_modules/@algolia/recommend/node_modules/@algolia/requester-browser-xhr": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.27.0.tgz", - "integrity": "sha512-dTenMBIIpyp5o3C2ZnfbsuSlD/lL9jPkk6T+2+qm38fyw2nf49ANbcHFE79NgiGrnmw7QrYveCs9NIP3Wk4v6g==", - "license": "MIT", - "dependencies": { - "@algolia/requester-common": "4.27.0" - } - }, - "node_modules/@algolia/recommend/node_modules/@algolia/requester-node-http": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.27.0.tgz", - "integrity": "sha512-y8nUqaUQeSOQ5oaNo0b2QPznyBFW9LoIwljyUphJ+gUZpU6O/j2/C8ovoqDpIe6J0etqHg5RCcBizrCFZuLpyw==", + "version": "5.50.1", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.50.1.tgz", + "integrity": "sha512-Cp8T/B0gVmjFlzzp6eP47hwKh5FGyeqQp1N48/ANDdvdiQkPqLyFHQVDwLBH0LddfIPQE+yqmZIgmKc82haF4A==", "license": "MIT", "dependencies": { - "@algolia/requester-common": "4.27.0" + "@algolia/client-common": "5.50.1", + "@algolia/requester-browser-xhr": "5.50.1", + "@algolia/requester-fetch": "5.50.1", + "@algolia/requester-node-http": "5.50.1" + }, + "engines": { + "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-browser-xhr": { @@ -386,12 +235,6 @@ "node": ">= 14.0.0" } }, - "node_modules/@algolia/requester-common": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.27.0.tgz", - "integrity": "sha512-VC3prAQVgWTubMStb3mJz6i61Hqbtagi2LeIbgNtoFJFff3XZDcAaO1D5r0GYl2+DrB2VzUHnQXbkiuI+HHYyg==", - "license": "MIT" - }, "node_modules/@algolia/requester-fetch": { "version": "5.50.1", "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.50.1.tgz", @@ -416,17 +259,6 @@ "node": ">= 14.0.0" } }, - "node_modules/@algolia/transporter": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.27.0.tgz", - "integrity": "sha512-PvSbELU4VjN3xSX79ki+zIdOGhTxyJXWvRDzkUjfTx2iNfPWDdTjzKbP1o+268coJztxrkuBwJz90Urek7o1Kw==", - "license": "MIT", - "dependencies": { - "@algolia/cache-common": "4.27.0", - "@algolia/logger-common": "4.27.0", - "@algolia/requester-common": "4.27.0" - } - }, "node_modules/@babel/code-frame": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", @@ -2083,18 +1915,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.29.2.tgz", - "integrity": "sha512-Lc94FOD5+0aXhdb0Tdg3RUtqT6yWbI/BbFWvlaSJ3gAb9Ks+99nHRDKADVqC37er4eCB0fHyWT+y+K3QOvJKbw==", - "license": "MIT", - "dependencies": { - "core-js-pure": "^3.48.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/template": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", @@ -2150,565 +1970,2256 @@ "node": ">=0.1.90" } }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "node_modules/@csstools/cascade-layer-name-parser": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.5.tgz", + "integrity": "sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@docsearch/css": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.9.0.tgz", - "integrity": "sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA==", - "license": "MIT" - }, - "node_modules/@docsearch/react": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.9.0.tgz", - "integrity": "sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ==", - "license": "MIT", - "dependencies": { - "@algolia/autocomplete-core": "1.17.9", - "@algolia/autocomplete-preset-algolia": "1.17.9", - "@docsearch/css": "3.9.0", - "algoliasearch": "^5.14.2" + "node": ">=18" }, "peerDependencies": { - "@types/react": ">= 16.8.0 < 20.0.0", - "react": ">= 16.8.0 < 20.0.0", - "react-dom": ">= 16.8.0 < 20.0.0", - "search-insights": ">= 1 < 3" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" }, - "search-insights": { - "optional": true + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" } }, - "node_modules/@docsearch/react/node_modules/@algolia/client-analytics": { - "version": "5.50.1", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.50.1.tgz", - "integrity": "sha512-i+aWHHG8NZvGFHtPeMZkxL2Loc6Fm7iaRo15lYSMx8gFL+at9vgdWxhka7mD1fqxkrxXsQstUBCIsSY8FvkEOw==", + "node_modules/@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", - "dependencies": { - "@algolia/client-common": "5.50.1", - "@algolia/requester-browser-xhr": "5.50.1", - "@algolia/requester-fetch": "5.50.1", - "@algolia/requester-node-http": "5.50.1" - }, "engines": { - "node": ">= 14.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, - "node_modules/@docsearch/react/node_modules/@algolia/client-personalization": { - "version": "5.50.1", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.50.1.tgz", - "integrity": "sha512-0V4Tu0RWR8YxkgI9EPVOZHGE4K5pEIhkLNN0CTkP/rnPsqaaSQpNMYW3/mGWdiKOWbX0iVmwLB9QESk3H0jS5g==", + "node_modules/@csstools/css-color-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", "dependencies": { - "@algolia/client-common": "5.50.1", - "@algolia/requester-browser-xhr": "5.50.1", - "@algolia/requester-fetch": "5.50.1", - "@algolia/requester-node-http": "5.50.1" + "@csstools/color-helpers": "^5.1.0", + "@csstools/css-calc": "^2.1.4" }, "engines": { - "node": ">= 14.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, - "node_modules/@docsearch/react/node_modules/@algolia/recommend": { - "version": "5.50.1", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.50.1.tgz", - "integrity": "sha512-Cp8T/B0gVmjFlzzp6eP47hwKh5FGyeqQp1N48/ANDdvdiQkPqLyFHQVDwLBH0LddfIPQE+yqmZIgmKc82haF4A==", + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", - "dependencies": { - "@algolia/client-common": "5.50.1", - "@algolia/requester-browser-xhr": "5.50.1", - "@algolia/requester-fetch": "5.50.1", - "@algolia/requester-node-http": "5.50.1" - }, "engines": { - "node": ">= 14.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.4" } }, - "node_modules/@docsearch/react/node_modules/algoliasearch": { - "version": "5.50.1", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.50.1.tgz", - "integrity": "sha512-/bwdue1/8LWELn/DBalGRfuLsXBLXULJo/yOeavJtDu8rBwxIzC6/Rz9Jg19S21VkJvRuZO1k8CZXBMS73mYbA==", + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", - "dependencies": { - "@algolia/abtesting": "1.16.1", - "@algolia/client-abtesting": "5.50.1", - "@algolia/client-analytics": "5.50.1", - "@algolia/client-common": "5.50.1", - "@algolia/client-insights": "5.50.1", - "@algolia/client-personalization": "5.50.1", - "@algolia/client-query-suggestions": "5.50.1", - "@algolia/client-search": "5.50.1", - "@algolia/ingestion": "1.50.1", - "@algolia/monitoring": "1.50.1", - "@algolia/recommend": "5.50.1", - "@algolia/requester-browser-xhr": "5.50.1", - "@algolia/requester-fetch": "5.50.1", - "@algolia/requester-node-http": "5.50.1" - }, "engines": { - "node": ">= 14.0.0" + "node": ">=18" } }, - "node_modules/@docusaurus/core": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.5.2.tgz", - "integrity": "sha512-4Z1WkhCSkX4KO0Fw5m/Vuc7Q3NxBG53NE5u59Rs96fWkMPZVSrzEPP16/Nk6cWb/shK7xXPndTmalJtw7twL/w==", - "license": "MIT", + "node_modules/@csstools/media-query-list-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz", + "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/postcss-alpha-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-alpha-function/-/postcss-alpha-function-1.0.1.tgz", + "integrity": "sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.2.tgz", + "integrity": "sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-cascade-layers/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/@csstools/postcss-cascade-layers/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.12.tgz", + "integrity": "sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-function-display-p3-linear": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-1.0.1.tgz", + "integrity": "sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-mix-function": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.12.tgz", + "integrity": "sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-mix-variadic-function-arguments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.2.tgz", + "integrity": "sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-content-alt-text": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.8.tgz", + "integrity": "sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-contrast-color-function": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-2.0.12.tgz", + "integrity": "sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-exponential-functions": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.9.tgz", + "integrity": "sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-4.0.0.tgz", + "integrity": "sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gamut-mapping": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.11.tgz", + "integrity": "sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gradients-interpolation-method": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.12.tgz", + "integrity": "sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.12.tgz", + "integrity": "sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.4.tgz", + "integrity": "sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-initial": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-2.0.1.tgz", + "integrity": "sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.3.tgz", + "integrity": "sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@csstools/postcss-light-dark-function": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.11.tgz", + "integrity": "sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-float-and-clear": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-3.0.0.tgz", + "integrity": "sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overflow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-2.0.0.tgz", + "integrity": "sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overscroll-behavior": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-2.0.0.tgz", + "integrity": "sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-resize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-3.0.0.tgz", + "integrity": "sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-viewport-units": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.4.tgz", + "integrity": "sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-minmax": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.9.tgz", + "integrity": "sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.5.tgz", + "integrity": "sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-4.0.0.tgz", + "integrity": "sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz", + "integrity": "sha512-TQUGBuRvxdc7TgNSTevYqrL8oItxiwPDixk20qCB5me/W8uF7BPbhRrAvFuhEoywQp/woRsUZ6SJ+sU5idZAIA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.12.tgz", + "integrity": "sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-position-area-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-position-area-property/-/postcss-position-area-property-1.0.0.tgz", + "integrity": "sha512-fUP6KR8qV2NuUZV3Cw8itx0Ep90aRjAZxAEzC3vrl6yjFv+pFsQbR18UuQctEKmA72K9O27CoYiKEgXxkqjg8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz", + "integrity": "sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-property-rule-prelude-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-property-rule-prelude-list/-/postcss-property-rule-prelude-list-1.0.0.tgz", + "integrity": "sha512-IxuQjUXq19fobgmSSvUDO7fVwijDJaZMvWQugxfEUxmjBeDCVaDuMpsZ31MsTm5xbnhA+ElDi0+rQ7sQQGisFA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-random-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-2.0.1.tgz", + "integrity": "sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-relative-color-syntax": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.12.tgz", + "integrity": "sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-scope-pseudo-class": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-4.0.1.tgz", + "integrity": "sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-scope-pseudo-class/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@csstools/postcss-sign-functions": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.4.tgz", + "integrity": "sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.9.tgz", + "integrity": "sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-syntax-descriptor-syntax-production": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-syntax-descriptor-syntax-production/-/postcss-syntax-descriptor-syntax-production-1.0.1.tgz", + "integrity": "sha512-GneqQWefjM//f4hJ/Kbox0C6f2T7+pi4/fqTqOFGTL3EjnvOReTqO1qUQ30CaUjkwjYq9qZ41hzarrAxCc4gow==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-system-ui-font-family": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-system-ui-font-family/-/postcss-system-ui-font-family-1.0.0.tgz", + "integrity": "sha512-s3xdBvfWYfoPSBsikDXbuorcMG1nN1M6GdU0qBsGfcmNR0A/qhloQZpTxjA3Xsyrk1VJvwb2pOfiOT3at/DuIQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.3.tgz", + "integrity": "sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/color-helpers": "^5.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.9.tgz", + "integrity": "sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-4.0.0.tgz", + "integrity": "sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/utilities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/utilities/-/utilities-2.0.0.tgz", + "integrity": "sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@docsearch/core": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@docsearch/core/-/core-4.6.2.tgz", + "integrity": "sha512-/S0e6Dj7Zcm8m9Rru49YEX49dhU11be68c+S/BCyN8zQsTTgkKzXlhRbVL5mV6lOLC2+ZRRryaTdcm070Ug2oA==", + "license": "MIT", + "peerDependencies": { + "@types/react": ">= 16.8.0 < 20.0.0", + "react": ">= 16.8.0 < 20.0.0", + "react-dom": ">= 16.8.0 < 20.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@docsearch/css": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-4.6.2.tgz", + "integrity": "sha512-fH/cn8BjEEdM2nJdjNMHIvOVYupG6AIDtFVDgIZrNzdCSj4KXr9kd+hsehqsNGYjpUjObeKYKvgy/IwCb1jZYQ==", + "license": "MIT" + }, + "node_modules/@docsearch/react": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-4.6.2.tgz", + "integrity": "sha512-/BbtGFtqVOGwZx0dw/UfhN/0/DmMQYnulY4iv0tPRhC2JCXv0ka/+izwt3Jzo1ZxXS/2eMvv9zHsBJOK1I9f/w==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-core": "1.19.2", + "@docsearch/core": "4.6.2", + "@docsearch/css": "4.6.2" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 20.0.0", + "react": ">= 16.8.0 < 20.0.0", + "react-dom": ">= 16.8.0 < 20.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@docsearch/react/node_modules/@algolia/autocomplete-core": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.2.tgz", + "integrity": "sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.19.2", + "@algolia/autocomplete-shared": "1.19.2" + } + }, + "node_modules/@docsearch/react/node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.2.tgz", + "integrity": "sha512-TjxbcC/r4vwmnZaPwrHtkXNeqvlpdyR+oR9Wi2XyfORkiGkLTVhX2j+O9SaCCINbKoDfc+c2PB8NjfOnz7+oKg==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.19.2" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@docsearch/react/node_modules/@algolia/autocomplete-shared": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.2.tgz", + "integrity": "sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w==", + "license": "MIT", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@docusaurus/babel": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.10.0.tgz", + "integrity": "sha512-mqCJhCZNZUDg0zgDEaPTM4DnRsisa24HdqTy/qn/MQlbwhTb4WVaZg6ZyX6yIVKqTz8fS1hBMgM+98z+BeJJDg==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.25.9", + "@babel/preset-env": "^7.25.9", + "@babel/preset-react": "^7.25.9", + "@babel/preset-typescript": "^7.25.9", + "@babel/runtime": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@docusaurus/logger": "3.10.0", + "@docusaurus/utils": "3.10.0", + "babel-plugin-dynamic-import-node": "^2.3.3", + "fs-extra": "^11.1.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/bundler": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.10.0.tgz", + "integrity": "sha512-iONUGZGgp+lAkw/cJZH6irONcF4p8+278IsdRlq8lYhxGjkoNUs0w7F4gVXBYSNChq5KG5/JleTSsdJySShxow==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.9", + "@docusaurus/babel": "3.10.0", + "@docusaurus/cssnano-preset": "3.10.0", + "@docusaurus/logger": "3.10.0", + "@docusaurus/types": "3.10.0", + "@docusaurus/utils": "3.10.0", + "babel-loader": "^9.2.1", + "clean-css": "^5.3.3", + "copy-webpack-plugin": "^11.0.0", + "css-loader": "^6.11.0", + "css-minimizer-webpack-plugin": "^5.0.1", + "cssnano": "^6.1.2", + "file-loader": "^6.2.0", + "html-minifier-terser": "^7.2.0", + "mini-css-extract-plugin": "^2.9.2", + "null-loader": "^4.0.1", + "postcss": "^8.5.4", + "postcss-loader": "^7.3.4", + "postcss-preset-env": "^10.2.1", + "terser-webpack-plugin": "^5.3.9", + "tslib": "^2.6.0", + "url-loader": "^4.1.1", + "webpack": "^5.95.0", + "webpackbar": "^6.0.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "@docusaurus/faster": "*" + }, + "peerDependenciesMeta": { + "@docusaurus/faster": { + "optional": true + } + } + }, + "node_modules/@docusaurus/bundler/node_modules/@docusaurus/cssnano-preset": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.10.0.tgz", + "integrity": "sha512-qzSshTO1DB3TYW+dPUal5KHM7XPc5YQfzF3Kdb2NDACJUyGbNcFtw3tGkCJlYwhNCRKbZcmwraKUS1i5dcHdGg==", + "license": "MIT", + "dependencies": { + "cssnano-preset-advanced": "^6.1.2", + "postcss": "^8.5.4", + "postcss-sort-media-queries": "^5.2.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/bundler/node_modules/@docusaurus/types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", + "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.95.0", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/core": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.10.0.tgz", + "integrity": "sha512-mgLdQsO8xppnQZc3LPi+Mf+PkPeyxJeIx11AXAq/14fsaMefInQiMEZUUmrc7J+956G/f7MwE7tn8KZgi3iRcA==", + "license": "MIT", "dependencies": { - "@babel/core": "^7.23.3", - "@babel/generator": "^7.23.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.22.9", - "@babel/preset-env": "^7.22.9", - "@babel/preset-react": "^7.22.5", - "@babel/preset-typescript": "^7.22.5", - "@babel/runtime": "^7.22.6", - "@babel/runtime-corejs3": "^7.22.6", - "@babel/traverse": "^7.22.8", - "@docusaurus/cssnano-preset": "3.5.2", - "@docusaurus/logger": "3.5.2", - "@docusaurus/mdx-loader": "3.5.2", - "@docusaurus/utils": "3.5.2", - "@docusaurus/utils-common": "3.5.2", - "@docusaurus/utils-validation": "3.5.2", - "autoprefixer": "^10.4.14", - "babel-loader": "^9.1.3", - "babel-plugin-dynamic-import-node": "^2.3.3", + "@docusaurus/babel": "3.10.0", + "@docusaurus/bundler": "3.10.0", + "@docusaurus/logger": "3.10.0", + "@docusaurus/mdx-loader": "3.10.0", + "@docusaurus/utils": "3.10.0", + "@docusaurus/utils-common": "3.10.0", + "@docusaurus/utils-validation": "3.10.0", "boxen": "^6.2.1", "chalk": "^4.1.2", "chokidar": "^3.5.3", - "clean-css": "^5.3.2", "cli-table3": "^0.6.3", "combine-promises": "^1.1.0", "commander": "^5.1.0", - "copy-webpack-plugin": "^11.0.0", "core-js": "^3.31.1", - "css-loader": "^6.8.1", - "css-minimizer-webpack-plugin": "^5.0.1", - "cssnano": "^6.1.2", - "del": "^6.1.1", "detect-port": "^1.5.1", "escape-html": "^1.0.3", "eta": "^2.2.0", "eval": "^0.1.8", - "file-loader": "^6.2.0", + "execa": "^5.1.1", "fs-extra": "^11.1.1", - "html-minifier-terser": "^7.2.0", "html-tags": "^3.3.1", - "html-webpack-plugin": "^5.5.3", + "html-webpack-plugin": "^5.6.0", "leven": "^3.1.0", "lodash": "^4.17.21", - "mini-css-extract-plugin": "^2.7.6", + "open": "^8.4.0", "p-map": "^4.0.0", - "postcss": "^8.4.26", - "postcss-loader": "^7.3.3", "prompts": "^2.4.2", - "react-dev-utils": "^12.0.1", - "react-helmet-async": "^1.3.0", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "react-loadable": "npm:@docusaurus/react-loadable@6.0.0", - "react-loadable-ssr-addon-v5-slorber": "^1.0.1", + "react-loadable-ssr-addon-v5-slorber": "^1.0.3", "react-router": "^5.3.4", "react-router-config": "^5.1.1", "react-router-dom": "^5.3.4", - "rtl-detect": "^1.0.4", "semver": "^7.5.4", - "serve-handler": "^6.1.5", - "shelljs": "^0.8.5", - "terser-webpack-plugin": "^5.3.9", + "serve-handler": "^6.1.7", + "tinypool": "^1.0.2", "tslib": "^2.6.0", "update-notifier": "^6.0.2", - "url-loader": "^4.1.1", - "webpack": "^5.88.1", - "webpack-bundle-analyzer": "^4.9.0", - "webpack-dev-server": "^4.15.1", - "webpack-merge": "^5.9.0", - "webpackbar": "^5.0.2" + "webpack": "^5.95.0", + "webpack-bundle-analyzer": "^4.10.2", + "webpack-dev-server": "^5.2.2", + "webpack-merge": "^6.0.1" }, "bin": { "docusaurus": "bin/docusaurus.mjs" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { + "@docusaurus/faster": "*", "@mdx-js/react": "^3.0.0", - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@docusaurus/faster": { + "optional": true + } } }, - "node_modules/@docusaurus/cssnano-preset": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.5.2.tgz", - "integrity": "sha512-D3KiQXOMA8+O0tqORBrTOEQyQxNIfPm9jEaJoALjjSjc2M/ZAWcUfPQEnwr2JB2TadHw2gqWgpZckQmrVWkytA==", + "node_modules/@docusaurus/core/node_modules/webpack-merge": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", "license": "MIT", "dependencies": { - "cssnano-preset-advanced": "^6.1.2", - "postcss": "^8.4.38", - "postcss-sort-media-queries": "^5.2.0", + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@docusaurus/logger": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.10.0.tgz", + "integrity": "sha512-9jrZzFuBH1LDRlZ7cznAhCLmAZ3HSDqgwdrSSZdGHq9SPUOQgXXu8mnxe2ZRB9NS1PCpMTIOVUqDtZPIhMafZg==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/mdx-loader": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.10.0.tgz", + "integrity": "sha512-mQQV97080AH4PYNs087l202NMDqRopZA4mg5W76ZZyTFrmWhJ3mHg+8A+drJVENxw5/Q+wHMHLgsx+9z1nEs0A==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.10.0", + "@docusaurus/utils": "3.10.0", + "@docusaurus/utils-validation": "3.10.0", + "@mdx-js/mdx": "^3.0.0", + "@slorber/remark-comment": "^1.0.0", + "escape-html": "^1.0.3", + "estree-util-value-to-estree": "^3.0.1", + "file-loader": "^6.2.0", + "fs-extra": "^11.1.1", + "image-size": "^2.0.2", + "mdast-util-mdx": "^3.0.0", + "mdast-util-to-string": "^4.0.0", + "rehype-raw": "^7.0.0", + "remark-directive": "^3.0.0", + "remark-emoji": "^4.0.0", + "remark-frontmatter": "^5.0.0", + "remark-gfm": "^4.0.0", + "stringify-object": "^3.3.0", + "tslib": "^2.6.0", + "unified": "^11.0.3", + "unist-util-visit": "^5.0.0", + "url-loader": "^4.1.1", + "vfile": "^6.0.1", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/module-type-aliases": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.10.0.tgz", + "integrity": "sha512-/1O0Zg8w3DFrYX/I6Fbss7OJrtZw1QoyjDhegiFNHVi9A9Y0gQ3jUAytVxF6ywpAWpLyLxch8nN8H/V3XfzdJQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/types": "3.10.0", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "@types/react-router-dom": "*", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "react-loadable": "npm:@docusaurus/react-loadable@6.0.0" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@docusaurus/module-type-aliases/node_modules/@docusaurus/types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", + "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.95.0", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-client-redirects": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.10.0.tgz", + "integrity": "sha512-P+VLoLoZTc74so8+IbsaPZ33/mkf2BWL1CYXQpPRkl0v1QVCN2CgfsZY/8QtbYjQnx2upXUnv45abDhNcSggNw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.0", + "@docusaurus/logger": "3.10.0", + "@docusaurus/utils": "3.10.0", + "@docusaurus/utils-common": "3.10.0", + "@docusaurus/utils-validation": "3.10.0", + "eta": "^2.2.0", + "fs-extra": "^11.1.1", + "lodash": "^4.17.21", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-blog": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.10.0.tgz", + "integrity": "sha512-RuTz68DhB7CL96QO5UsFbciD7GPYq6QV+YMfF9V0+N4ZgLhJIBgpVAr8GobrKF6NRe5cyWWETU5z5T834piG9g==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.0", + "@docusaurus/logger": "3.10.0", + "@docusaurus/mdx-loader": "3.10.0", + "@docusaurus/theme-common": "3.10.0", + "@docusaurus/types": "3.10.0", + "@docusaurus/utils": "3.10.0", + "@docusaurus/utils-common": "3.10.0", + "@docusaurus/utils-validation": "3.10.0", + "cheerio": "1.0.0-rc.12", + "combine-promises": "^1.1.0", + "feed": "^4.2.2", + "fs-extra": "^11.1.1", + "lodash": "^4.17.21", + "schema-dts": "^1.1.2", + "srcset": "^4.0.0", + "tslib": "^2.6.0", + "unist-util-visit": "^5.0.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "@docusaurus/plugin-content-docs": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-blog/node_modules/@docusaurus/types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", + "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.95.0", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-docs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.10.0.tgz", + "integrity": "sha512-9BjHhf15ct8Z7TThTC0xRndKDVvMKmVsAGAN7W9FpNRzfMdScOGcXtLmcCWtJGvAezjOJIm6CxOYCy3Io5+RnQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.0", + "@docusaurus/logger": "3.10.0", + "@docusaurus/mdx-loader": "3.10.0", + "@docusaurus/module-type-aliases": "3.10.0", + "@docusaurus/theme-common": "3.10.0", + "@docusaurus/types": "3.10.0", + "@docusaurus/utils": "3.10.0", + "@docusaurus/utils-common": "3.10.0", + "@docusaurus/utils-validation": "3.10.0", + "@types/react-router-config": "^5.0.7", + "combine-promises": "^1.1.0", + "fs-extra": "^11.1.1", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "schema-dts": "^1.1.2", + "tslib": "^2.6.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-docs/node_modules/@docusaurus/types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", + "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.95.0", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-pages": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.10.0.tgz", + "integrity": "sha512-5amX8kEJI+nIGtuLVjYk59Y5utEJ3CHETFOPEE4cooIRLA4xM4iBsA6zFgu4ljcopeYwvBzFEWf5g2I6Yb9SkA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.0", + "@docusaurus/mdx-loader": "3.10.0", + "@docusaurus/types": "3.10.0", + "@docusaurus/utils": "3.10.0", + "@docusaurus/utils-validation": "3.10.0", + "fs-extra": "^11.1.1", + "tslib": "^2.6.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-pages/node_modules/@docusaurus/types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", + "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.95.0", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-css-cascade-layers": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.10.0.tgz", + "integrity": "sha512-6q1vtt5FJcg5osgkHeM1euErECNqEZ5Z1j69yiNx2luEBIso+nxCkS9nqj8w+MK5X7rvKEToGhFfOFWncs51pQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.0", + "@docusaurus/types": "3.10.0", + "@docusaurus/utils": "3.10.0", + "@docusaurus/utils-validation": "3.10.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/plugin-css-cascade-layers/node_modules/@docusaurus/types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", + "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.95.0", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-debug": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.10.0.tgz", + "integrity": "sha512-XcljKN+G+nmmK69uQA1d9BlYU3ZftG3T3zpK8/7Hf/wrOlV7TA4Ampdrdwkg0jElKdKAoSnPhCO0/U3bQGsVQQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.0", + "@docusaurus/types": "3.10.0", + "@docusaurus/utils": "3.10.0", + "fs-extra": "^11.1.1", + "react-json-view-lite": "^2.3.0", "tslib": "^2.6.0" }, - "engines": { - "node": ">=18.0" + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/logger": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.5.2.tgz", - "integrity": "sha512-LHC540SGkeLfyT3RHK3gAMK6aS5TRqOD4R72BEU/DE2M/TY8WwEUAMY576UUc/oNJXv8pGhBmQB6N9p3pt8LQw==", + "node_modules/@docusaurus/plugin-debug/node_modules/@docusaurus/types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", + "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", "license": "MIT", "dependencies": { - "chalk": "^4.1.2", - "tslib": "^2.6.0" + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.95.0", + "webpack-merge": "^5.9.0" }, - "engines": { - "node": ">=18.0" + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/mdx-loader": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.5.2.tgz", - "integrity": "sha512-ku3xO9vZdwpiMIVd8BzWV0DCqGEbCP5zs1iHfKX50vw6jX8vQo0ylYo1YJMZyz6e+JFJ17HYHT5FzVidz2IflA==", + "node_modules/@docusaurus/plugin-google-analytics": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.10.0.tgz", + "integrity": "sha512-hTEoodatpBZnUat5nFExbuTGA1lhWGy7vZGuTew5Q3QDtGKFpSJLYmZJhdTjvCFwv1+qQ67hgAVlKdJOB8TXow==", "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.5.2", - "@docusaurus/utils": "3.5.2", - "@docusaurus/utils-validation": "3.5.2", - "@mdx-js/mdx": "^3.0.0", - "@slorber/remark-comment": "^1.0.0", - "escape-html": "^1.0.3", - "estree-util-value-to-estree": "^3.0.1", - "file-loader": "^6.2.0", - "fs-extra": "^11.1.1", - "image-size": "^1.0.2", - "mdast-util-mdx": "^3.0.0", - "mdast-util-to-string": "^4.0.0", - "rehype-raw": "^7.0.0", - "remark-directive": "^3.0.0", - "remark-emoji": "^4.0.0", - "remark-frontmatter": "^5.0.0", - "remark-gfm": "^4.0.0", - "stringify-object": "^3.3.0", - "tslib": "^2.6.0", - "unified": "^11.0.3", - "unist-util-visit": "^5.0.0", - "url-loader": "^4.1.1", - "vfile": "^6.0.1", - "webpack": "^5.88.1" + "@docusaurus/core": "3.10.0", + "@docusaurus/types": "3.10.0", + "@docusaurus/utils-validation": "3.10.0", + "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/module-type-aliases": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.5.2.tgz", - "integrity": "sha512-Z+Xu3+2rvKef/YKTMxZHsEXp1y92ac0ngjDiExRdqGTmEKtCUpkbNYH8v5eXo5Ls+dnW88n6WTa+Q54kLOkwPg==", + "node_modules/@docusaurus/plugin-google-analytics/node_modules/@docusaurus/types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", + "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", "license": "MIT", "dependencies": { - "@docusaurus/types": "3.5.2", + "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", "@types/react": "*", - "@types/react-router-config": "*", - "@types/react-router-dom": "*", - "react-helmet-async": "*", - "react-loadable": "npm:@docusaurus/react-loadable@6.0.0" + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.95.0", + "webpack-merge": "^5.9.0" }, "peerDependencies": { - "react": "*", - "react-dom": "*" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/plugin-client-redirects": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.5.2.tgz", - "integrity": "sha512-GMU0ZNoVG1DEsZlBbwLPdh0iwibrVZiRfmdppvX17SnByCVP74mb/Nne7Ss7ALgxQLtM4IHbXi8ij90VVjAJ+Q==", + "node_modules/@docusaurus/plugin-google-gtag": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.10.0.tgz", + "integrity": "sha512-iB/Zzjv/eelJRbdULZqzWCbgMgJ7ht4ONVjXtN3+BI/muil6S87gQ1OJyPwlXD+ELdKkitC7bWv5eJdYOZLhrQ==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.5.2", - "@docusaurus/logger": "3.5.2", - "@docusaurus/utils": "3.5.2", - "@docusaurus/utils-common": "3.5.2", - "@docusaurus/utils-validation": "3.5.2", - "eta": "^2.2.0", - "fs-extra": "^11.1.1", - "lodash": "^4.17.21", + "@docusaurus/core": "3.10.0", + "@docusaurus/types": "3.10.0", + "@docusaurus/utils-validation": "3.10.0", + "@types/gtag.js": "^0.0.20", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/plugin-content-blog": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.5.2.tgz", - "integrity": "sha512-R7ghWnMvjSf+aeNDH0K4fjyQnt5L0KzUEnUhmf1e3jZrv3wogeytZNN6n7X8yHcMsuZHPOrctQhXWnmxu+IRRg==", + "node_modules/@docusaurus/plugin-google-gtag/node_modules/@docusaurus/types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", + "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.5.2", - "@docusaurus/logger": "3.5.2", - "@docusaurus/mdx-loader": "3.5.2", - "@docusaurus/theme-common": "3.5.2", - "@docusaurus/types": "3.5.2", - "@docusaurus/utils": "3.5.2", - "@docusaurus/utils-common": "3.5.2", - "@docusaurus/utils-validation": "3.5.2", - "cheerio": "1.0.0-rc.12", - "feed": "^4.2.2", - "fs-extra": "^11.1.1", - "lodash": "^4.17.21", - "reading-time": "^1.5.0", - "srcset": "^4.0.0", - "tslib": "^2.6.0", - "unist-util-visit": "^5.0.0", + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "utility-types": "^3.10.0", - "webpack": "^5.88.1" - }, - "engines": { - "node": ">=18.0" + "webpack": "^5.95.0", + "webpack-merge": "^5.9.0" }, "peerDependencies": { - "@docusaurus/plugin-content-docs": "*", - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/plugin-content-docs": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.5.2.tgz", - "integrity": "sha512-Bt+OXn/CPtVqM3Di44vHjE7rPCEsRCB/DMo2qoOuozB9f7+lsdrHvD0QCHdBs0uhz6deYJDppAr2VgqybKPlVQ==", + "node_modules/@docusaurus/plugin-google-tag-manager": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.10.0.tgz", + "integrity": "sha512-FEjZxqKgLHa+Wez/EgKxRwvArNCWIScfyEQD95rot7jkxp6nonjI5XIbGfO/iYhM5Qinwe8aIEQHP2KZtpqVuA==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.5.2", - "@docusaurus/logger": "3.5.2", - "@docusaurus/mdx-loader": "3.5.2", - "@docusaurus/module-type-aliases": "3.5.2", - "@docusaurus/theme-common": "3.5.2", - "@docusaurus/types": "3.5.2", - "@docusaurus/utils": "3.5.2", - "@docusaurus/utils-common": "3.5.2", - "@docusaurus/utils-validation": "3.5.2", - "@types/react-router-config": "^5.0.7", - "combine-promises": "^1.1.0", - "fs-extra": "^11.1.1", - "js-yaml": "^4.1.0", - "lodash": "^4.17.21", - "tslib": "^2.6.0", - "utility-types": "^3.10.0", - "webpack": "^5.88.1" + "@docusaurus/core": "3.10.0", + "@docusaurus/types": "3.10.0", + "@docusaurus/utils-validation": "3.10.0", + "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/plugin-content-pages": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.5.2.tgz", - "integrity": "sha512-WzhHjNpoQAUz/ueO10cnundRz+VUtkjFhhaQ9jApyv1a46FPURO4cef89pyNIOMny1fjDz/NUN2z6Yi+5WUrCw==", + "node_modules/@docusaurus/plugin-google-tag-manager/node_modules/@docusaurus/types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", + "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.5.2", - "@docusaurus/mdx-loader": "3.5.2", - "@docusaurus/types": "3.5.2", - "@docusaurus/utils": "3.5.2", - "@docusaurus/utils-validation": "3.5.2", - "fs-extra": "^11.1.1", - "tslib": "^2.6.0", - "webpack": "^5.88.1" - }, - "engines": { - "node": ">=18.0" + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.95.0", + "webpack-merge": "^5.9.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/plugin-debug": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.5.2.tgz", - "integrity": "sha512-kBK6GlN0itCkrmHuCS6aX1wmoWc5wpd5KJlqQ1FyrF0cLDnvsYSnh7+ftdwzt7G6lGBho8lrVwkkL9/iQvaSOA==", + "node_modules/@docusaurus/plugin-sitemap": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.10.0.tgz", + "integrity": "sha512-DVTSLjB97hIjmayGnGcBfognCeI7ZuUKgEnU7Oz81JYqXtVg94mVTthDjq3QHTylYNeCUbkaW8VF0FDLcc8pPw==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.5.2", - "@docusaurus/types": "3.5.2", - "@docusaurus/utils": "3.5.2", + "@docusaurus/core": "3.10.0", + "@docusaurus/logger": "3.10.0", + "@docusaurus/types": "3.10.0", + "@docusaurus/utils": "3.10.0", + "@docusaurus/utils-common": "3.10.0", + "@docusaurus/utils-validation": "3.10.0", "fs-extra": "^11.1.1", - "react-json-view-lite": "^1.2.0", + "sitemap": "^7.1.1", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/plugin-google-analytics": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.5.2.tgz", - "integrity": "sha512-rjEkJH/tJ8OXRE9bwhV2mb/WP93V441rD6XnM6MIluu7rk8qg38iSxS43ga2V2Q/2ib53PcqbDEJDG/yWQRJhQ==", + "node_modules/@docusaurus/plugin-sitemap/node_modules/@docusaurus/types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", + "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.5.2", - "@docusaurus/types": "3.5.2", - "@docusaurus/utils-validation": "3.5.2", - "tslib": "^2.6.0" - }, - "engines": { - "node": ">=18.0" + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.95.0", + "webpack-merge": "^5.9.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/plugin-google-gtag": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.5.2.tgz", - "integrity": "sha512-lm8XL3xLkTPHFKKjLjEEAHUrW0SZBSHBE1I+i/tmYMBsjCcUB5UJ52geS5PSiOCFVR74tbPGcPHEV/gaaxFeSA==", + "node_modules/@docusaurus/plugin-svgr": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-svgr/-/plugin-svgr-3.10.0.tgz", + "integrity": "sha512-lNljBESaETZqVBMPqkrGchr+UPT1eZzEPLmJhz8I76BxbjqgsUnRvrq6lQJ9sYjgmgX52KB7kkgczqd2yzoswQ==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.5.2", - "@docusaurus/types": "3.5.2", - "@docusaurus/utils-validation": "3.5.2", - "@types/gtag.js": "^0.0.12", - "tslib": "^2.6.0" + "@docusaurus/core": "3.10.0", + "@docusaurus/types": "3.10.0", + "@docusaurus/utils": "3.10.0", + "@docusaurus/utils-validation": "3.10.0", + "@svgr/core": "8.1.0", + "@svgr/webpack": "^8.1.0", + "tslib": "^2.6.0", + "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/plugin-google-tag-manager": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.5.2.tgz", - "integrity": "sha512-QkpX68PMOMu10Mvgvr5CfZAzZQFx8WLlOiUQ/Qmmcl6mjGK6H21WLT5x7xDmcpCoKA/3CegsqIqBR+nA137lQg==", + "node_modules/@docusaurus/plugin-svgr/node_modules/@docusaurus/types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", + "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.5.2", - "@docusaurus/types": "3.5.2", - "@docusaurus/utils-validation": "3.5.2", - "tslib": "^2.6.0" - }, - "engines": { - "node": ">=18.0" + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.95.0", + "webpack-merge": "^5.9.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/plugin-sitemap": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.5.2.tgz", - "integrity": "sha512-DnlqYyRAdQ4NHY28TfHuVk414ft2uruP4QWCH//jzpHjqvKyXjj2fmDtI8RPUBh9K8iZKFMHRnLtzJKySPWvFA==", - "license": "MIT", - "dependencies": { - "@docusaurus/core": "3.5.2", - "@docusaurus/logger": "3.5.2", - "@docusaurus/types": "3.5.2", - "@docusaurus/utils": "3.5.2", - "@docusaurus/utils-common": "3.5.2", - "@docusaurus/utils-validation": "3.5.2", - "fs-extra": "^11.1.1", - "sitemap": "^7.1.1", - "tslib": "^2.6.0" + "node_modules/@docusaurus/preset-classic": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.10.0.tgz", + "integrity": "sha512-kw/Ye02Hc6xP1OdTswy8yxQEHg0fdPpyWAQRxr5b2x3h7LlG2Zgbb5BDFROnXDDMpUxB7YejlocJIE5HIEfpNA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.0", + "@docusaurus/plugin-content-blog": "3.10.0", + "@docusaurus/plugin-content-docs": "3.10.0", + "@docusaurus/plugin-content-pages": "3.10.0", + "@docusaurus/plugin-css-cascade-layers": "3.10.0", + "@docusaurus/plugin-debug": "3.10.0", + "@docusaurus/plugin-google-analytics": "3.10.0", + "@docusaurus/plugin-google-gtag": "3.10.0", + "@docusaurus/plugin-google-tag-manager": "3.10.0", + "@docusaurus/plugin-sitemap": "3.10.0", + "@docusaurus/plugin-svgr": "3.10.0", + "@docusaurus/theme-classic": "3.10.0", + "@docusaurus/theme-common": "3.10.0", + "@docusaurus/theme-search-algolia": "3.10.0", + "@docusaurus/types": "3.10.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/preset-classic": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.5.2.tgz", - "integrity": "sha512-3ihfXQ95aOHiLB5uCu+9PRy2gZCeSZoDcqpnDvf3B+sTrMvMTr8qRUzBvWkoIqc82yG5prCboRjk1SVILKx6sg==", + "node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", + "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.5.2", - "@docusaurus/plugin-content-blog": "3.5.2", - "@docusaurus/plugin-content-docs": "3.5.2", - "@docusaurus/plugin-content-pages": "3.5.2", - "@docusaurus/plugin-debug": "3.5.2", - "@docusaurus/plugin-google-analytics": "3.5.2", - "@docusaurus/plugin-google-gtag": "3.5.2", - "@docusaurus/plugin-google-tag-manager": "3.5.2", - "@docusaurus/plugin-sitemap": "3.5.2", - "@docusaurus/theme-classic": "3.5.2", - "@docusaurus/theme-common": "3.5.2", - "@docusaurus/theme-search-algolia": "3.5.2", - "@docusaurus/types": "3.5.2" - }, - "engines": { - "node": ">=18.0" + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.95.0", + "webpack-merge": "^5.9.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/theme-classic": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.5.2.tgz", - "integrity": "sha512-XRpinSix3NBv95Rk7xeMF9k4safMkwnpSgThn0UNQNumKvmcIYjfkwfh2BhwYh/BxMXQHJ/PdmNh22TQFpIaYg==", - "license": "MIT", - "dependencies": { - "@docusaurus/core": "3.5.2", - "@docusaurus/mdx-loader": "3.5.2", - "@docusaurus/module-type-aliases": "3.5.2", - "@docusaurus/plugin-content-blog": "3.5.2", - "@docusaurus/plugin-content-docs": "3.5.2", - "@docusaurus/plugin-content-pages": "3.5.2", - "@docusaurus/theme-common": "3.5.2", - "@docusaurus/theme-translations": "3.5.2", - "@docusaurus/types": "3.5.2", - "@docusaurus/utils": "3.5.2", - "@docusaurus/utils-common": "3.5.2", - "@docusaurus/utils-validation": "3.5.2", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.10.0.tgz", + "integrity": "sha512-9msCAsRdN+UG+RwPwCFb0uKy4tGoPh5YfBozXeGUtIeAgsMdn6f3G/oY861luZ3t8S2ET8S9Y/1GnpJAGWytww==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.0", + "@docusaurus/logger": "3.10.0", + "@docusaurus/mdx-loader": "3.10.0", + "@docusaurus/module-type-aliases": "3.10.0", + "@docusaurus/plugin-content-blog": "3.10.0", + "@docusaurus/plugin-content-docs": "3.10.0", + "@docusaurus/plugin-content-pages": "3.10.0", + "@docusaurus/theme-common": "3.10.0", + "@docusaurus/theme-translations": "3.10.0", + "@docusaurus/types": "3.10.0", + "@docusaurus/utils": "3.10.0", + "@docusaurus/utils-common": "3.10.0", + "@docusaurus/utils-validation": "3.10.0", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", "copy-text-to-clipboard": "^3.2.0", - "infima": "0.2.0-alpha.44", + "infima": "0.2.0-alpha.45", "lodash": "^4.17.21", "nprogress": "^0.2.0", - "postcss": "^8.4.26", + "postcss": "^8.5.4", "prism-react-renderer": "^2.3.0", "prismjs": "^1.29.0", "react-router-dom": "^5.3.4", @@ -2717,23 +4228,45 @@ "utility-types": "^3.10.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/theme-classic/node_modules/@docusaurus/types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", + "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.95.0", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/theme-common": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.5.2.tgz", - "integrity": "sha512-QXqlm9S6x9Ibwjs7I2yEDgsCocp708DrCrgHgKwg2n2AY0YQ6IjU0gAK35lHRLOvAoJUfCKpQAwUykB0R7+Eew==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.10.0.tgz", + "integrity": "sha512-Dkp1YXKn16ByCJAdIjbDIOpVb4Z66MsVD694/ilX1vAAHaVEMrVsf/NPd9VgreyFx08rJ9GqV1MtzsbTcU73Kg==", "license": "MIT", "dependencies": { - "@docusaurus/mdx-loader": "3.5.2", - "@docusaurus/module-type-aliases": "3.5.2", - "@docusaurus/utils": "3.5.2", - "@docusaurus/utils-common": "3.5.2", + "@docusaurus/mdx-loader": "3.10.0", + "@docusaurus/module-type-aliases": "3.10.0", + "@docusaurus/utils": "3.10.0", + "@docusaurus/utils-common": "3.10.0", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", @@ -2744,30 +4277,31 @@ "utility-types": "^3.10.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "@docusaurus/plugin-content-docs": "*", - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/theme-search-algolia": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.5.2.tgz", - "integrity": "sha512-qW53kp3VzMnEqZGjakaV90sst3iN1o32PH+nawv1uepROO8aEGxptcq2R5rsv7aBShSRbZwIobdvSYKsZ5pqvA==", - "license": "MIT", - "dependencies": { - "@docsearch/react": "^3.5.2", - "@docusaurus/core": "3.5.2", - "@docusaurus/logger": "3.5.2", - "@docusaurus/plugin-content-docs": "3.5.2", - "@docusaurus/theme-common": "3.5.2", - "@docusaurus/theme-translations": "3.5.2", - "@docusaurus/utils": "3.5.2", - "@docusaurus/utils-validation": "3.5.2", - "algoliasearch": "^4.18.0", - "algoliasearch-helper": "^3.13.3", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.10.0.tgz", + "integrity": "sha512-f5FPKI08e3JRG63vR/o4qeuUVHUHzFzM0nnF+AkB67soAZgNsKJRf2qmUZvlQkGwlV+QFkKe4D0ANMh1jToU3g==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-core": "^1.19.2", + "@docsearch/react": "^3.9.0 || ^4.3.2", + "@docusaurus/core": "3.10.0", + "@docusaurus/logger": "3.10.0", + "@docusaurus/plugin-content-docs": "3.10.0", + "@docusaurus/theme-common": "3.10.0", + "@docusaurus/theme-translations": "3.10.0", + "@docusaurus/utils": "3.10.0", + "@docusaurus/utils-validation": "3.10.0", + "algoliasearch": "^5.37.0", + "algoliasearch-helper": "^3.26.0", "clsx": "^2.0.0", "eta": "^2.2.0", "fs-extra": "^11.1.1", @@ -2776,30 +4310,31 @@ "utility-types": "^3.10.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/theme-translations": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.5.2.tgz", - "integrity": "sha512-GPZLcu4aT1EmqSTmbdpVrDENGR2yObFEX8ssEFYTCiAIVc0EihNSdOIBTazUvgNqwvnoU1A8vIs1xyzc3LITTw==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.10.0.tgz", + "integrity": "sha512-L9IbFLwTc5+XdgH45iQYufLn0SVZd6BUNelDbKIFlH+E4hhjuj/XHWAFMX/w2K59rfy8wak9McOaei7BSUfRPA==", "license": "MIT", "dependencies": { "fs-extra": "^11.1.1", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/types": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.5.2.tgz", "integrity": "sha512-N6GntLXoLVUwkZw7zCxwy9QiuEXIcTVzA9AkmNw16oc0AP3SXLrMmDMMBIfgqwuKWa6Ox6epHol9kMtJqekACw==", + "dev": true, "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", @@ -2818,15 +4353,16 @@ } }, "node_modules/@docusaurus/utils": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.5.2.tgz", - "integrity": "sha512-33QvcNFh+Gv+C2dP9Y9xWEzMgf3JzrpL2nW9PopidiohS1nDcyknKRx2DWaFvyVTTYIkkABVSr073VTj/NITNA==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.10.0.tgz", + "integrity": "sha512-T3B0WTigsIthe0D4LQa2k+7bJY+c3WS+Wq2JhcznOSpn1lSN64yNtHQXboCj3QnUs1EuAZszQG1SHKu5w5ZrlA==", "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.5.2", - "@docusaurus/utils-common": "3.5.2", - "@svgr/webpack": "^8.1.0", + "@docusaurus/logger": "3.10.0", + "@docusaurus/types": "3.10.0", + "@docusaurus/utils-common": "3.10.0", "escape-string-regexp": "^4.0.0", + "execa": "^5.1.1", "file-loader": "^6.2.0", "fs-extra": "^11.1.1", "github-slugger": "^1.5.0", @@ -2836,55 +4372,62 @@ "js-yaml": "^4.1.0", "lodash": "^4.17.21", "micromatch": "^4.0.5", + "p-queue": "^6.6.2", "prompts": "^2.4.2", "resolve-pathname": "^3.0.0", - "shelljs": "^0.8.5", "tslib": "^2.6.0", "url-loader": "^4.1.1", "utility-types": "^3.10.0", "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" - }, - "peerDependencies": { - "@docusaurus/types": "*" - }, - "peerDependenciesMeta": { - "@docusaurus/types": { - "optional": true - } + "node": ">=20.0" } }, "node_modules/@docusaurus/utils-common": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.5.2.tgz", - "integrity": "sha512-i0AZjHiRgJU6d7faQngIhuHKNrszpL/SHQPgF1zH4H+Ij6E9NBYGy6pkcGWToIv7IVPbs+pQLh1P3whn0gWXVg==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.10.0.tgz", + "integrity": "sha512-JyL7sb9QVDgYvudIS81Dv0lsWm7le0vGZSDwsztxWam1SPBqrnkvBy9UYL/amh6pbybkyYTd3CMTkO24oMlCSw==", "license": "MIT", "dependencies": { + "@docusaurus/types": "3.10.0", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/utils-common/node_modules/@docusaurus/types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", + "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.95.0", + "webpack-merge": "^5.9.0" }, "peerDependencies": { - "@docusaurus/types": "*" - }, - "peerDependenciesMeta": { - "@docusaurus/types": { - "optional": true - } + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/utils-validation": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.5.2.tgz", - "integrity": "sha512-m+Foq7augzXqB6HufdS139PFxDC5d5q2QKZy8q0qYYvGdI6nnlNsGH4cIGsgBnV7smz+mopl3g4asbSDvMV0jA==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.10.0.tgz", + "integrity": "sha512-c+6n2+ZPOJtWWc8Bb/EYdpSDfjYEScdCu9fB/SNjOmSCf1IdVnGf2T53o0tsz0gDRtCL90tifTL0JE/oMuP1Mw==", "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.5.2", - "@docusaurus/utils": "3.5.2", - "@docusaurus/utils-common": "3.5.2", + "@docusaurus/logger": "3.10.0", + "@docusaurus/utils": "3.10.0", + "@docusaurus/utils-common": "3.10.0", "fs-extra": "^11.2.0", "joi": "^17.9.2", "js-yaml": "^4.1.0", @@ -2892,7 +4435,29 @@ "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/utils/node_modules/@docusaurus/types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", + "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.95.0", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@hapi/hoek": { @@ -2959,39 +4524,448 @@ "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/buffers": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz", + "integrity": "sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-core": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.57.1.tgz", + "integrity": "sha512-YrEi/ZPmgc+GfdO0esBF04qv8boK9Dg9WpRQw/+vM8Qt3nnVIJWIa8HwZ/LXVZ0DB11XUROM8El/7yYTJX+WtA==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-builtins": "4.57.1", + "@jsonjoy.com/fs-node-utils": "4.57.1", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-fsa": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.1.tgz", + "integrity": "sha512-ooEPvSW/HQDivPDPZMibHGKZf/QS4WRir1czGZmXmp3MsQqLECZEpN0JobrD8iV9BzsuwdIv+PxtWX9WpPLsIA==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.57.1", + "@jsonjoy.com/fs-node-builtins": "4.57.1", + "@jsonjoy.com/fs-node-utils": "4.57.1", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.57.1.tgz", + "integrity": "sha512-3YaKhP8gXEKN+2O49GLNfNb5l2gbnCFHyAaybbA2JkkbQP3dpdef7WcUaHAulg/c5Dg4VncHsA3NWAUSZMR5KQ==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.57.1", + "@jsonjoy.com/fs-node-builtins": "4.57.1", + "@jsonjoy.com/fs-node-utils": "4.57.1", + "@jsonjoy.com/fs-print": "4.57.1", + "@jsonjoy.com/fs-snapshot": "4.57.1", + "glob-to-regex.js": "^1.0.0", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-builtins": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.1.tgz", + "integrity": "sha512-XHkFKQ5GSH3uxm8c3ZYXVrexGdscpWKIcMWKFQpMpMJc8gA3AwOMBJXJlgpdJqmrhPyQXxaY9nbkNeYpacC0Og==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-to-fsa": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.1.tgz", + "integrity": "sha512-pqGHyWWzNck4jRfaGV39hkqpY5QjRUQ/nRbNT7FYbBa0xf4bDG+TE1Gt2KWZrSkrkZZDE3qZUjYMbjwSliX6pg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-fsa": "4.57.1", + "@jsonjoy.com/fs-node-builtins": "4.57.1", + "@jsonjoy.com/fs-node-utils": "4.57.1" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-utils": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.1.tgz", + "integrity": "sha512-vp+7ZzIB8v43G+GLXTS4oDUSQmhAsRz532QmmWBbdYA20s465JvwhkSFvX9cVTqRRAQg+vZ7zWDaIEh0lFe2gw==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-builtins": "4.57.1" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-print": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.57.1.tgz", + "integrity": "sha512-Ynct7ZJmfk6qoXDOKfpovNA36ITUx8rChLmRQtW08J73VOiuNsU8PB6d/Xs7fxJC2ohWR3a5AqyjmLojfrw5yw==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-utils": "4.57.1", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.1.tgz", + "integrity": "sha512-/oG8xBNFMbDXTq9J7vepSA1kerS5vpgd3p5QZSPd+nX59uwodGJftI51gDYyHRpP57P3WCQf7LHtBYPqwUg2Bg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^17.65.0", + "@jsonjoy.com/fs-node-utils": "4.57.1", + "@jsonjoy.com/json-pack": "^17.65.0", + "@jsonjoy.com/util": "^17.65.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/base64": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.67.0.tgz", + "integrity": "sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/codegen": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz", + "integrity": "sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pack": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz", + "integrity": "sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "17.67.0", + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0", + "@jsonjoy.com/json-pointer": "17.67.0", + "@jsonjoy.com/util": "17.67.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pointer": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz", + "integrity": "sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/util": "17.67.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/util": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.67.0.tgz", + "integrity": "sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", + "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.2.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.2", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack/node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", + "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" + }, "engines": { - "node": ">=6.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "license": "MIT", + "node_modules/@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "node_modules/@jsonjoy.com/util/node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, "node_modules/@leichtgewicht/ip-codec": { @@ -3054,6 +5028,18 @@ "react": ">=16" } }, + "node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3089,6 +5075,154 @@ "node": ">= 8" } }, + "node_modules/@peculiar/asn1-cms": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.6.1.tgz", + "integrity": "sha512-vdG4fBF6Lkirkcl53q6eOdn3XYKt+kJTG59edgRZORlg/3atWWEReRCx5rYE1ZzTTX6vLK5zDMjHh7vbrcXGtw==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "@peculiar/asn1-x509-attr": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-csr": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.6.1.tgz", + "integrity": "sha512-WRWnKfIocHyzFYQTka8O/tXCiBquAPSrRjXbOkHbO4qdmS6loffCEGs+rby6WxxGdJCuunnhS2duHURhjyio6w==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-ecc": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.6.1.tgz", + "integrity": "sha512-+Vqw8WFxrtDIN5ehUdvlN2m73exS2JVG0UAyfVB31gIfor3zWEAQPD+K9ydCxaj3MLen9k0JhKpu9LqviuCE1g==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pfx": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.6.1.tgz", + "integrity": "sha512-nB5jVQy3MAAWvq0KY0R2JUZG8bO/bTLpnwyOzXyEh/e54ynGTatAR+csOnXkkVD9AFZ2uL8Z7EV918+qB1qDvw==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.6.1", + "@peculiar/asn1-pkcs8": "^2.6.1", + "@peculiar/asn1-rsa": "^2.6.1", + "@peculiar/asn1-schema": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pkcs8": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.6.1.tgz", + "integrity": "sha512-JB5iQ9Izn5yGMw3ZG4Nw3Xn/hb/G38GYF3lf7WmJb8JZUydhVGEjK/ZlFSWhnlB7K/4oqEs8HnfFIKklhR58Tw==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pkcs9": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.6.1.tgz", + "integrity": "sha512-5EV8nZoMSxeWmcxWmmcolg22ojZRgJg+Y9MX2fnE2bGRo5KQLqV5IL9kdSQDZxlHz95tHvIq9F//bvL1OeNILw==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.6.1", + "@peculiar/asn1-pfx": "^2.6.1", + "@peculiar/asn1-pkcs8": "^2.6.1", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "@peculiar/asn1-x509-attr": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-rsa": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.6.1.tgz", + "integrity": "sha512-1nVMEh46SElUt5CB3RUTV4EG/z7iYc7EoaDY5ECwganibQPkZ/Y2eMsTKB/LeyrUJ+W/tKoD9WUqIy8vB+CEdA==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-schema": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.6.0.tgz", + "integrity": "sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==", + "license": "MIT", + "dependencies": { + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-x509": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.6.1.tgz", + "integrity": "sha512-O9jT5F1A2+t3r7C4VT7LYGXqkGLK7Kj1xFpz7U0isPrubwU5PbDoyYtx6MiGst29yq7pXN5vZbQFKRCP+lLZlA==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-x509-attr": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.6.1.tgz", + "integrity": "sha512-tlW6cxoHwgcQghnJwv3YS+9OO1737zgPogZ+CgWRUK4roEwIPzRH4JEiG770xe5HX2ATfCpmX60gurfWIF9dcQ==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/x509": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-1.14.3.tgz", + "integrity": "sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.6.0", + "@peculiar/asn1-csr": "^2.6.0", + "@peculiar/asn1-ecc": "^2.6.0", + "@peculiar/asn1-pkcs9": "^2.6.0", + "@peculiar/asn1-rsa": "^2.6.0", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "pvtsutils": "^1.3.6", + "reflect-metadata": "^0.2.2", + "tslib": "^2.8.1", + "tsyringe": "^4.10.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, "node_modules/@pnpm/config.env-replace": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", @@ -3530,18 +5664,6 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", - "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/express/node_modules/@types/express-serve-static-core": { "version": "4.19.8", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", @@ -3554,9 +5676,9 @@ } }, "node_modules/@types/gtag.js": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.12.tgz", - "integrity": "sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==", + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.20.tgz", + "integrity": "sha512-wwAbk3SA2QeU67unN7zPxjEHmPmlXwZXZvQEpbEUQuMCRGgKyE1m6XDuTUA9b6pCGb/GqJmdfMOY5LuDjJSbbg==", "license": "MIT" }, "node_modules/@types/hast": { @@ -3667,21 +5789,6 @@ "undici-types": "~7.18.0" } }, - "node_modules/@types/node-forge": { - "version": "1.3.14", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", - "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/parse-json": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "license": "MIT" - }, "node_modules/@types/prismjs": { "version": "1.26.6", "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.6.tgz", @@ -3742,9 +5849,9 @@ } }, "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "license": "MIT" }, "node_modules/@types/sax": { @@ -4151,26 +6258,28 @@ } }, "node_modules/algoliasearch": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.27.0.tgz", - "integrity": "sha512-C88C5grLa5VOCp9eYZJt+q99ik7yNdm92l7Q9+4XK0Md8kL05Lg8l2v9ZVX0uMW3mH9pAFxMMXlLOvqNumA4lw==", - "license": "MIT", - "dependencies": { - "@algolia/cache-browser-local-storage": "4.27.0", - "@algolia/cache-common": "4.27.0", - "@algolia/cache-in-memory": "4.27.0", - "@algolia/client-account": "4.27.0", - "@algolia/client-analytics": "4.27.0", - "@algolia/client-common": "4.27.0", - "@algolia/client-personalization": "4.27.0", - "@algolia/client-search": "4.27.0", - "@algolia/logger-common": "4.27.0", - "@algolia/logger-console": "4.27.0", - "@algolia/recommend": "4.27.0", - "@algolia/requester-browser-xhr": "4.27.0", - "@algolia/requester-common": "4.27.0", - "@algolia/requester-node-http": "4.27.0", - "@algolia/transporter": "4.27.0" + "version": "5.50.1", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.50.1.tgz", + "integrity": "sha512-/bwdue1/8LWELn/DBalGRfuLsXBLXULJo/yOeavJtDu8rBwxIzC6/Rz9Jg19S21VkJvRuZO1k8CZXBMS73mYbA==", + "license": "MIT", + "dependencies": { + "@algolia/abtesting": "1.16.1", + "@algolia/client-abtesting": "5.50.1", + "@algolia/client-analytics": "5.50.1", + "@algolia/client-common": "5.50.1", + "@algolia/client-insights": "5.50.1", + "@algolia/client-personalization": "5.50.1", + "@algolia/client-query-suggestions": "5.50.1", + "@algolia/client-search": "5.50.1", + "@algolia/ingestion": "1.50.1", + "@algolia/monitoring": "1.50.1", + "@algolia/recommend": "5.50.1", + "@algolia/requester-browser-xhr": "5.50.1", + "@algolia/requester-fetch": "5.50.1", + "@algolia/requester-node-http": "5.50.1" + }, + "engines": { + "node": ">= 14.0.0" } }, "node_modules/algoliasearch-helper": { @@ -4185,45 +6294,6 @@ "algoliasearch": ">= 3.1 < 6" } }, - "node_modules/algoliasearch/node_modules/@algolia/client-common": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.27.0.tgz", - "integrity": "sha512-ZrT6l/YPQgyIUuBCxcYPeXol2VBLUMuNb1rKXrm6z1f/iTiwqtnEEb16/6CC11+Re0ZGXrdcMVrgDRrzveQ1aQ==", - "license": "MIT", - "dependencies": { - "@algolia/requester-common": "4.27.0", - "@algolia/transporter": "4.27.0" - } - }, - "node_modules/algoliasearch/node_modules/@algolia/client-search": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.27.0.tgz", - "integrity": "sha512-qmX/f67ay0eZ4V5Io8fWWOcUVo/gqre2yei1PnmEhQU2Gul6ushg25QnNrfu4BODiRrw1rwYveZaLCiHvcUxrQ==", - "license": "MIT", - "dependencies": { - "@algolia/client-common": "4.27.0", - "@algolia/requester-common": "4.27.0", - "@algolia/transporter": "4.27.0" - } - }, - "node_modules/algoliasearch/node_modules/@algolia/requester-browser-xhr": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.27.0.tgz", - "integrity": "sha512-dTenMBIIpyp5o3C2ZnfbsuSlD/lL9jPkk6T+2+qm38fyw2nf49ANbcHFE79NgiGrnmw7QrYveCs9NIP3Wk4v6g==", - "license": "MIT", - "dependencies": { - "@algolia/requester-common": "4.27.0" - } - }, - "node_modules/algoliasearch/node_modules/@algolia/requester-node-http": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.27.0.tgz", - "integrity": "sha512-y8nUqaUQeSOQ5oaNo0b2QPznyBFW9LoIwljyUphJ+gUZpU6O/j2/C8ovoqDpIe6J0etqHg5RCcBizrCFZuLpyw==", - "license": "MIT", - "dependencies": { - "@algolia/requester-common": "4.27.0" - } - }, "node_modules/ansi-align": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", @@ -4253,6 +6323,33 @@ "node": ">=8" } }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", @@ -4329,6 +6426,20 @@ "node": ">=8" } }, + "node_modules/asn1js": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.7.tgz", + "integrity": "sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==", + "license": "BSD-3-Clause", + "dependencies": { + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/astring": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", @@ -4338,15 +6449,6 @@ "astring": "bin/astring" } }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/autoprefixer": { "version": "10.4.27", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz", @@ -4659,6 +6761,21 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "license": "MIT" }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -4668,6 +6785,15 @@ "node": ">= 0.8" } }, + "node_modules/bytestreamjs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", + "integrity": "sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/cacheable-lookup": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", @@ -5254,10 +7380,13 @@ } }, "node_modules/consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", - "license": "MIT" + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } }, "node_modules/content-disposition": { "version": "0.5.2", @@ -5401,17 +7530,6 @@ "url": "https://opencollective.com/core-js" } }, - "node_modules/core-js-pure": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.49.0.tgz", - "integrity": "sha512-XM4RFka59xATyJv/cS3O3Kml72hQXUeGRuuTmMYFxwzc9/7C8OYTaIR/Ji+Yt8DXzsFLNhat15cE/JP15HrCgw==", - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -5485,6 +7603,44 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/css-blank-pseudo": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-7.0.1.tgz", + "integrity": "sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-blank-pseudo/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/css-declaration-sorter": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.4.0.tgz", @@ -5497,6 +7653,68 @@ "postcss": "^8.0.9" } }, + "node_modules/css-has-pseudo": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-7.0.3.tgz", + "integrity": "sha512-oG+vKuGyqe/xvEMoxAQrhi7uY16deJR3i7wwhBerVrGQKSqUC5GiOVxTpM9F9B9hw0J+eKeOWLH7E9gZ1Dr5rA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-has-pseudo/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/css-has-pseudo/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/css-loader": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", @@ -5576,6 +7794,28 @@ } } }, + "node_modules/css-prefers-color-scheme": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-10.0.0.tgz", + "integrity": "sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, "node_modules/css-select": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", @@ -5617,6 +7857,22 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/cssdb": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.8.0.tgz", + "integrity": "sha512-QbLeyz2Bgso1iRlh7IpWk6OKa3lLNGXsujVjDMPl9rOZpxKeiG69icLpbLCFxeURwmcdIfZqQyhlooKJYM4f8Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ], + "license": "MIT-0" + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -5846,16 +8102,32 @@ "node": ">=0.10.0" } }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "license": "BSD-2-Clause", + "node_modules/default-browser": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", + "license": "MIT", "dependencies": { - "execa": "^5.0.0" + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" }, "engines": { - "node": ">= 10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/defer-to-connect": { @@ -5910,28 +8182,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "license": "MIT", - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -5983,38 +8233,6 @@ "node": ">= 4.0.0" } }, - "node_modules/detect-port-alt": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", - "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", - "license": "MIT", - "dependencies": { - "address": "^1.0.1", - "debug": "^2.6.0" - }, - "bin": { - "detect": "bin/detect-port", - "detect-port": "bin/detect-port" - }, - "engines": { - "node": ">= 4.2.1" - } - }, - "node_modules/detect-port-alt/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/detect-port-alt/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", @@ -6804,6 +9022,30 @@ "node": ">=0.4.0" } }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/file-loader": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", @@ -6873,15 +9115,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/filesize": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", - "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -6931,189 +9164,61 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", - "license": "MIT", - "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "license": "MIT", - "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", - "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", - "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=10", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "eslint": ">= 6", - "typescript": ">= 2.7", - "vue-template-compiler": "*", - "webpack": ">= 4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "license": "MIT", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "license": "MIT", + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" }, "engines": { - "node": ">=10" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" }, "engines": { - "node": ">= 8.9.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "license": "MIT", "engines": { - "node": ">=6" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, "node_modules/form-data-encoder": { @@ -7178,18 +9283,6 @@ "node": ">=14.14" } }, - "node_modules/fs-monkey": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", - "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", - "license": "Unlicense" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "license": "ISC" - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -7283,27 +9376,6 @@ "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==", "license": "ISC" }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -7316,6 +9388,22 @@ "node": ">= 6" } }, + "node_modules/glob-to-regex.js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", + "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", @@ -7337,50 +9425,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "license": "MIT", - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "license": "MIT", - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "license": "ISC" - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -7813,22 +9857,6 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/html-entities": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", - "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ], - "license": "MIT" - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -8078,6 +10106,15 @@ "node": ">=10.17.0" } }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "license": "MIT", + "engines": { + "node": ">=10.18" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -8112,13 +10149,10 @@ } }, "node_modules/image-size": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", - "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz", + "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==", "license": "MIT", - "dependencies": { - "queue": "6.0.2" - }, "bin": { "image-size": "bin/image-size.js" }, @@ -8126,16 +10160,6 @@ "node": ">=16.x" } }, - "node_modules/immer": { - "version": "9.0.21", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", - "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", @@ -8180,25 +10204,14 @@ } }, "node_modules/infima": { - "version": "0.2.0-alpha.44", - "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.44.tgz", - "integrity": "sha512-tuRkUSO/lB3rEhLJk25atwAjgLuzq070+pOW8XcvpHky/YbENnRRdPd85IBkyeTgttmOy5ah+yHYsK1HhUd4lQ==", + "version": "0.2.0-alpha.45", + "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.45.tgz", + "integrity": "sha512-uyH0zfr1erU1OohLk0fT4Rrb94AOhguWNOcD9uGrSpRvNB+6gZXUoJX5J0NtvzBO10YZ9PgvA4NFgt+fYg8ojw==", "license": "MIT", "engines": { "node": ">=12" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -8220,15 +10233,6 @@ "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", "license": "MIT" }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -8390,6 +10394,39 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-installed-globally": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", @@ -8406,6 +10443,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-network-error": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.1.tgz", + "integrity": "sha512-6QCxa49rQbmUWLfk0nuGqzql9U8uaV2H6279bRErPBHe/109hCzsLUBUHfbEtvLIHBd6hyXbgedBSHevm43Edw==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-npm": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.1.0.tgz", @@ -8436,15 +10485,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -8487,15 +10527,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -9343,15 +11374,32 @@ } }, "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", - "license": "Unlicense", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.57.1.tgz", + "integrity": "sha512-WvzrWPwMQT+PtbX2Et64R4qXKK0fj/8pO85MrUCzymX3twwCiJCdvntW3HdhG1teLJcHDDLIKx5+c3HckWYZtQ==", + "license": "Apache-2.0", "dependencies": { - "fs-monkey": "^1.0.4" + "@jsonjoy.com/fs-core": "4.57.1", + "@jsonjoy.com/fs-fsa": "4.57.1", + "@jsonjoy.com/fs-node": "4.57.1", + "@jsonjoy.com/fs-node-builtins": "4.57.1", + "@jsonjoy.com/fs-node-to-fsa": "4.57.1", + "@jsonjoy.com/fs-node-utils": "4.57.1", + "@jsonjoy.com/fs-print": "4.57.1", + "@jsonjoy.com/fs-snapshot": "4.57.1", + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "glob-to-regex.js": "^1.0.1", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", + "tslib": "^2.0.0" }, - "engines": { - "node": ">= 4.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, "node_modules/merge-descriptors": { @@ -11371,15 +13419,6 @@ "node": ">=18" } }, - "node_modules/node-forge": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", - "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", - "license": "(BSD-3-Clause OR GPL-2.0)", - "engines": { - "node": ">= 6.13.0" - } - }, "node_modules/node-releases": { "version": "2.0.37", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", @@ -11434,7 +13473,76 @@ "boolbase": "^1.0.0" }, "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/null-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-4.0.1.tgz", + "integrity": "sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/null-loader/node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/null-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/null-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/null-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/object-assign": { @@ -11514,15 +13622,6 @@ "node": ">= 0.8" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", @@ -11573,6 +13672,15 @@ "node": ">=12.20" } }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/p-limit": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", @@ -11618,26 +13726,49 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", "license": "MIT", "dependencies": { - "@types/retry": "0.12.0", + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", "retry": "^0.13.1" }, "engines": { - "node": ">=8" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", "license": "MIT", + "dependencies": { + "p-finally": "^1.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/package-json": { @@ -11794,15 +13925,6 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", @@ -11875,155 +13997,369 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "node_modules/pkijs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.4.0.tgz", + "integrity": "sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw==", + "license": "BSD-3-Clause", + "dependencies": { + "@noble/hashes": "1.4.0", + "asn1js": "^3.0.6", + "bytestreamjs": "^2.0.1", + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/postcss": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.9.tgz", + "integrity": "sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "find-up": "^3.0.0" + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { - "node": ">=8" + "node": "^10 || ^12 || >=14" } }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/postcss-attribute-case-insensitive": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-7.0.1.tgz", + "integrity": "sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", "dependencies": { - "locate-path": "^3.0.0" + "postcss-selector-parser": "^7.0.0" }, "engines": { - "node": ">=6" + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/postcss-attribute-case-insensitive/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/postcss-calc": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=6" + "node": "^14 || ^16 || >=18.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "postcss": "^8.2.2" } }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", "license": "MIT", "dependencies": { - "p-limit": "^2.0.0" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=6" + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" } }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "node_modules/postcss-color-functional-notation": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.12.tgz", + "integrity": "sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-10.0.0.tgz", + "integrity": "sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/postcss": { - "version": "8.5.9", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.9.tgz", - "integrity": "sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==", + "node_modules/postcss-color-rebeccapurple": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-10.0.0.tgz", + "integrity": "sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ==", "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, { "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-colormin": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", + "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-convert-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", + "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-custom-media": { + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-11.0.6.tgz", + "integrity": "sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" }, { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-properties": { + "version": "14.0.6", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-14.0.6.tgz", + "integrity": "sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-8.0.5.tgz", + "integrity": "sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg==", + "funding": [ { "type": "github", - "url": "https://github.com/sponsors/ai" + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" } ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "postcss-selector-parser": "^7.0.0" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/postcss-calc": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", - "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", + "node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.11", - "postcss-value-parser": "^4.2.0" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.2" + "node": ">=4" } }, - "node_modules/postcss-colormin": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", - "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", - "license": "MIT", + "node_modules/postcss-dir-pseudo-class": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-9.0.1.tgz", + "integrity": "sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", "dependencies": { - "browserslist": "^4.23.0", - "caniuse-api": "^3.0.0", - "colord": "^2.9.3", - "postcss-value-parser": "^4.2.0" + "postcss-selector-parser": "^7.0.0" }, "engines": { - "node": "^14 || ^16 || >=18.0" + "node": ">=18" }, "peerDependencies": { - "postcss": "^8.4.31" + "postcss": "^8.4" } }, - "node_modules/postcss-convert-values": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", - "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", + "node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { - "browserslist": "^4.23.0", - "postcss-value-parser": "^4.2.0" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.4.31" + "node": ">=4" } }, "node_modules/postcss-discard-comments": { @@ -12089,6 +14425,195 @@ "postcss": "^8.4.31" } }, + "node_modules/postcss-double-position-gradients": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.4.tgz", + "integrity": "sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-10.0.1.tgz", + "integrity": "sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-visible/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-focus-within": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-9.0.1.tgz", + "integrity": "sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-6.0.0.tgz", + "integrity": "sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-image-set-function": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-7.0.0.tgz", + "integrity": "sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-lab-function": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.12.tgz", + "integrity": "sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, "node_modules/postcss-loader": { "version": "7.3.4", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz", @@ -12111,6 +14636,31 @@ "webpack": "^5.0.0" } }, + "node_modules/postcss-logical": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-8.1.0.tgz", + "integrity": "sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, "node_modules/postcss-merge-idents": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz", @@ -12301,13 +14851,97 @@ "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "license": "ISC", "dependencies": { - "icss-utils": "^5.0.0" + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nesting": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.2.tgz", + "integrity": "sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-resolve-nested": "^3.1.0", + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-nesting/node_modules/@csstools/selector-resolve-nested": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz", + "integrity": "sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/postcss-nesting/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/postcss-nesting/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">=4" } }, "node_modules/postcss-normalize-charset": { @@ -12443,6 +15077,28 @@ "postcss": "^8.4.31" } }, + "node_modules/postcss-opacity-percentage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-3.0.0.tgz", + "integrity": "sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ==", + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, "node_modules/postcss-ordered-values": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", @@ -12459,6 +15115,198 @@ "postcss": "^8.4.31" } }, + "node_modules/postcss-overflow-shorthand": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-6.0.0.tgz", + "integrity": "sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-10.0.0.tgz", + "integrity": "sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-preset-env": { + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.6.1.tgz", + "integrity": "sha512-yrk74d9EvY+W7+lO9Aj1QmjWY9q5NsKjK2V9drkOPZB/X6KZ0B3igKsHUYakb7oYVhnioWypQX3xGuePf89f3g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-alpha-function": "^1.0.1", + "@csstools/postcss-cascade-layers": "^5.0.2", + "@csstools/postcss-color-function": "^4.0.12", + "@csstools/postcss-color-function-display-p3-linear": "^1.0.1", + "@csstools/postcss-color-mix-function": "^3.0.12", + "@csstools/postcss-color-mix-variadic-function-arguments": "^1.0.2", + "@csstools/postcss-content-alt-text": "^2.0.8", + "@csstools/postcss-contrast-color-function": "^2.0.12", + "@csstools/postcss-exponential-functions": "^2.0.9", + "@csstools/postcss-font-format-keywords": "^4.0.0", + "@csstools/postcss-gamut-mapping": "^2.0.11", + "@csstools/postcss-gradients-interpolation-method": "^5.0.12", + "@csstools/postcss-hwb-function": "^4.0.12", + "@csstools/postcss-ic-unit": "^4.0.4", + "@csstools/postcss-initial": "^2.0.1", + "@csstools/postcss-is-pseudo-class": "^5.0.3", + "@csstools/postcss-light-dark-function": "^2.0.11", + "@csstools/postcss-logical-float-and-clear": "^3.0.0", + "@csstools/postcss-logical-overflow": "^2.0.0", + "@csstools/postcss-logical-overscroll-behavior": "^2.0.0", + "@csstools/postcss-logical-resize": "^3.0.0", + "@csstools/postcss-logical-viewport-units": "^3.0.4", + "@csstools/postcss-media-minmax": "^2.0.9", + "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.5", + "@csstools/postcss-nested-calc": "^4.0.0", + "@csstools/postcss-normalize-display-values": "^4.0.1", + "@csstools/postcss-oklab-function": "^4.0.12", + "@csstools/postcss-position-area-property": "^1.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/postcss-property-rule-prelude-list": "^1.0.0", + "@csstools/postcss-random-function": "^2.0.1", + "@csstools/postcss-relative-color-syntax": "^3.0.12", + "@csstools/postcss-scope-pseudo-class": "^4.0.1", + "@csstools/postcss-sign-functions": "^1.1.4", + "@csstools/postcss-stepped-value-functions": "^4.0.9", + "@csstools/postcss-syntax-descriptor-syntax-production": "^1.0.1", + "@csstools/postcss-system-ui-font-family": "^1.0.0", + "@csstools/postcss-text-decoration-shorthand": "^4.0.3", + "@csstools/postcss-trigonometric-functions": "^4.0.9", + "@csstools/postcss-unset-value": "^4.0.0", + "autoprefixer": "^10.4.23", + "browserslist": "^4.28.1", + "css-blank-pseudo": "^7.0.1", + "css-has-pseudo": "^7.0.3", + "css-prefers-color-scheme": "^10.0.0", + "cssdb": "^8.6.0", + "postcss-attribute-case-insensitive": "^7.0.1", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^7.0.12", + "postcss-color-hex-alpha": "^10.0.0", + "postcss-color-rebeccapurple": "^10.0.0", + "postcss-custom-media": "^11.0.6", + "postcss-custom-properties": "^14.0.6", + "postcss-custom-selectors": "^8.0.5", + "postcss-dir-pseudo-class": "^9.0.1", + "postcss-double-position-gradients": "^6.0.4", + "postcss-focus-visible": "^10.0.1", + "postcss-focus-within": "^9.0.1", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^6.0.0", + "postcss-image-set-function": "^7.0.0", + "postcss-lab-function": "^7.0.12", + "postcss-logical": "^8.1.0", + "postcss-nesting": "^13.0.2", + "postcss-opacity-percentage": "^3.0.0", + "postcss-overflow-shorthand": "^6.0.0", + "postcss-page-break": "^3.0.4", + "postcss-place": "^10.0.0", + "postcss-pseudo-class-any-link": "^10.0.1", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^8.0.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-10.0.1.tgz", + "integrity": "sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-reduce-idents": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz", @@ -12505,6 +15353,53 @@ "postcss": "^8.4.31" } }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-8.0.1.tgz", + "integrity": "sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-selector-not/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-selector-parser": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", @@ -12715,6 +15610,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pvtsutils": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", + "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.8.1" + } + }, + "node_modules/pvutils": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.5.tgz", + "integrity": "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==", + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/qs": { "version": "6.14.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", @@ -12730,15 +15643,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/queue": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", - "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", - "license": "MIT", - "dependencies": { - "inherits": "~2.0.3" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -12817,168 +15721,42 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "license": "ISC" - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dev-utils": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", - "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.16.0", - "address": "^1.1.2", - "browserslist": "^4.18.1", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "detect-port-alt": "^1.1.6", - "escape-string-regexp": "^4.0.0", - "filesize": "^8.0.6", - "find-up": "^5.0.0", - "fork-ts-checker-webpack-plugin": "^6.5.0", - "global-modules": "^2.0.0", - "globby": "^11.0.4", - "gzip-size": "^6.0.0", - "immer": "^9.0.7", - "is-root": "^2.1.0", - "loader-utils": "^3.2.0", - "open": "^8.4.0", - "pkg-up": "^3.1.0", - "prompts": "^2.4.2", - "react-error-overlay": "^6.0.11", - "recursive-readdir": "^2.2.2", - "shell-quote": "^1.7.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/react-dev-utils/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dev-utils/node_modules/loader-utils": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", - "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", - "license": "MIT", - "engines": { - "node": ">= 12.13.0" - } - }, - "node_modules/react-dev-utils/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dev-utils/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dev-utils/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "rc": "cli.js" } }, - "node_modules/react-dev-utils/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/react-dev-utils/node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "loose-envify": "^1.1.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10.0" } }, "node_modules/react-dom": { @@ -12994,12 +15772,6 @@ "react": "^18.2.0" } }, - "node_modules/react-error-overlay": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.1.0.tgz", - "integrity": "sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==", - "license": "MIT" - }, "node_modules/react-fast-compare": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", @@ -13031,15 +15803,15 @@ "license": "MIT" }, "node_modules/react-json-view-lite": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-1.5.0.tgz", - "integrity": "sha512-nWqA1E4jKPklL2jvHWs6s+7Na0qNgw9HCP6xehdQJeg6nPBTFZgGwyko9Q0oj+jQWKTTVRS30u0toM5wiuL3iw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-2.5.0.tgz", + "integrity": "sha512-tk7o7QG9oYyELWHL8xiMQ8x4WzjCzbWNyig3uexmkLb54r8jO0yH3WCWx8UZS0c49eSA4QUmG5caiRJ8fAn58g==", "license": "MIT", "engines": { - "node": ">=14" + "node": ">=18" }, "peerDependencies": { - "react": "^16.13.1 || ^17.0.0 || ^18.0.0" + "react": "^18.0.0 || ^19.0.0" } }, "node_modules/react-loadable": { @@ -13148,23 +15920,6 @@ "node": ">=8.10.0" } }, - "node_modules/reading-time": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", - "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==", - "license": "MIT" - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/recma-build-jsx": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", @@ -13232,17 +15987,11 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/recursive-readdir": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", - "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", - "license": "MIT", - "dependencies": { - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=6.0.0" - } + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "license": "Apache-2.0" }, "node_modules/regenerate": { "version": "1.4.2", @@ -13591,6 +16340,15 @@ "entities": "^2.0.0" } }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -13689,28 +16447,6 @@ "node": ">=0.10.0" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rtl-detect": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.1.2.tgz", - "integrity": "sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==", - "license": "BSD-3-Clause" - }, "node_modules/rtlcss": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.3.0.tgz", @@ -13729,6 +16465,18 @@ "node": ">=12.0.0" } }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -13796,6 +16544,12 @@ "loose-envify": "^1.1.0" } }, + "node_modules/schema-dts": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/schema-dts/-/schema-dts-1.1.5.tgz", + "integrity": "sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg==", + "license": "Apache-2.0" + }, "node_modules/schema-utils": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", @@ -13842,16 +16596,16 @@ "license": "MIT" }, "node_modules/selfsigned": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", - "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-5.5.0.tgz", + "integrity": "sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==", "license": "MIT", "dependencies": { - "@types/node-forge": "^1.3.0", - "node-forge": "^1" + "@peculiar/x509": "^1.14.2", + "pkijs": "^3.3.3" }, "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/semver": { @@ -14140,23 +16894,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "license": "BSD-3-Clause", - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/side-channel": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", @@ -14761,11 +17498,21 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "license": "MIT" }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "license": "MIT" + "node_modules/thingies": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.6.0.tgz", + "integrity": "sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg==", + "license": "MIT", + "engines": { + "node": ">=10.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "^2" + } }, "node_modules/thunky": { "version": "1.1.0", @@ -14785,6 +17532,15 @@ "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", "license": "MIT" }, + "node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -14815,6 +17571,22 @@ "node": ">=6" } }, + "node_modules/tree-dump": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", + "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", @@ -14841,6 +17613,24 @@ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, + "node_modules/tsyringe": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/tsyringe/-/tsyringe-4.10.0.tgz", + "integrity": "sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==", + "license": "MIT", + "dependencies": { + "tslib": "^1.9.3" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/tsyringe/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/type-fest": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", @@ -14900,6 +17690,7 @@ "version": "5.6.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "devOptional": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -15517,47 +18308,57 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", - "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz", + "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==", "license": "MIT", "dependencies": { "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", + "memfs": "^4.43.1", + "mime-types": "^3.0.1", + "on-finished": "^2.4.1", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } } }, "node_modules/webpack-dev-middleware/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/webpack-dev-middleware/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "mime-db": "^1.54.0" }, "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/webpack-dev-middleware/node_modules/range-parser": { @@ -15570,54 +18371,52 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", - "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", - "license": "MIT", - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.5", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.3.tgz", + "integrity": "sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==", + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.25", + "@types/express-serve-static-core": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", "colorette": "^2.0.10", - "compression": "^1.7.4", + "compression": "^1.8.1", "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", + "express": "^4.22.1", "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^5.5.0", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.4", - "ws": "^8.13.0" + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" + "webpack": "^5.0.0" }, "peerDependenciesMeta": { "webpack": { @@ -15628,6 +18427,36 @@ } } }, + "node_modules/webpack-dev-server/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-dev-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/webpack-dev-server/node_modules/ws": { "version": "8.20.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", @@ -15743,23 +18572,77 @@ } }, "node_modules/webpackbar": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", - "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-6.0.1.tgz", + "integrity": "sha512-TnErZpmuKdwWBdMoexjio3KKX6ZtoKHRVvLIU0A47R0VVBDtx3ZyOJDktgYixhoJokZTYTt1Z37OkO9pnGJa9Q==", "license": "MIT", "dependencies": { - "chalk": "^4.1.0", - "consola": "^2.15.3", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "consola": "^3.2.3", + "figures": "^3.2.0", + "markdown-table": "^2.0.0", "pretty-time": "^1.1.0", - "std-env": "^3.0.1" + "std-env": "^3.7.0", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=12" + "node": ">=14.21.3" }, "peerDependencies": { "webpack": "3 || 4 || 5" } }, + "node_modules/webpackbar/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/webpackbar/node_modules/markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "license": "MIT", + "dependencies": { + "repeat-string": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/webpackbar/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpackbar/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", @@ -15875,12 +18758,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - }, "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", @@ -15914,6 +18791,36 @@ } } }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wsl-utils/node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/xdg-basedir": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", @@ -15944,15 +18851,6 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "license": "ISC" }, - "node_modules/yaml": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", - "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, "node_modules/yocto-queue": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", diff --git a/docs/package.json b/docs/package.json index 5ddd2b65..f5c73539 100644 --- a/docs/package.json +++ b/docs/package.json @@ -9,16 +9,16 @@ "clear": "docusaurus clear" }, "dependencies": { - "@docusaurus/core": "3.5.2", - "@docusaurus/plugin-client-redirects": "3.5.2", - "@docusaurus/preset-classic": "3.5.2", + "@docusaurus/core": "^3.10.0", + "@docusaurus/plugin-client-redirects": "^3.10.0", + "@docusaurus/preset-classic": "^3.10.0", "clsx": "2.1.1", "prism-react-renderer": "2.4.1", "react": "18.2.0", "react-dom": "18.2.0" }, "devDependencies": { - "@docusaurus/module-type-aliases": "3.5.2", + "@docusaurus/module-type-aliases": "^3.10.0", "@docusaurus/types": "3.5.2", "typescript": "5.6.3", "webpack": "5.94.0" diff --git a/docs/scripts/serve-docs.ps1 b/docs/scripts/serve-docs.ps1 index d3049a14..fcf866b0 100644 --- a/docs/scripts/serve-docs.ps1 +++ b/docs/scripts/serve-docs.ps1 @@ -1,7 +1,7 @@ param( - [switch]$LegacyDocfx, - [string]$ConfigPath = "docs/docfx.json", - [string]$SitePath = "docs/_site" + [switch]$BuildCsApiOnly, + [string]$ConfigPath = "docs/docfx.api.json", + [string]$ApiSitePath = "docs/_site_api" ) $ErrorActionPreference = "Stop" @@ -12,11 +12,11 @@ if (-not [System.IO.Path]::IsPathRooted($ConfigPath)) { $ConfigPath = Join-Path $repoRoot $ConfigPath } -if (-not [System.IO.Path]::IsPathRooted($SitePath)) { - $SitePath = Join-Path $repoRoot $SitePath +if (-not [System.IO.Path]::IsPathRooted($ApiSitePath)) { + $ApiSitePath = Join-Path $repoRoot $ApiSitePath } -if (-not $LegacyDocfx) { +if (-not $BuildCsApiOnly) { npm --prefix "$docsRoot" run dev exit $LASTEXITCODE } @@ -26,6 +26,5 @@ if (-not (Get-Command docfx -ErrorAction SilentlyContinue)) { } docfx metadata $ConfigPath -& "$PSScriptRoot/update-cpp-api.ps1" -AutoInstallDoxygen docfx build $ConfigPath -docfx serve $SitePath +docfx serve $ApiSitePath diff --git a/docs/static/api/cs/index.html b/docs/static/api/cs/index.html new file mode 100644 index 00000000..6c63406f --- /dev/null +++ b/docs/static/api/cs/index.html @@ -0,0 +1,16 @@ + + + + + + InfiniFrame C# API Reference + + +
+

InfiniFrame C# API Reference

+

+ This local placeholder is replaced in CI/CD by generated C# API pages from DocFX. +

+
+ + diff --git a/docs/toc.yml b/docs/toc.yml deleted file mode 100644 index 25339f36..00000000 --- a/docs/toc.yml +++ /dev/null @@ -1,10 +0,0 @@ -- name: Guides - href: articles/guides/ -- name: Concepts - href: articles/concepts/ -- name: C# Articles - href: articles/csharp/ -- name: C# API Reference - href: api/cs/ -- name: C++ API Reference - href: api/cpp/ From 908afe55b33d6bbff8ed6ac45541560ca81bc2a9 Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Thu, 9 Apr 2026 23:13:52 +0200 Subject: [PATCH 03/12] Update @docusaurus/types to version 3.10.0 in docs/package.json --- docs/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/package.json b/docs/package.json index f5c73539..75a5ec36 100644 --- a/docs/package.json +++ b/docs/package.json @@ -19,7 +19,7 @@ }, "devDependencies": { "@docusaurus/module-type-aliases": "^3.10.0", - "@docusaurus/types": "3.5.2", + "@docusaurus/types": "3.10.0", "typescript": "5.6.3", "webpack": "5.94.0" }, From b79760c9a72e207c27913d0f1c46b25debc21eab Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Thu, 9 Apr 2026 23:53:25 +0200 Subject: [PATCH 04/12] Docs: Remove outdated guides and code style docs - Deleted obsolete documentation for Blazor WebView, core window API, C/C++ code style, and C# coding conventions. - Removed migration guide detailing breaking changes from Photino.NET. - Streamlined documentation structure by eliminating redundant and legacy content. --- docs/articles/cpp/native-cpp-api.md | 32 -- .../concepts/breaking-changes-from-photino.md | 301 ------------- docs/content/cpp/code-style.md | 9 - docs/content/csharp/code-style.md | 13 - docs/content/guides/blazor-webview.md | 206 --------- docs/content/guides/core-window.md | 416 ------------------ docs/content/guides/custom-window-chrome.md | 198 --------- docs/content/guides/getting-started.md | 190 -------- docs/content/guides/javascript-interop.md | 217 --------- docs/content/guides/pack-tool.md | 240 ---------- docs/content/guides/web-server.md | 189 -------- docs/{content => docs}/api.md | 0 docs/{articles => docs}/cpp/code-style.md | 0 docs/{content => docs}/cpp/native-cpp-api.md | 0 docs/{articles => docs}/csharp/code-style.md | 0 .../guides/blazor-webview.md | 0 docs/{articles => docs}/guides/core-window.md | 0 .../guides/custom-window-chrome.md | 0 .../guides/getting-started.md | 0 .../guides/javascript-interop.md | 0 docs/{articles => docs}/guides/pack-tool.md | 0 docs/{articles => docs}/guides/web-server.md | 0 docs/{content => docs}/intro.md | 0 .../breaking-changes-from-photino.md | 0 .../migration/docfx-to-docusaurus.md | 0 docs/docusaurus.config.ts | 8 +- docs/package-lock.json | 370 +--------------- docs/package.json | 2 +- 28 files changed, 16 insertions(+), 2375 deletions(-) delete mode 100644 docs/articles/cpp/native-cpp-api.md delete mode 100644 docs/content/concepts/breaking-changes-from-photino.md delete mode 100644 docs/content/cpp/code-style.md delete mode 100644 docs/content/csharp/code-style.md delete mode 100644 docs/content/guides/blazor-webview.md delete mode 100644 docs/content/guides/core-window.md delete mode 100644 docs/content/guides/custom-window-chrome.md delete mode 100644 docs/content/guides/getting-started.md delete mode 100644 docs/content/guides/javascript-interop.md delete mode 100644 docs/content/guides/pack-tool.md delete mode 100644 docs/content/guides/web-server.md rename docs/{content => docs}/api.md (100%) rename docs/{articles => docs}/cpp/code-style.md (100%) rename docs/{content => docs}/cpp/native-cpp-api.md (100%) rename docs/{articles => docs}/csharp/code-style.md (100%) rename docs/{articles => docs}/guides/blazor-webview.md (100%) rename docs/{articles => docs}/guides/core-window.md (100%) rename docs/{articles => docs}/guides/custom-window-chrome.md (100%) rename docs/{articles => docs}/guides/getting-started.md (100%) rename docs/{articles => docs}/guides/javascript-interop.md (100%) rename docs/{articles => docs}/guides/pack-tool.md (100%) rename docs/{articles => docs}/guides/web-server.md (100%) rename docs/{content => docs}/intro.md (100%) rename docs/{articles/concepts => docs/migration}/breaking-changes-from-photino.md (100%) rename docs/{content => docs}/migration/docfx-to-docusaurus.md (100%) diff --git a/docs/articles/cpp/native-cpp-api.md b/docs/articles/cpp/native-cpp-api.md deleted file mode 100644 index 062b53aa..00000000 --- a/docs/articles/cpp/native-cpp-api.md +++ /dev/null @@ -1,32 +0,0 @@ -# Native C++ API - -InfiniFrame native API documentation is hosted inside DocFX as conceptual reference and is sourced from the native headers and Doxygen-style comments under `src/InfiniFrame.Native`. - -## Core headers - -- `Core/InfiniFrame.h`: top-level native interop include. -- `Core/InfiniFrameWindow.h`: main native window class and callbacks. -- `Core/InfiniFrameDialog.h`: dialog surface for file/folder/message dialogs. -- `Core/InfiniFrameInitParams.h`: build-time and startup window parameters. -- `Core/InfiniFrameWindowImpl.h`: shared implementation state for platform windows. - -## Shared native types - -- `Types/Basic.h`: primitive and interop-safe aliases. -- `Types/Dialog.h`: dialog enums and result contracts. -- `Types/Callbacks.h`: callback signatures used by interop exports. -- `Utils/Event.h`: event helper abstraction used across native layers. - -## Platform implementations - -- `Platform/Windows/*`: Win32 + WebView2 host implementation. -- `Platform/Mac/*`: Cocoa/WKWebView host implementation. -- `Platform/Linux/*`: GTK/WebKitGTK host implementation. - -## Exported bridge - -- `Exports.cpp`: exported C ABI used by the managed layer. - -For detailed behavior, see source comments in the files above. This page is maintained in DocFX to keep C++ documentation and C# documentation in one navigation model. - -For generated member-level C++ reference, see [Native C++ API Reference (Generated)](../../api/cpp/native-cpp-reference.md). diff --git a/docs/content/concepts/breaking-changes-from-photino.md b/docs/content/concepts/breaking-changes-from-photino.md deleted file mode 100644 index 86efdaee..00000000 --- a/docs/content/concepts/breaking-changes-from-photino.md +++ /dev/null @@ -1,301 +0,0 @@ -# Breaking Changes vs Photino.NET - -InfiniFrame is a complete, independent rework of [Photino.NET](https://github.com/tryphotino/photino.NET) and [photino.native](https://github.com/tryphotino/photino.native). It is not a drop-in replacement — this document covers every API, naming, and behavioral difference to assist with migration - -## Table of Contents - -- [Package and Namespace](#package-and-namespace) -- [Entry Point and Builder API](#entry-point-and-builder-api) -- [Runtime Window API](#runtime-window-api) -- [Event System](#event-system) -- [Web Messaging and Message Routing](#web-messaging-and-message-routing) -- [Logging](#logging) -- [Native C++ Interface](#native-c-interface) -- [Known Photino Issues Addressed](#known-photino-issues-addressed) -- [Removed or Replaced Features](#removed-or-replaced-features) - -## Package and Namespace - -| Aspect | Photino | InfiniFrame | -|--------------------------|-----------------------------------------|--------------------------------------| -| NuGet package | `Photino.NET` | `InfiniLore.InfiniFrame` | -| C# namespace | `Photino.NET` | `InfiniFrame` | -| Native DLL | `Photino.Native` | `InfiniFrame.Native` (internal) | -| C++ class | `Photino` | `InfiniFrameWindow` | -| C++ init params | `PhotinoInitParams` | `InfiniFrameInitParams` | -| Exported function prefix | `Photino_` | `InfiniFrame_` | -| Default window title | `"Photino"` | `"InfiniFrame"` | -| Default user agent | `"Photino WebView"` | `"InfiniFrame WebView"` | -| Default temp path | `%LocalAppData%\Photino` (Windows-only) | `%TEMP%\infiniframe` (all platforms) | - -All type names that were prefixed `Photino` are now prefixed `InfiniFrame`. If you have any code targeting the native DLL directly via P/Invoke, all exported symbol names must be updated from `Photino_*` to `InfiniFrame_*` - -## Entry Point and Builder API - -### Photino — direct construction - -```csharp -var window = new PhotinoWindow() - .SetTitle("My App") - .SetDevToolsEnabled(true) - .Load(new Uri("https://example.com")); -window.WaitForClose(); -``` - -`PhotinoWindow` is constructed directly. All configuration is done by calling methods on the object after construction. There is no separate builder class - -### InfiniFrame — explicit builder - -```csharp -IInfiniFrameWindow window = InfiniFrameWindowBuilder.Create() - .SetTitle("My App") - .SetDevToolsEnabled(true) - .SetStartUrl("https://example.com") - .Build(); -window.WaitForClose(); -``` - -Configuration must be set **before** calling `Build()`. The builder accepts an optional `IServiceProvider` for DI integration. The resulting type is `IInfiniFrameWindow`, not a concrete class - -### Configuration from appsettings.json - -InfiniFrame supports sourcing window configuration from `IConfiguration` under an `"InfiniFrame"` key — not available in Photino: - -```json -{ - "InfiniFrame": { - "Title": "My App", - "Width": 1280, - "Height": 720 - } -} -``` - -### Type and class changes - -| Photino | InfiniFrame | Notes | -|---------------------------------------------------|-------------------------------------------------------------------|------------------------------------------------| -| `PhotinoWindow` (monolithic) | `IInfiniFrameWindow` (interface) + `InfiniFrameWindow` (concrete) | Users interact through the interface | -| No builder | `InfiniFrameWindowBuilder` | Separate builder class | -| No configuration type | `InfiniFrameWindowConfiguration` | Separates build-time config from runtime | -| `PhotinoWindow(PhotinoWindow parent)` constructor | `builder.SetParent(parentWindow)` | Parent passed through builder, not constructor | - -## Runtime Window API - -### Method renames and removals - -| Photino | InfiniFrame | Notes | -|------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------| -| `PhotinoWindow.Load(Uri)` / `Load(string)` | `IInfiniFrameWindow.Load(Uri)` / `Load(string)` | Renamed and available at runtime; initial URL can also be set via `SetStartUrl()` in the builder | -| `PhotinoWindow.LoadRawString(string)` | `IInfiniFrameWindow.LoadRawString(string)` | Available at runtime; initial HTML can also be set via `SetStartString()` in the builder | -| `PhotinoWindow.Center()` | `IInfiniFrameWindow.Center()` / `CenterOnCurrentMonitor()` / `CenterOnMonitor(int)` | Available at runtime | -| `PhotinoWindow.MoveTo(Point, bool)` / `Offset(Point)` | `window.SetLocation(x, y)` / `window.Offset(x, y)` | | -| `PhotinoWindow.SetMinHeight(int)` / `SetMinWidth(int)` | Removed — use `SetMinSize(width, height)` | Consolidated | -| `PhotinoWindow.SetMaxHeight(int)` / `SetMaxWidth(int)` | Removed — use `SetMaxSize(width, height)` | Consolidated | -| `PhotinoWindow.SetLogVerbosity(int)` | Removed — see [Logging](#logging) | | -| `PhotinoWindow.Win32SetWebView2Path(string)` | Internal — not on public interface | | -| `PhotinoWindow.MacOsVersion` (static) | Removed | | -| `PhotinoWindow.IsWindowsPlatform` / `IsMacOsPlatform` / `IsLinuxPlatform` (static) | Removed from public interface | | -| `PhotinoWindow.WaitForClose()` | `IInfiniFrameWindow.WaitForClose()` and `WaitForCloseAsync()` | Async variant added | -| `Monitor` struct | `InfiniMonitor` record | Type renamed. Collection changed from `IReadOnlyList` to `ImmutableArray` | -| `PhotinoDialogButtons` / `PhotinoDialogResult` / `PhotinoDialogIcon` | `InfiniFrameDialogButtons` / `InfiniFrameDialogResult` / `InfiniFrameDialogIcon` | Renamed enums | -| `ShowSaveFile(title, defaultPath, filters, count)` | `ShowSaveFile(title, defaultPath, filters, count, defaultFileName)` | Added `defaultFileName` parameter | - -### New APIs not in Photino - -| API | Description | -|-----------------------------------------------------------------------------|-----------------------------------------------------------------------------| -| `IInfiniFrameWindow.Focused` | Query or set keyboard focus state | -| `IInfiniFrameWindow.WaitForCloseAsync()` | Async wait for window close | -| `IInfiniFrameWindow.ManagedThreadId` | Thread ID of the window's message loop | -| `IInfiniFrameWindow.InstanceHandle` / `NativeType` | Low-level native access | -| `IInfiniFrameWindow.CachedPreFullScreenBounds` / `CachedPreMaximizedBounds` | Saved geometry for restore | -| `RegisterCustomSchemeHandler()` | Returns `IInfiniFrameWindow` (fluent) — in Photino it returned void | -| `ZoomEnabled` | Separate bool controlling whether user can zoom, distinct from `Zoom` level | - -## Event System - -Photino uses standard .NET `EventHandler` delegates. Assigning a new handler **replaces** the previous one: - -```csharp -// Photino — last assignment wins -window.RegisterWindowClosingHandler((sender, args) => { ... }); -``` - -InfiniFrame uses `InfiniFrameOrderedEvent` — an ordered multi-subscriber system with deterministic execution order. Handlers are added via `.Add()` and execute in registration order: - -```csharp -// InfiniFrame — all handlers run in order -window.Events.WindowClosing.Add((window, args) => { ... }); -window.Events.WindowClosing.Add((window, args) => { ... }); // also runs -``` - -### Closing event split - -Photino has a single `RegisterWindowClosingHandler`. InfiniFrame splits this into two events: - -| Event | Type | Description | -|--------------------------|----------------------------------|---------------------------------------------------------------------------------------| -| `WindowClosingRequested` | `InfiniFrameOrderedClosingEvent` | Fired when close is requested and returning `true` from any handler cancels the close | -| `WindowClosing` | `InfiniFrameOrderedEvent` | Fired when the window is definitively closing and cannot be cancelled | - -### Event handler DI injection - -InfiniFrame event handlers support DI-resolved parameters when a `IServiceProvider` is provided to `Build()`: - -```csharp -window.Events.WindowClosing.Add((MyService svc, IInfiniFrameWindow w) => { ... }); -``` - -This is not available in Photino. - -## Web Messaging and Message Routing - -### Photino — single raw handler - -```csharp -window.RegisterWebMessageReceivedHandler((sender, message) => { - // message is the full raw string from JS -}); -``` - -One handler. The full message string is passed as-is. - -### InfiniFrame — typed message routing - -InfiniFrame uses a `messageId;payload` protocol. Messages sent from JavaScript as `"myEvent;some data"` are dispatched to the handler registered for `"myEvent"`: - -```csharp -window.MessageHandlers.RegisterMessageHandler("myEvent", (window, payload) => { - // payload is "some data" -}); -``` - -A fallback `RegisterWebMessageReceivedHandler` is still available for raw unrouted messages, but the typed routing is the primary pattern - -The JavaScript side must use the `messageId;payload` format: - -```js -window.external.sendMessage("myEvent;some data"); -``` - -## Logging - -### Photino — integer verbosity - -```csharp -window.SetLogVerbosity(2); // 0 = silent, higher = more verbose -``` - -Logs were written to `Console.Out`. Setting verbosity would itself log a message even when verbosity was 0 (known bug [#257](https://github.com/tryphotino/photino.NET/issues/257)). - -### InfiniFrame — ILogger - -The integer verbosity system is removed entirely. InfiniFrame integrates with `Microsoft.Extensions.Logging`: - -```csharp -var window = InfiniFrameWindowBuilder.Create() - .Build(serviceProvider); // ILogger resolved from DI -``` - -Log output respects the configured logging provider and log-level filtering - -## Native C++ Interface - -This section is only relevant if you extend InfiniFrame at the native level or have code that calls the native DLL directly - -### Pimpl architecture - -Photino's `Photino` class exposes platform-specific fields (`_hWnd`, `GtkWidget*`, `NSWindow*`) directly in its class declaration, requiring platform headers to be included everywhere the class is used. - -InfiniFrame uses the [Pimpl idiom](https://en.cppreference.com/w/cpp/language/pimpl.html) throughout: a `struct Impl` held by `std::unique_ptr` is defined per-platform in the `.cpp`/`.mm` file. The `InfiniFrameWindow.h` header is entirely platform-agnostic - -### Build system and dependencies - -| Aspect | Photino | InfiniFrame | -|--------------------|----------------------------------------|-----------------------------------| -| Build system | Visual Studio `.vcxproj` + Makefile | CMake 4.0 | -| C++ standard | C++17 | C++23 | -| JSON library | `json.hpp` (nlohmann, bundled) | `simdjson` via CMake FetchContent | -| String conversion | Custom `ToWide`/`ToUTF8String` methods | `simdutf` via CMake FetchContent | -| Formatting | None | `std::format` (C++23 standard) | -| Sanitizers (Debug) | None | ASan / UBSan / LeakSan enabled | - -### Platform file layout - -| Photino | InfiniFrame | -|------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------| -| `Photino.Windows.cpp` (all Windows code) | `Platform/Windows/Window.cpp` | -| `Photino.Linux.cpp` (all Linux code) | `Platform/Linux/Window.cpp` | -| `Photino.Mac.mm` (all macOS code) | `Platform/Mac/Window.mm` + separate delegate files | -| macOS delegates inline in `.mm` | `AppDelegate`, `UiDelegate`, `WindowDelegate`, `NavigationDelegate`, `UrlSchemeHandler`, `NSWindowBorderless` in separate files | - -### P/Invoke generation - -Photino uses manual `[DllImport]` attributes. InfiniFrame uses source-generated `[LibraryImport]` (requires .NET 7+): - -```csharp -// Photino -[DllImport("Photino.Native", ...)] -static extern void Photino_SetTitle(IntPtr instance, string title); - -// InfiniFrame -[LibraryImport("InfiniFrame.Native", ...)] -static partial void InfiniFrame_SetTitle(IntPtr instance, ...); -``` - -### String ownership - -Photino has no explicit API for freeing native-allocated strings, which leads to memory leaks in long-running applications - -InfiniFrame exports explicit free functions that must be called on any string returned from the native layer: - -```csharp -InfiniFrame_FreeString(ptr); -InfiniFrame_FreeStringArray(ptr, count); -``` - -These are called automatically by the managed wrapper — but if you call native exports directly, you are responsible for invoking them - -### `SaveFileDialog` signature change - -The native `SaveFileDialog` export gained a `defaultFileName` parameter: - -```csharp -// Photino -Photino_ShowSaveFile(title, defaultPath, filters, count) - -// InfiniFrame -InfiniFrame_ShowSaveFile(title, defaultPath, filters, count, defaultFileName) -``` - -## Known Photino Issues Addressed - -The following are open or previously reported issues in the Photino repositories that are resolved in InfiniFrame: - -| Photino Issue | Description | How InfiniFrame Addresses It | -|------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------| -| [photino.native #173/174](https://github.com/tryphotino/photino.native/issues/173) | Custom scheme handlers completely broken on Windows (WebResourceRequested never fires) | Rewritten registration path. Scheme handlers tested end-to-end in examples | -| [photino.native #165](https://github.com/tryphotino/photino.native/issues/165) | Memory leak in `SendWebMessage` on Windows | Explicit `InfiniFrame_FreeString` ownership model. Pimpl isolates per-window native allocations | -| [photino.native #158](https://github.com/tryphotino/photino.native/issues/158) | No way to programmatically focus a window | `InfiniFrame_SetFocused` / `InfiniFrame_GetFocused` exported. Exposed via `IInfiniFrameWindow.Focused` | -| [photino.native #163](https://github.com/tryphotino/photino.native/issues/163) | UTF encoding bug in `SetWebView2RuntimePath` silently corrupts non-ASCII paths | `simdutf` used for all UTF-8 ↔ UTF-16 conversions on Windows | -| [photino.native #141](https://github.com/tryphotino/photino.native/issues/141) | Stack overflow in `WaitForExit` on Linux | Per-window independent message loops. No shared global `MessageLoopState` lock | -| [photino.NET #75](https://github.com/tryphotino/photino.NET/issues/75) | `RegisterWindowClosingHandler` does not fire on Linux | Closing handler rewritten using GTK `delete-event` signal correctly | -| [photino.NET #257](https://github.com/tryphotino/photino.NET/issues/257) | `SetLogVerbosity(0)` still logs a message | Integer verbosity removed entirely. Replaced by `ILogger` | -| [photino.NET #232](https://github.com/tryphotino/photino.NET/issues/232) | Custom scheme handlers break `fetch`/`XHR` (CORS interference) | Scheme handler registration refactored. CORS headers handled correctly per platform | -| [photino.native #175](https://github.com/tryphotino/photino.native/issues/175) | `SetTopmost` uses wrong Win32 style. `null` crash on Linux | Fixed Win32 `HWND_TOPMOST`/`HWND_NOTOPMOST` usage. `null` guards added on Linux | - -## Removed or Replaced Features - -The following Photino features are not present in InfiniFrame: - -| Feature | Notes | -|------------------------------------------------------------------------------------|-----------------------------------------------------------| -| `SetMinHeight` / `SetMinWidth` / `SetMaxHeight` / `SetMaxWidth` individual methods | Consolidated into `SetMinSize(w, h)` / `SetMaxSize(w, h)` | -| `LogVerbosity` integer system | Replaced by `ILogger` | -| `MacOsVersion` static property | Removed | -| `IsWindowsPlatform` / `IsMacOsPlatform` / `IsLinuxPlatform` static properties | Internal. Not on public interface | -| `UseOsDefaultLocation` / `UseOsDefaultSize` runtime properties | Builder / config time only | -| `BrowserControlInitParameters` runtime property | Builder / config time only | -| `nlohmann/json.hpp` bundled JSON header | Replaced by `simdjson` | -| `fmt` formatting library | Replaced by `std::format` | diff --git a/docs/content/cpp/code-style.md b/docs/content/cpp/code-style.md deleted file mode 100644 index d326bde0..00000000 --- a/docs/content/cpp/code-style.md +++ /dev/null @@ -1,9 +0,0 @@ -# C/C++ Code Style - -InfiniFrame uses **K&R brace style** for all C and C++ code. - -This style is enforced through the repository-level `.clang-format` file at the project root: - -- `/.clang-format` - -Use `clang-format` with the repo configuration when editing native sources to keep formatting consistent. diff --git a/docs/content/csharp/code-style.md b/docs/content/csharp/code-style.md deleted file mode 100644 index e9aaf33b..00000000 --- a/docs/content/csharp/code-style.md +++ /dev/null @@ -1,13 +0,0 @@ -# C# Code Style - -InfiniFrame uses **K&R brace style** for C# code. - -This is enforced through the repository-level `.editorconfig` at the project root: - -- `/.editorconfig` - -Relevant rule: - -- `csharp_new_line_before_open_brace = none` - -Use your IDE formatter or `dotnet format` with the repository settings so C# formatting stays consistent. diff --git a/docs/content/guides/blazor-webview.md b/docs/content/guides/blazor-webview.md deleted file mode 100644 index 63d87343..00000000 --- a/docs/content/guides/blazor-webview.md +++ /dev/null @@ -1,206 +0,0 @@ -# Blazor WebView Guide - -`InfiniLore.InfiniFrame.BlazorWebView` integrates a full Blazor WebAssembly-style application into a native window with no HTTP server required — the Blazor runtime runs entirely in-process - -## Contents - -- [How It Works](#how-it-works) -- [Project Setup](#project-setup) -- [Program.cs](#programcs) -- [Available Builder API](#available-builder-api) -- [Dependency Injection](#dependency-injection) -- [Custom File Provider](#custom-file-provider) -- [Error Handling](#error-handling) -- [HttpClient](#httpclient) -- [Lifecycle](#lifecycle) -- [Custom Window Chrome](#custom-window-chrome) - -## How It Works - -InfiniFrame registers a custom URL scheme (`app://`) and handles all requests from the WebView internally — Blazor component files, JavaScript, and CSS are served from an `IFileProvider` backed by your `wwwroot/` folder -There is no localhost server; all communication happens through the native browser bridge - -## Project Setup - -Your project must use the Razor SDK: - -```xml - - - net9.0 - Exe - - - - - - -``` - -### wwwroot/index.html - -A minimal host page: - -```html - - - - - - - - - -
Loading...
- - - - -``` - -## Program.cs - -```csharp -using InfiniFrame.BlazorWebView; -using Microsoft.Extensions.DependencyInjection; - -var builder = InfiniFrameBlazorAppBuilder.CreateDefault(args, w => w - .SetTitle("My Blazor App") - .SetSize(1280, 720) - .Center() - .SetChromeless(true) // Optional: remove native title bar -); - -// Register services — same as a standard Blazor or ASP.NET Core app -builder.Services.AddSingleton(); -builder.Services.AddScoped(); - -// Register root components — these map to elements in index.html -builder.RootComponents.Add("#app"); -builder.RootComponents.Add("head::after"); - -builder.Build().Run(); -``` - -`Run()` blocks until the window is closed and then disposes all services - -## Available Builder API - -`InfiniFrameBlazorAppBuilder` exposes three properties for configuration: - -| Property | Type | Description | -|------------------|-----------------------------|-------------------------------------------------------------------------------| -| `WindowBuilder` | `IInfiniFrameWindowBuilder` | Fluent window configuration — all options from the generated C# API reference | -| `Services` | `IServiceCollection` | Standard .NET DI container | -| `RootComponents` | `RootComponentList` | Maps Blazor components to CSS selectors in index.html | - -### Configuring the window separately - -```csharp -var builder = InfiniFrameBlazorAppBuilder.CreateDefault(); - -builder.WithInfiniFrameWindowBuilder(w => w - .SetTitle("Configured Later") - .SetDevToolsEnabled(true) -); -``` - -## Dependency Injection - -The following services are automatically registered and available for injection: - -| Service | Lifetime | Description | -|----------------------|-----------|---------------------------------------| -| `IInfiniFrameWindow` | Singleton | The native window instance | -| `IInfiniFrameJs` | Scoped | JavaScript interop utilities | -| `HttpClient` | Scoped | Preconfigured for in-process requests | -| `Dispatcher` | Singleton | Blazor's component dispatcher | - -### Injecting the window in a component - -```razor -@inject IInfiniFrameWindow Window - - - - -@code { - void Minimize() => Window.Invoke(() => { /* window ops must be on UI thread */ }); - void Close() => Window.Close(); -} -``` - -## Custom File Provider - -By default, files are served from `{AppBaseDirectory}/wwwroot/` -You can supply a custom `IFileProvider` for embedded resources, encrypted assets, or virtual file systems: - -```csharp -using Microsoft.Extensions.FileProviders; - -var embeddedProvider = new EmbeddedFileProvider(typeof(Program).Assembly, "MyApp.wwwroot"); - -var builder = InfiniFrameBlazorAppBuilder.CreateDefault( - fileProvider: embeddedProvider, - args: args -); -``` - -## Error Handling - -Unhandled exceptions in the process are caught automatically and shown as a native message dialog: - -``` -Fatal exception -System.NullReferenceException: Object reference not set... -``` - -To customize error handling, register a handler before `Build()`: - -```csharp -AppDomain.CurrentDomain.UnhandledException += (_, e) => { - // Custom logging or reporting -}; -``` - -## HttpClient - -An `HttpClient` is registered automatically with `BaseAddress` set to the internal app base URI -This lets you make in-process requests to your static assets or call external APIs: - -```razor -@inject HttpClient Http - -@code { - protected override async Task OnInitializedAsync() { - var data = await Http.GetFromJsonAsync("data/mydata.json"); - } -} -``` - -## Lifecycle - -``` -InfiniFrameBlazorAppBuilder.CreateDefault() - ↓ -Configure Services & RootComponents - ↓ -.Build() ← Registers the custom scheme, creates the window - ↓ -.Run() ← Starts the Blazor runtime, blocks until window closes - ↓ -DisposeAsync() ← Disposes all services -``` - -## Custom Window Chrome - -Combine with `InfiniLore.InfiniFrame.Blazor` for a fully custom title bar - -See the [Custom Window Chrome Guide](custom-window-chrome.md) for details - -## Examples - -- `InfiniFrameExample.BlazorWebView` (`examples/InfiniFrameExample.BlazorWebView`) - minimal Blazor app with window configuration and Serilog -- `InfiniFrameExample.BlazorWebView.MultiWindowSample` (`examples/InfiniFrameExample.BlazorWebView.MultiWindowSample`) - multiple windows each hosting a different Blazor component diff --git a/docs/content/guides/core-window.md b/docs/content/guides/core-window.md deleted file mode 100644 index 0f65cadc..00000000 --- a/docs/content/guides/core-window.md +++ /dev/null @@ -1,416 +0,0 @@ -# Core Window Guide - -This guide covers everything available through the `InfiniLore.InfiniFrame` package — the foundation of all InfiniFrame integrations - -## Contents - -- [Building a Window](#building-a-window) -- [Single-File Native Packaging](#single-file-native-packaging) -- [Window Configuration](#window-configuration) -- [Browser Features](#browser-features) -- [Runtime Window Control](#runtime-window-control) -- [Events](#events) -- [Web Messaging](#web-messaging) -- [Custom URL Schemes](#custom-url-schemes) -- [Dialogs](#dialogs) -- [Monitor Information](#monitor-information) -- [DI Container Integration](#di-container-integration) - -## Building a Window - -All windows are created through `InfiniFrameWindowBuilder` using a fluent API - -```csharp -using InfiniFrame; - -var window = InfiniFrameWindowBuilder.Create() - .SetTitle("My App") - .SetSize(1280, 720) - .Center() - .SetStartUrl("https://myapp.local") - .Build(); - -window.WaitForClose(); -``` - -`Build()` creates and displays the native window immediately on the calling thread -The returned `IInfiniFrameWindow` gives you full control over the window at runtime - -## Single-File Native Packaging - -When your app is published as a single-file executable with embedded InfiniFrame native binaries, call `InfiniFrameSingleFileBootstrap.Initialize()` before creating any windows. - -```csharp -using InfiniFrame; - -public static class Program { - [STAThread] - public static void Main(string[] args) { - InfiniFrameSingleFileBootstrap.Initialize(); - - var window = InfiniFrameWindowBuilder.Create() - .SetTitle("My App") - .SetSize(1280, 720) - .Center() - .SetStartUrl("app://index.html") - .Build(); - - window.WaitForClose(); - } -} -``` - -`Initialize()` is idempotent and safe to call once at startup. -Use it for packaged deployments created by `InfiniLore.InfiniFrame.Tools.Pack` (or any equivalent flow that embeds native files as resources), not for standard development runs where native binaries are already present beside your app. - -## Window Configuration - -All configuration methods are chainable and must be called before `Build()` - -### Title and Icon - -```csharp -builder - .SetTitle("My Application") - .SetIconFile("assets/icon.ico") // Windows and Linux only; .ico on Windows, .png on Linux -``` - -### Size and Position - -```csharp -builder - .SetSize(1280, 720) // Width × Height - .SetMinSize(800, 600) - .SetMaxSize(1920, 1080) - .SetLocation(100, 100) // Left, Top in screen coordinates - .Center() // Center on the primary monitor - .SetUseOsDefaultSize(true) // Let the OS choose the initial size - .SetUseOsDefaultLocation(true) -``` - -Calling `SetSize` or `SetLocation` disables the corresponding OS default and centering behavior - -### Window State - -```csharp -builder - .SetMaximized(true) - .SetMinimized(true) - .SetFullScreen(true) - .SetResizable(false) - .SetTopMost(true) // Always on top - .SetChromeless(true) // Remove the native title bar and borders - .SetTransparent(true) // Enable window transparency -``` - -On Windows, enabling `SetChromeless` automatically disables `UseOsDefaultLocation`, `UseOsDefaultSize`, and `Resizable` since they are incompatible - -### Content - -```csharp -builder - .SetStartUrl("https://example.com") - .SetStartUrl(new Uri("https://example.com")) - .SetStartString("Hello") // Render HTML directly -``` - -`SetStartUrl` and `SetStartString` are mutually exclusive — the last one set wins - -## Browser Features - -```csharp -builder - .SetDevToolsEnabled(true) - .SetContextMenuEnabled(false) - .SetZoomEnabled(false) - .SetZoom(150) // Zoom level (100 = default) - .SetMediaAutoplayEnabled(true) - .SetFileSystemAccessEnabled(true) - .SetWebSecurityEnabled(false) // Disable CORS (use with caution) - .SetJavascriptClipboardAccessEnabled(true) - .SetMediaStreamEnabled(true) // Camera/microphone access - .SetSmoothScrollingEnabled() - .SetIgnoreCertificateErrorsEnabled() - .SetUserAgent("MyApp/1.0") -``` - -### Notifications (Windows only) - -```csharp -builder - .SetNotificationsEnabled() - .SetNotificationRegistrationId("com.myapp.notifications") // Windows only - .GrantBrowserPermissions() // Auto-grant camera/mic permissions (Windows only) -``` - -### Platform-specific browser parameters - -The `SetBrowserControlInitParameters` method passes raw flags to the underlying browser engine: - -```csharp -// Windows — space-separated Chromium flags -builder.SetBrowserControlInitParameters("--disable-gpu --no-sandbox") - -// Linux — JSON object matching WebKit2GTK settings -builder.SetBrowserControlInitParameters("{ \"enable_developer_extras\": true }") - -// macOS — JSON object matching WKPreferences keys -builder.SetBrowserControlInitParameters("{ \"minimumFontSize\": 12 }") -``` - -## Runtime Window Control - -Once a window is built, `IInfiniFrameWindow` provides methods to control it at runtime - -### State and properties - -```csharp -window.Size // Current size (read-only) -window.Location // Current position (read-only) -window.MaxSize // Get or set the maximum size at runtime -window.MinSize // Get or set the minimum size at runtime -window.Focused // Whether the window currently has focus -window.Maximized // (via events, not a direct property at runtime) -window.ScreenDpi // Current DPI - -window.Monitors // ImmutableArray — all connected monitors -window.MainMonitor // The monitor the window is currently on -``` - -### Window operations - -```csharp -window.Close() -window.WaitForClose() -await window.WaitForCloseAsync() -``` - -### STA requirement (Windows) - -WebView2 is COM-based and requires the thread that calls `Build()` to be STA. Without `[STAThread]`, the window opens but the browser control renders as a black screen, and `Build()` now throws `InvalidOperationException` to surface this early - -```csharp -// Required for all InfiniFrame apps on Windows -internal class Program { - [STAThread] - static void Main(string[] args) { - var window = InfiniFrameWindowBuilder.Create() - // ... - .Build(); - - window.WaitForClose(); - } -} -``` - -Top-level statements cannot carry `[STAThread]` so use an explicit `static void Main()` as shown above - -> **Note:** `[STAThread]` is silently ignored on `async Task Main`. The async continuation runs on thread pool threads (MTA). Never use `async Task Main` as the entry point for an InfiniFrame application. **Linux does not have this restriction** because GTK has no COM apartment model. The native constructor calls `gtk_init()` itself and implicitly claims whichever thread calls `Build()` as the GTK main thread - -### Cross-thread invocation - -All UI operations must run on the window's thread — use `Invoke` to marshal work from a background thread: - -```csharp -Task.Run(() => { - // Background thread - window.Invoke(() => { - // Runs on the window thread - window.Close(); - }); -}); -``` - -## Events - -Events are available through `IInfiniFrameWindowEvents`, accessible via `IInfiniFrameWindowBuilder.Events` - -```csharp -var builder = InfiniFrameWindowBuilder.Create(); - -builder.Events.WindowCreated.Add(() => Console.WriteLine("Window opened")); -builder.Events.WindowSizeChanged.Add(size => Console.WriteLine($"Resized to {size}")); -builder.Events.WindowLocationChanged.Add(loc => Console.WriteLine($"Moved to {loc}")); -builder.Events.WindowFocusIn.Add(() => Console.WriteLine("Focus gained")); -builder.Events.WindowFocusOut.Add(() => Console.WriteLine("Focus lost")); -builder.Events.WindowMaximized.Add(() => Console.WriteLine("Maximized")); -builder.Events.WindowMinimized.Add(() => Console.WriteLine("Minimized")); -builder.Events.WindowRestored.Add(() => Console.WriteLine("Restored")); -builder.Events.WebMessageReceived.Add(msg => Console.WriteLine($"Message: {msg}")); - -var window = builder.Build(); -window.WaitForClose(); -``` - -### Intercepting window close - -Use `WindowClosingRequested` to cancel or intercept a close: - -```csharp -builder.Events.WindowClosingRequested.Add(() => { - // Return true to allow closing, false to cancel - return AskUserToConfirm(); -}); -``` - -Use `WindowClosing` to run cleanup before the window is destroyed: - -```csharp -builder.Events.WindowClosing.Add((window, cancel) => { - SaveAppState(); - return false; // returning false here does not cancel — use WindowClosingRequested for that -}); -``` - -See the generated C# API reference for the full event system documentation - -## Web Messaging - -InfiniFrame provides a two-way messaging channel between JavaScript running in the browser control and your C# code - -### C# → JavaScript - -```csharp -window.SendWebMessage("hello from C#"); -await window.SendWebMessageAsync("async hello"); -``` - -In JavaScript, listen with: - -```js -window.external.receiveMessage(function(message) { - console.log("Received:", message); -}); -``` - -### JavaScript → C# - -In JavaScript, send with: - -```js -window.external.sendMessage("hello from JS"); -``` - -In C#, handle with: - -```csharp -builder.Events.WebMessageReceived.Add(message => { - Console.WriteLine($"From JS: {message}"); -}); -``` - -Or register a named handler through `IInfiniFrameWindowMessageHandlers`: - -```csharp -builder.MessageHandlers.RegisterMessageHandler("ping", (window, _) => { - window.SendWebMessage("pong"); -}); -``` - -## Custom URL Schemes - -You can intercept requests for custom URL schemes (e.g. `app://`) and serve content from C# code — useful for loading local assets or implementing a virtual file system - -```csharp -builder.RegisterCustomSchemeHandler("app", (sender, scheme, url, out string? contentType) => { - contentType = "text/html"; - var html = "Hello from custom scheme"; - return new MemoryStream(Encoding.UTF8.GetBytes(html)); -}); -``` - -- Up to 16 custom schemes can be registered before `Build()` is called -- Additional handlers can be added after `Build()` via `window.RegisterCustomSchemeHandler(...)` -- Scheme names are lowercased automatically - -## Dialogs - -InfiniFrame exposes the native OS dialog system - -### Message box - -```csharp -var result = window.ShowMessage( - title: "Confirm", - text: "Are you sure you want to quit?", - buttons: InfiniFrameDialogButtons.YesNo, - icon: InfiniFrameDialogIcon.Question -); - -if (result == InfiniFrameDialogResult.Yes) { - window.Close(); -} -``` - -### File pickers - -```csharp -// Open one or more files -string?[] files = window.ShowOpenFile( - title: "Open File", - defaultPath: null, - multiSelect: true, - filters: [("Images", ["png", "jpg", "gif"]), ("All Files", ["*"])] -); - -// Open folder(s) -string?[] folders = window.ShowOpenFolder("Select Folder", multiSelect: false); - -// Save file -string? path = window.ShowSaveFile( - title: "Save As", - defaultPath: null, - filters: [("Text Files", ["txt"])] -); -``` - -All dialogs also have async overloads (`ShowOpenFileAsync`, `ShowSaveFileAsync`, etc.) - -### Notifications (Windows only) - -```csharp -window.SendNotification("Update available", "A new version is ready to install"); -``` - -Requires `SetNotificationsEnabled()` and `SetNotificationRegistrationId(...)` to be set during configuration - -## Monitor Information - -```csharp -// All connected monitors -foreach (InfiniMonitor monitor in window.Monitors) { - Console.WriteLine($"Monitor: {monitor.MonitorArea}, Work area: {monitor.WorkArea}, Scale: {monitor.Scale}"); -} - -// The monitor the window is currently on -InfiniMonitor main = window.MainMonitor; -``` - -## DI Container Integration - -When building with a `ServiceProvider`, the builder reads configuration from the `InfiniFrame` section automatically: - -```csharp -// appsettings.json -{ - "InfiniFrame": { - "Title": "My App", - "Width": 1280, - "Height": 720 - } -} -``` - -Pass the provider to `Build`: - -```csharp -var window = builder.Build(serviceProvider); -``` - -`IInfiniFrameWindow` will then be resolvable from the container if registered - -## Examples - -- `InfiniFrameExample.WebApp.React` (`examples/InfiniFrameExample.WebApp.React`) - custom URL scheme handler and web messaging with DI-resolved services -- `InfiniFrameExample.BlazorWebView` (`examples/InfiniFrameExample.BlazorWebView`) - window builder configuration with size, position, and icon -- `InfiniFrameExample.SingleFileExe` (`examples/InfiniFrameExample.SingleFileExe`) - embedded static assets and single-file native bootstrap diff --git a/docs/content/guides/custom-window-chrome.md b/docs/content/guides/custom-window-chrome.md deleted file mode 100644 index 5d13b98e..00000000 --- a/docs/content/guides/custom-window-chrome.md +++ /dev/null @@ -1,198 +0,0 @@ -# Custom Window Chrome Guide - -`InfiniLore.InfiniFrame.Blazor` provides pre-built Razor components for building custom window title bars and resize handles — typically used together with a chromeless window - -## Contents - -- [Installation](#installation) -- [Enable Chromeless Mode](#enable-chromeless-mode) -- [Components](#components) -- [Full Layout Example](#full-layout-example) -- [JavaScript Interop for Drag Areas](#javascript-interop-for-drag-areas) -- [Styling Tips](#styling-tips) - -## Installation - -```bash -dotnet add package InfiniLore.InfiniFrame.Blazor -``` - -This package is a companion to `InfiniLore.InfiniFrame.BlazorWebView` or `InfiniLore.InfiniFrame.WebServer` - -## Enable Chromeless Mode - -Remove the native OS title bar so your Blazor UI is the entire window: - -```csharp -builder.WithInfiniFrameWindowBuilder(w => w - .SetChromeless(true) - .SetTransparent(true) // Optional: for rounded corners or glassmorphism effects - .SetSize(1280, 720) - .Center() -); -``` - -On Windows, enabling chromeless mode automatically disables `UseOsDefaultLocation`, `UseOsDefaultSize`, and `Resizable` — set them explicitly if needed after calling `SetChromeless` - -## Components - -### InfiniFrameWindowDragArea - -Makes any area of the page draggable — acts as the window's title bar - -```razor - - My Application - -``` - -Place this at the top of your layout to create a custom drag region -The component handles pointer capture automatically so drag operations remain stable even when the cursor moves fast - -### InfiniFrameWindowButton - -A button that performs a window action (minimize, maximize, or close): - -```razor - - - -``` - -| `WindowAction` | Description | -|----------------|---------------------------------------------| -| `Minimize` | Minimizes the window to the taskbar | -| `Maximize` | Maximizes or restores the window | -| `Close` | Closes the window and exits the application | - -Each button is styled via its `.razor.css` scoped stylesheet — override the styles in your own CSS by targeting the component's generated class or wrapping it in a styled container - -### InfiniFrameWindowResizeThumb - -A drag handle for resizing the window from a specific edge or corner: - -```razor - -``` - -### InfiniFrameWindowResizeThumbContainer - -Renders resize thumbs for all edges and corners in a single declaration: - -```razor - -``` - -Place this at the root level of your layout so it covers the entire window perimeter - -## Full Layout Example - -A complete custom window chrome in a Blazor layout: - -```razor -@* MainLayout.razor *@ -@inherits LayoutComponentBase - -
- - - - - -
- - App icon - My Application - - -
- - - -
-
- - -
- @Body -
- -
-``` - -```css -/* MainLayout.razor.css */ -.window-root { - display: flex; - flex-direction: column; - height: 100vh; - overflow: hidden; -} - -.titlebar { - display: flex; - align-items: center; - height: 32px; - background: #1e1e2e; - user-select: none; -} - -.drag-region { - flex: 1; - display: flex; - align-items: center; - gap: 8px; - padding: 0 12px; - height: 100%; -} - -.window-buttons { - display: flex; - height: 100%; -} - -.content { - flex: 1; - overflow: auto; -} -``` - -## JavaScript Interop for Drag Areas - -`InfiniLore.InfiniFrame.Js` is used internally by the drag and resize components to call `setPointerCapture` on the underlying DOM element — this ensures drag operations continue even when the pointer leaves the element boundary - -If you are building your own drag components, you can use `IInfiniFrameJs` directly: - -```csharp -@inject IInfiniFrameJs InfiniJs - -
...
- -@code { - ElementReference dragRef; - - async Task OnPointerDown(PointerEventArgs e) { - await InfiniJs.SetPointerCaptureAsync(dragRef, e.PointerId, CancellationToken.None); - } -} -``` - -See the [JavaScript Interop Guide](javascript-interop.md) for full details - -## Styling Tips - -- The resize thumbs are transparent by default — they only respond to pointer events at the window edge -- On Windows with `SetTransparent(true)`, your CSS `background: transparent` will show through to the desktop, enabling acrylic or mica-style effects via the CSS backdrop -- Double-clicking on a `InfiniFrameWindowDragArea` does not automatically maximize — handle `@ondblclick` yourself if you want that behavior: - -```razor -@inject IInfiniFrameWindow Window - - - ... - - -@code { - void ToggleMaximize() => Window.ToggleMaximized(); -} -``` diff --git a/docs/content/guides/getting-started.md b/docs/content/guides/getting-started.md deleted file mode 100644 index 33b13164..00000000 --- a/docs/content/guides/getting-started.md +++ /dev/null @@ -1,190 +0,0 @@ -# Getting Started - -This guide walks you through installing InfiniFrame and creating your first native desktop window - -## Contents - -- [Prerequisites](#prerequisites) -- [Choose Your Integration](#choose-your-integration) -- [Option 1 — Core Window](#option-1--core-window) -- [Option 2 — Blazor WebView](#option-2--blazor-webview) -- [Option 3 — Web Server](#option-3--web-server) -- [Next Steps](#next-steps) - -## Prerequisites - -- [.NET 8 SDK](https://dotnet.microsoft.com/download) or later (.NET 8, 9, and 10 are all supported) -- A console or class library project targeting `net8.0`, `net9.0`, or `net10.0` - -### Platform-specific requirements - -| Platform | Requirement | -|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Windows | [WebView2 Runtime](https://developer.microsoft.com/en-us/microsoft-edge/webview2/) — pre-installed on Windows 11; available as a redistributable for Windows 10 | -| Linux | `webkit2gtk-4.0` and `libgtk-3-dev` installed via your package manager | -| macOS | macOS 10.15 Catalina or later (WKWebView is built into the OS) | - -## Choose Your Integration - -InfiniFrame supports three integration models depending on your use case: - -| Use Case | Package | -|-----------------------------------------------------|----------------------------------------| -| Load a URL or HTML string in a window | `InfiniLore.InfiniFrame` | -| Run a Blazor app inside a native window (no server) | `InfiniLore.InfiniFrame.BlazorWebView` | -| Run an ASP.NET Core web app with a native window | `InfiniLore.InfiniFrame.WebServer` | - -## Option 1 — Core Window - -### Install - -```bash -dotnet add package InfiniLore.InfiniFrame -``` - -### Create a window - -```csharp -using InfiniFrame; - -// Create and configure the window -var window = InfiniFrameWindowBuilder.Create() - .SetTitle("Hello, InfiniFrame") - .SetSize(1280, 720) - .Center() - .SetStartUrl("https://example.com") - .Build(); - -// Block until the user closes the window -window.WaitForClose(); -``` - -The window opens immediately when `Build()` is called and runs on the current thread -`WaitForClose()` blocks until the native window is destroyed - -> **Windows:** WebView2 requires the calling thread to be STA (single-threaded apartment). Add `[STAThread]` to your `Main` method. Top-level statements do not support `[STAThread]` directly — use an explicit `static void Main()` instead. Calling `Build()` on a non-STA thread will throw an `InvalidOperationException` - -### Single-file/native packaging bootstrap - -If you package your app with embedded native binaries (for example via `InfiniLore.InfiniFrame.Tools.Pack`), initialize the single-file bootstrap before building your first window: - -```csharp -using InfiniFrame; - -public static class Program { - [STAThread] - public static void Main(string[] args) { - InfiniFrameSingleFileBootstrap.Initialize(); - - var window = InfiniFrameWindowBuilder.Create() - .SetTitle("Hello, InfiniFrame") - .SetSize(1280, 720) - .Center() - .SetStartUrl("https://example.com") - .Build(); - - window.WaitForClose(); - } -} -``` - -You only need this for packaged outputs that embed native runtime files as resources. Standard development runs (`dotnet run`) do not require it. - -## Option 2 — Blazor WebView - -This integration runs a Blazor application entirely in-process — no server, no HTTP port - -### Install - -```bash -dotnet add package InfiniLore.InfiniFrame.BlazorWebView -``` - -### Project setup - -Your project must use `Microsoft.NET.Sdk.Razor` and have a `wwwroot/` folder with `index.html` - -A minimal `index.html`: - -```html - - - - - - - -
Loading...
-
An error has occurred.
- - - -``` - -### Program.cs - -```csharp -using InfiniFrame.BlazorWebView; -using Microsoft.Extensions.DependencyInjection; - -var builder = InfiniFrameBlazorAppBuilder.CreateDefault(args, w => w - .SetTitle("My Blazor App") - .SetSize(1280, 720) - .Center() -); - -// Register your services -builder.Services.AddSingleton(); - -// Register root Blazor components -builder.RootComponents.Add("#app"); -builder.RootComponents.Add("head::after"); - -builder.Build().Run(); -``` - -### Service access in components - -`IInfiniFrameWindow` is automatically registered in the DI container so you can inject it directly into any Blazor component or service: - -```csharp -@inject IInfiniFrameWindow Window - - -``` - -## Option 3 — Web Server - -This integration starts an ASP.NET Core web server in a background thread and opens a native window pointing at it — ideal when you want the full ASP.NET Core pipeline (middleware, controllers, SignalR, etc.) - -### Install - -```bash -dotnet add package InfiniLore.InfiniFrame.WebServer -``` - -### Program.cs - -```csharp -using InfiniFrame.WebServer; - -var app = InfiniFrameWebApplication.CreateBuilder(args) - .Build() - .UseAutoServerClose(); - -// Configure the ASP.NET Core pipeline on app.WebApp -app.WebApp.UseRouting(); -app.WebApp.MapGet("/", () => "Hello from InfiniFrame"); - -app.Run(); -``` - -The start URL is automatically read from `ASPNETCORE_URLS` or the `urls` configuration key -`UseAutoServerClose()` ensures the server shuts down gracefully when the window is closed - -## Next Steps - -- [Core Window Guide](core-window.md) — Window events, messaging, dialogs, custom schemes -- [Blazor Guide](blazor-webview.md) — DI, file providers, component configuration -- [Web Server Guide](web-server.md) — ASP.NET Core pipeline, DI access, graceful shutdown -- Generated C# API Reference (`docs/api`, via `docfx metadata`) — Complete member-level reference diff --git a/docs/content/guides/javascript-interop.md b/docs/content/guides/javascript-interop.md deleted file mode 100644 index a3c10e2e..00000000 --- a/docs/content/guides/javascript-interop.md +++ /dev/null @@ -1,217 +0,0 @@ -# JavaScript Interop Guide - -InfiniFrame provides two layers of JS interop: - -## Contents - -- [Web Messaging](#web-messaging) -- [InfiniFrame.Js](#infiniframejs) -- [Built-in JavaScript Message Handlers](#built-in-javascript-message-handlers) -- [Exchanging Structured Data](#exchanging-structured-data) - -1. **Web messaging** — a simple string-based channel between C# and the page's JavaScript -2. **InfiniFrame.Js** — Blazor-specific utilities for pointer capture and built-in window management message handlers - -## Web Messaging - -The messaging channel works the same way regardless of whether you are using plain HTML, a Blazor app, or an ASP.NET Core server - -### Sending from C# to JavaScript - -```csharp -window.SendWebMessage("hello from C#"); -await window.SendWebMessageAsync("async hello"); -``` - -In the browser: - -```js -window.external.receiveMessage(function(message) { - console.log("Received from C#:", message); -}); -``` - -### Sending from JavaScript to C# - -```js -window.external.sendMessage(JSON.stringify({ type: "action", payload: 42 })); -``` - -In C#: - -```csharp -builder.Events.WebMessageReceived.Add(raw => { - var msg = JsonSerializer.Deserialize(raw); - // handle msg -}); -``` - -### Named message handlers - -Instead of parsing all messages in one handler, register named handlers through `IInfiniFrameWindowMessageHandlers`: - -```csharp -// At build time, via the builder -var window = InfiniFrameWindowBuilder.Create() - ... - .Build(); - -window.MessageHandlers.RegisterMessageHandler("ping", (window, _) => { - window.SendWebMessage("pong"); -}); - -window.MessageHandlers.RegisterMessageHandler("set-title", (window, title) => { - // handle title change — title is the payload after ';' -}); -``` - -```js -// Messages use the "handlerId;payload" format -window.external.sendMessage("ping"); -window.external.sendMessage("set-title;New Title"); -``` - -## InfiniFrame.Js - -`InfiniLore.InfiniFrame.Js` provides Blazor-specific interop and registers built-in message handlers for window management from JavaScript - -### Installation - -```bash -dotnet add package InfiniLore.InfiniFrame.Js -``` - -This package is automatically included by `InfiniLore.InfiniFrame.BlazorWebView` - -### DI Registration - -When using the core package directly (not BlazorWebView), register the service manually: - -```csharp -services.AddInfiniFrameJs(); -``` - -### IInfiniFrameJs - -`IInfiniFrameJs` exposes pointer capture methods for Blazor components: - -```csharp -public interface IInfiniFrameJs { - Task SetPointerCaptureAsync(ElementReference element, long pointerId, CancellationToken ct); - Task ReleasePointerCaptureAsync(ElementReference element, long pointerId, CancellationToken ct); -} -``` - -These wrap the browser's `element.setPointerCapture(pointerId)` / `element.releasePointerCapture(pointerId)` APIs, which are necessary for reliable drag interactions — the pointer capture keeps events flowing to the element even after the pointer leaves it - -```razor -@inject IInfiniFrameJs InfiniJs - -
- Drag me -
- -@code { - ElementReference handle; - - async Task StartDrag(PointerEventArgs e) { - await InfiniJs.SetPointerCaptureAsync(handle, e.PointerId, default); - } - - async Task EndDrag(PointerEventArgs e) { - await InfiniJs.ReleasePointerCaptureAsync(handle, e.PointerId, default); - } -} -``` - -## Built-in JavaScript Message Handlers - -`InfiniFrame.Js` registers several message handlers that the client-side `InfiniFrame.js` script uses to control the native window from JavaScript - -### Including the script - -```html - -``` - -### Available handlers - -| Handler ID | Triggered by | What it does | -|----------------------------------|------------------|----------------------------------------------------------| -| `__infiniframe:window:minimize` | `InfiniFrame.js` | Minimize the window | -| `__infiniframe:window:maximize` | `InfiniFrame.js` | Maximize the window | -| `__infiniframe:window:close` | `InfiniFrame.js` | Close the window | -| `__infiniframe:fullscreen:enter` | `InfiniFrame.js` | Enter fullscreen | -| `__infiniframe:fullscreen:exit` | `InfiniFrame.js` | Exit fullscreen | -| `__infiniframe:title:change` | `InfiniFrame.js` | Update the native window title | -| `__infiniframe:open:external` | `InfiniFrame.js` | Open links with `target="_blank"` in the default browser | - -These are used internally by `InfiniFrameWindowDragArea`, `InfiniFrameWindowButton`, and related components — you do not need to call them manually unless you are building custom components - -### Sending a window management message from custom JavaScript - -All messages follow the `"handlerId;payload"` format — payload is optional: - -```js -window.external.sendMessage("__infiniframe:window:minimize"); -window.external.sendMessage("__infiniframe:window:maximize"); -window.external.sendMessage("__infiniframe:window:close"); -``` - -```js -// Title payload is the new title string -window.external.sendMessage("__infiniframe:title:change;New Window Title"); -``` - -```js -window.external.sendMessage("__infiniframe:fullscreen:enter"); -window.external.sendMessage("__infiniframe:fullscreen:exit"); -``` - -When using `InfiniFrame.js`, you can go through its API instead: - -```js -window.infiniFrame.HostMessaging.sendMessageToHost("__infiniframe:window:minimize"); -window.infiniFrame.HostMessaging.sendMessageToHost("__infiniframe:title:change", "New Title"); -``` - -## Exchanging Structured Data - -The message channel is string-only, so use JSON for structured communication: - -**C# → JS:** - -```csharp -var payload = JsonSerializer.Serialize(new { type = "update", count = 42 }); -window.SendWebMessage(payload); -``` - -```js -window.external.receiveMessage(function(raw) { - const msg = JSON.parse(raw); - if (msg.type === "update") { - updateUI(msg.count); - } -}); -``` - -**JS → C#:** - -```js -window.external.sendMessage(JSON.stringify({ type: "log", message: "hello" })); -``` - -```csharp -builder.Events.WebMessageReceived.Add(raw => { - using var doc = JsonDocument.Parse(raw); - var type = doc.RootElement.GetProperty("type").GetString(); - // route by type -}); -``` - -## Examples - -- `InfiniFrameExample.WebApp.Vue` (`examples/InfiniFrameExample.WebApp.Vue`) - registers all built-in message handlers for window management, fullscreen, title change, and external links -- `InfiniFrameExample.WebApp.React` (`examples/InfiniFrameExample.WebApp.React`) - custom scheme handler returning dynamic JavaScript, and a two-way messaging round-trip diff --git a/docs/content/guides/pack-tool.md b/docs/content/guides/pack-tool.md deleted file mode 100644 index 34d8fabb..00000000 --- a/docs/content/guides/pack-tool.md +++ /dev/null @@ -1,240 +0,0 @@ -# InfiniLore.InfiniFrame.Tools.Pack Guide - -`InfiniLore.InfiniFrame.Tools.Pack` is a .NET tool that packages an InfiniFrame application into a single-file executable while embedding: - -- `wwwroot` content -- Native InfiniFrame runtime binaries for the selected runtime identifier (RID) - -This guide covers how to install the tool, run it, and avoid common packaging issues. - -## Contents - -- [Overview](#overview) -- [How It Works](#how-it-works) -- [Install and Setup](#install-and-setup) -- [Install from NuGet](#install-from-nuget) -- [Command Syntax](#command-syntax) -- [Usage Examples](#usage-examples) -- [Common Patterns](#common-patterns) -- [App Bootstrap Requirement](#app-bootstrap-requirement) -- [Edge Cases and Pitfalls](#edge-cases-and-pitfalls) - -## Overview - -Use `InfiniLore.InfiniFrame.Tools.Pack` when you want a single distributable output for an InfiniFrame app. - -Compared to a regular `dotnet publish`, the tool additionally: - -- Resolves native InfiniFrame runtime files from publish output -- Verifies required native artifacts exist before publish starts -- Injects custom MSBuild targets so `wwwroot` and native runtime files are embedded as resources -- Cleans unpacked runtime artifacts from the final publish directory - -Because native files are embedded as resources, your app must initialize the runtime resolver at startup with `InfiniFrameSingleFileBootstrap.Initialize()`. - -## How It Works - -At a high level, `infiniframe-pack publish` runs this pipeline: - -1. Parse CLI options and resolve defaults (`RID`, framework, output path). -2. Resolve native runtime artifacts from a preflight `dotnet publish` output (repo-agnostic, works for NuGet consumers). -3. Run `dotnet publish` in single-file mode with custom MSBuild targets. -4. Remove unpacked `wwwroot` and native runtime files from the publish folder. - -## Install and Setup - -### Prerequisites - -- .NET 10 SDK (or a compatible SDK for your repo setup) -- A publishable app `.csproj` -- An app publish output that includes InfiniFrame native runtime files for the selected RID - -### Build and install from source (local feed) - -From the repository root: - -```powershell -.\src\InfiniFrame.Tools.Pack\install-or-update-pack-tool.ps1 -``` - -```bash -bash ./src/InfiniFrame.Tools.Pack/install-or-update-pack-tool.sh -``` - -Manual alternative: - -```bash -dotnet pack src/InfiniFrame.Tools.Pack/InfiniFrame.Tools.Pack.csproj -c Release -dotnet tool install --local --add-source ./src/InfiniFrame.Tools.Pack/bin/Release InfiniLore.InfiniFrame.Tools.Pack -``` - -Run with: - -```bash -dotnet tool run infiniframe-pack --help -``` - -## Install from NuGet - -If the package is published to NuGet, you can install it directly without building from source. - -### Global install - -```bash -dotnet tool install --global InfiniLore.InfiniFrame.Tools.Pack -``` - -Run with: - -```bash -infiniframe-pack --help -``` - -### Update or uninstall - -```bash -dotnet tool update --global InfiniLore.InfiniFrame.Tools.Pack -dotnet tool uninstall --global InfiniLore.InfiniFrame.Tools.Pack -``` - -## Command Syntax - -```bash -dotnet tool run infiniframe-pack publish [options] -``` - -Options: - -- `--rid `: Target runtime identifier. Default is `auto`. -- `--configuration `: Build configuration. Default is `Release`. -- `--framework `: Target framework. Default is `TargetFramework`, or first `TargetFrameworks` entry. -- `--self-contained `: Self-contained publish mode. Default is `true`. -- `--output `: Publish output directory. Default is `bin////publish`. -- `--no-restore`: Skip restore during publish. -- `--verbose`: Use normal verbosity for preflight and final publish. -- `--force-clean-output`: Allow recursive deletion of non-default output folders before publish. - -## Usage Examples - -### Basic publish with defaults - -```bash -dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj -``` - -### Publish for a specific runtime - -```bash -dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj --rid win-x64 -``` - -### Multi-targeted app, choose framework explicitly - -```bash -dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj --framework net10.0 -``` - -### Custom output and faster inner-loop publish - -```bash -dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj \ - --configuration Debug \ - --no-restore \ - --output artifacts/publish/MyApp-win-x64 \ - --verbose -``` - -## Common Patterns - -### MSBuild integration (for `InfiniFramePackAfterBuild`) - -If your project runs packaging from an MSBuild target (for example with `$(InfiniFramePackCommand)`), the tool command -must be available on the machine first. - -For repo development, build and install from `src/InfiniFrame.Tools.Pack/InfiniFrame.Tools.Pack.csproj`: - -```powershell -.\src\InfiniFrame.Tools.Pack\install-or-update-pack-tool.ps1 -``` - -```bash -bash ./src/InfiniFrame.Tools.Pack/install-or-update-pack-tool.sh -``` - -Manual alternative: - -```bash -dotnet pack src/InfiniFrame.Tools.Pack/InfiniFrame.Tools.Pack.csproj -c Release -dotnet tool install --global --add-source ./src/InfiniFrame.Tools.Pack/bin/Release InfiniLore.InfiniFrame.Tools.Pack -``` - -If you cannot install globally, set your project to use a different command, for example: - -```bash --p:InfiniFramePackCommand="dotnet tool run infiniframe-pack" -``` - -### CI-friendly deterministic output paths - -Pass an explicit `--output` directory so build artifacts land in a stable path: - -```bash -dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj --output artifacts/publish/MyApp -``` - -### Packaging multiple RIDs - -Run the tool once per RID and separate outputs: - -```bash -dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj --rid win-x64 --output artifacts/publish/MyApp-win-x64 -dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj --rid linux-x64 --output artifacts/publish/MyApp-linux-x64 -dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj --rid osx-arm64 --output artifacts/publish/MyApp-osx-arm64 -``` - -### Prefer explicit `--framework` for multi-targeting projects - -If your project uses `TargetFrameworks`, pass `--framework` to avoid accidental changes when framework order is edited. - -## App Bootstrap Requirement - -After packaging with `InfiniLore.InfiniFrame.Tools.Pack`, initialize the single-file bootstrap before creating a window: - -```csharp -using InfiniFrame; - -public static class Program { - [STAThread] - public static void Main(string[] args) { - InfiniFrameSingleFileBootstrap.Initialize(); - - var window = InfiniFrameWindowBuilder.Create() - .SetTitle("My App") - .SetSize(1280, 720) - .Center() - .Build(); - - window.WaitForClose(); - } -} -``` - -Why this is required: - -- `infiniframe-pack publish` embeds `InfiniFrame.Native` and platform loader files (`WebView2Loader.dll` on Windows) as resources. -- `InfiniFrameSingleFileBootstrap.Initialize()` extracts them to a temporary RID-specific folder and registers a native resolver so P/Invoke can load them. - -## Edge Cases and Pitfalls - -- If preflight publish output does not contain required native files for the selected RID, the tool exits with a dedicated dependency-missing failure. - The process exit code is `2`. -- `--rid auto` only supports current OS with `x64` or `arm64`. - Other architectures throw a platform-not-supported error. -- Existing output folders are deleted before publish. - By default, only project-local `bin/...` outputs are allowed to be cleaned. - Use `--force-clean-output` to allow cleaning custom output folders. -- If your project defines `TargetFrameworks` and you omit `--framework`, the first framework entry is used. -- The tool performs a preflight `dotnet publish` before final single-file publish. - If native artifacts are missing in preflight output, packaging stops early. -- `--self-contained` must be `true` or `false` (case-insensitive boolean parsing). -- If final output does not contain the expected main single-file executable, the tool exits with a non-zero code. diff --git a/docs/content/guides/web-server.md b/docs/content/guides/web-server.md deleted file mode 100644 index 5b193bca..00000000 --- a/docs/content/guides/web-server.md +++ /dev/null @@ -1,189 +0,0 @@ -# Web Server Guide - -`InfiniLore.InfiniFrame.WebServer` runs a standard ASP.NET Core web application in a background thread while opening a native window pointed at it -This approach gives you the full ASP.NET Core pipeline — middleware, controllers, SignalR, minimal APIs, Blazor Server — without any browser overhead - -## Contents - -- [How It Works](#how-it-works) -- [Installation](#installation) -- [Minimal Setup](#minimal-setup) -- [Builder API](#builder-api) -- [Start URL](#start-url) -- [Accessing the Window from ASP.NET Core](#accessing-the-window-from-aspnet-core) -- [Graceful Shutdown](#graceful-shutdown) -- [Example: Blazor Server](#example-blazor-server) -- [Static Web Assets](#static-web-assets) -- [Thread Model](#thread-model) - -## How It Works - -- The ASP.NET Core server starts on a background thread -- A native window opens and navigates to the server's URL -- Both shut down together when the window is closed (with `UseAutoServerClose()`) - -## Installation - -```bash -dotnet add package InfiniLore.InfiniFrame.WebServer -``` - -## Minimal Setup - -```csharp -using InfiniFrame.WebServer; - -var app = InfiniFrameWebApplication.CreateBuilder(args) - .Build() - .UseAutoServerClose(); - -app.WebApp.MapGet("/", () => "Hello from InfiniFrame"); - -app.Run(); -``` - -`app.Run()` starts the web server in the background, opens the window, and blocks until the window is closed - -## Builder API - -`InfiniFrameWebApplication.CreateBuilder(args)` returns an `InfiniFrameWebApplicationBuilder` with two properties: - -| Property | Type | Description | -|----------|----------------------------|-----------------------------------------------------------------------| -| `WebApp` | `WebApplicationBuilder` | Standard ASP.NET Core builder — add services, configure Kestrel, etc. | -| `Window` | `InfiniFrameWindowBuilder` | Fluent window configuration | - -### Configuring the window - -```csharp -var builder = InfiniFrameWebApplication.CreateBuilder(args); - -builder.Window - .SetTitle("My Desktop App") - .SetSize(1280, 720) - .Center() - .SetDevToolsEnabled(true); - -builder.WebApp.Services.AddControllers(); -builder.WebApp.Services.AddSignalR(); - -var app = builder.Build().UseAutoServerClose(); -app.WebApp.MapControllers(); -app.WebApp.MapHub("/hub"); - -app.Run(); -``` - -## Start URL - -The window's start URL is automatically resolved from configuration in this priority order: - -1. `ASPNETCORE_URLS` environment variable -2. `urls` configuration key (e.g. in `appsettings.json`) -3. Manual override via `builder.Window.SetStartUrl(...)` - -```json -// appsettings.json -{ - "urls": "http://localhost:5200" -} -``` - -If multiple URLs are configured (e.g. `"http://localhost:5200;https://localhost:7200"`), the first one is used as the window's start URL - -## Accessing the Window from ASP.NET Core - -`IInfiniFrameWindow` and `IInfiniFrameWindowBuilder` are registered in the web app's DI container: - -```csharp -app.WebApp.MapGet("/close", (IInfiniFrameWindow window) => { - window.Close(); - return Results.Ok(); -}); -``` - -```csharp -public class MyController(IInfiniFrameWindow window) : ControllerBase { - [HttpGet("minimize")] - public IActionResult Minimize() { - window.Invoke(() => { /* minimize logic */ }); - return Ok(); - } -} -``` - -> **Note:** Window operations that affect the native UI must be marshalled to the window thread using `window.Invoke(...)` - -## Graceful Shutdown - -### UseAutoServerClose - -Automatically stops the web server when the window is closed or a close is requested: - -```csharp -var app = builder.Build().UseAutoServerClose(); -``` - -Internally this registers handlers on both `WindowClosing` and `WindowClosingRequested` that call `WebApp.StopAsync()` in a background task, so the UI thread is never blocked - -### Manual shutdown - -```csharp -app.Stop(); // Stops the web server and closes the window -``` - -```csharp -await app.WebApp.StopAsync(); // Stop server only -app.Window.Close(); // Then close window -``` - -## Example: Blazor Server - -```csharp -using InfiniFrame.WebServer; - -var builder = InfiniFrameWebApplication.CreateBuilder(args); - -builder.Window - .SetTitle("Blazor Server App") - .SetSize(1280, 720) - .Center(); - -builder.WebApp.Services.AddRazorComponents() - .AddInteractiveServerComponents(); - -var app = builder.Build().UseAutoServerClose(); - -app.WebApp.UseStaticFiles(); -app.WebApp.UseAntiforgery(); -app.WebApp.MapRazorComponents() - .AddInteractiveServerRenderMode(); - -app.Run(); -``` - -## Static Web Assets - -`UseStaticWebAssets()` is called automatically during builder initialization, so static files from Razor class libraries are served correctly without additional configuration - -`UseDefaultFiles()` is also applied during `Build()`, which causes requests to `/` to serve `wwwroot/index.html` if it exists - -## Thread Model - -| Thread | Runs | -|-------------------|---------------------------| -| Main thread | Native window (UI thread) | -| Background thread | ASP.NET Core / Kestrel | - -All window API calls from ASP.NET Core handlers must use `window.Invoke(...)` to marshal to the window thread -Web server calls from window event handlers can be made directly since ASP.NET Core is thread-safe - -> **Windows:** The main thread must be STA. Add `[STAThread]` to your `Main` method and use an explicit `static void Main()` — top-level statements and `async Task Main` do not support STA correctly - ---- - -## Examples - -- `InfiniFrameExample.WebApp.Blazor` (`examples/InfiniFrameExample.WebApp.Blazor`) - Blazor Server with InteractiveServerComponents, HttpClient factory, and InfiniFrameJs -- `InfiniFrameExample.WebApp.React` (`examples/InfiniFrameExample.WebApp.React`) - React frontend with custom scheme handler and two-way messaging -- `InfiniFrameExample.WebApp.Vue` (`examples/InfiniFrameExample.WebApp.Vue`) - Vue.js frontend with all built-in JS message handlers diff --git a/docs/content/api.md b/docs/docs/api.md similarity index 100% rename from docs/content/api.md rename to docs/docs/api.md diff --git a/docs/articles/cpp/code-style.md b/docs/docs/cpp/code-style.md similarity index 100% rename from docs/articles/cpp/code-style.md rename to docs/docs/cpp/code-style.md diff --git a/docs/content/cpp/native-cpp-api.md b/docs/docs/cpp/native-cpp-api.md similarity index 100% rename from docs/content/cpp/native-cpp-api.md rename to docs/docs/cpp/native-cpp-api.md diff --git a/docs/articles/csharp/code-style.md b/docs/docs/csharp/code-style.md similarity index 100% rename from docs/articles/csharp/code-style.md rename to docs/docs/csharp/code-style.md diff --git a/docs/articles/guides/blazor-webview.md b/docs/docs/guides/blazor-webview.md similarity index 100% rename from docs/articles/guides/blazor-webview.md rename to docs/docs/guides/blazor-webview.md diff --git a/docs/articles/guides/core-window.md b/docs/docs/guides/core-window.md similarity index 100% rename from docs/articles/guides/core-window.md rename to docs/docs/guides/core-window.md diff --git a/docs/articles/guides/custom-window-chrome.md b/docs/docs/guides/custom-window-chrome.md similarity index 100% rename from docs/articles/guides/custom-window-chrome.md rename to docs/docs/guides/custom-window-chrome.md diff --git a/docs/articles/guides/getting-started.md b/docs/docs/guides/getting-started.md similarity index 100% rename from docs/articles/guides/getting-started.md rename to docs/docs/guides/getting-started.md diff --git a/docs/articles/guides/javascript-interop.md b/docs/docs/guides/javascript-interop.md similarity index 100% rename from docs/articles/guides/javascript-interop.md rename to docs/docs/guides/javascript-interop.md diff --git a/docs/articles/guides/pack-tool.md b/docs/docs/guides/pack-tool.md similarity index 100% rename from docs/articles/guides/pack-tool.md rename to docs/docs/guides/pack-tool.md diff --git a/docs/articles/guides/web-server.md b/docs/docs/guides/web-server.md similarity index 100% rename from docs/articles/guides/web-server.md rename to docs/docs/guides/web-server.md diff --git a/docs/content/intro.md b/docs/docs/intro.md similarity index 100% rename from docs/content/intro.md rename to docs/docs/intro.md diff --git a/docs/articles/concepts/breaking-changes-from-photino.md b/docs/docs/migration/breaking-changes-from-photino.md similarity index 100% rename from docs/articles/concepts/breaking-changes-from-photino.md rename to docs/docs/migration/breaking-changes-from-photino.md diff --git a/docs/content/migration/docfx-to-docusaurus.md b/docs/docs/migration/docfx-to-docusaurus.md similarity index 100% rename from docs/content/migration/docfx-to-docusaurus.md rename to docs/docs/migration/docfx-to-docusaurus.md diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts index 9538434c..4b1d24fd 100644 --- a/docs/docusaurus.config.ts +++ b/docs/docusaurus.config.ts @@ -7,7 +7,11 @@ const config: Config = { url: "https://docs.infiniframe.dev", baseUrl: "/", onBrokenLinks: "throw", - onBrokenMarkdownLinks: "warn", + markdown: { + hooks: { + onBrokenMarkdownLinks: "warn", + }, + }, trailingSlash: false, i18n: { defaultLocale: "en", @@ -18,7 +22,7 @@ const config: Config = { "classic", { docs: { - path: "content", + path: "docs", routeBasePath: "/", sidebarPath: "./sidebars.ts", editUrl: "https://github.com/InfiniLore/InfiniFrame/tree/core/docs/", diff --git a/docs/package-lock.json b/docs/package-lock.json index 43568d7c..c7116e05 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -18,7 +18,7 @@ }, "devDependencies": { "@docusaurus/module-type-aliases": "^3.10.0", - "@docusaurus/types": "3.5.2", + "@docusaurus/types": "^3.10.0", "typescript": "5.6.3", "webpack": "5.94.0" }, @@ -3469,28 +3469,6 @@ "node": ">=20.0" } }, - "node_modules/@docusaurus/bundler/node_modules/@docusaurus/types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", - "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", - "license": "MIT", - "dependencies": { - "@mdx-js/mdx": "^3.0.0", - "@types/history": "^4.7.11", - "@types/mdast": "^4.0.2", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.9.2", - "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.95.0", - "webpack-merge": "^5.9.0" - }, - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - } - }, "node_modules/@docusaurus/core": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.10.0.tgz", @@ -3643,28 +3621,6 @@ "react-dom": "*" } }, - "node_modules/@docusaurus/module-type-aliases/node_modules/@docusaurus/types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", - "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", - "license": "MIT", - "dependencies": { - "@mdx-js/mdx": "^3.0.0", - "@types/history": "^4.7.11", - "@types/mdast": "^4.0.2", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.9.2", - "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.95.0", - "webpack-merge": "^5.9.0" - }, - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - } - }, "node_modules/@docusaurus/plugin-client-redirects": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.10.0.tgz", @@ -3724,28 +3680,6 @@ "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/plugin-content-blog/node_modules/@docusaurus/types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", - "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", - "license": "MIT", - "dependencies": { - "@mdx-js/mdx": "^3.0.0", - "@types/history": "^4.7.11", - "@types/mdast": "^4.0.2", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.9.2", - "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.95.0", - "webpack-merge": "^5.9.0" - }, - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - } - }, "node_modules/@docusaurus/plugin-content-docs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.10.0.tgz", @@ -3779,28 +3713,6 @@ "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/plugin-content-docs/node_modules/@docusaurus/types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", - "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", - "license": "MIT", - "dependencies": { - "@mdx-js/mdx": "^3.0.0", - "@types/history": "^4.7.11", - "@types/mdast": "^4.0.2", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.9.2", - "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.95.0", - "webpack-merge": "^5.9.0" - }, - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - } - }, "node_modules/@docusaurus/plugin-content-pages": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.10.0.tgz", @@ -3824,28 +3736,6 @@ "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/plugin-content-pages/node_modules/@docusaurus/types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", - "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", - "license": "MIT", - "dependencies": { - "@mdx-js/mdx": "^3.0.0", - "@types/history": "^4.7.11", - "@types/mdast": "^4.0.2", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.9.2", - "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.95.0", - "webpack-merge": "^5.9.0" - }, - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - } - }, "node_modules/@docusaurus/plugin-css-cascade-layers": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.10.0.tgz", @@ -3862,28 +3752,6 @@ "node": ">=20.0" } }, - "node_modules/@docusaurus/plugin-css-cascade-layers/node_modules/@docusaurus/types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", - "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", - "license": "MIT", - "dependencies": { - "@mdx-js/mdx": "^3.0.0", - "@types/history": "^4.7.11", - "@types/mdast": "^4.0.2", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.9.2", - "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.95.0", - "webpack-merge": "^5.9.0" - }, - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - } - }, "node_modules/@docusaurus/plugin-debug": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.10.0.tgz", @@ -3905,28 +3773,6 @@ "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/plugin-debug/node_modules/@docusaurus/types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", - "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", - "license": "MIT", - "dependencies": { - "@mdx-js/mdx": "^3.0.0", - "@types/history": "^4.7.11", - "@types/mdast": "^4.0.2", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.9.2", - "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.95.0", - "webpack-merge": "^5.9.0" - }, - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - } - }, "node_modules/@docusaurus/plugin-google-analytics": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.10.0.tgz", @@ -3946,28 +3792,6 @@ "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/plugin-google-analytics/node_modules/@docusaurus/types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", - "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", - "license": "MIT", - "dependencies": { - "@mdx-js/mdx": "^3.0.0", - "@types/history": "^4.7.11", - "@types/mdast": "^4.0.2", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.9.2", - "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.95.0", - "webpack-merge": "^5.9.0" - }, - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - } - }, "node_modules/@docusaurus/plugin-google-gtag": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.10.0.tgz", @@ -3988,28 +3812,6 @@ "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/plugin-google-gtag/node_modules/@docusaurus/types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", - "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", - "license": "MIT", - "dependencies": { - "@mdx-js/mdx": "^3.0.0", - "@types/history": "^4.7.11", - "@types/mdast": "^4.0.2", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.9.2", - "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.95.0", - "webpack-merge": "^5.9.0" - }, - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - } - }, "node_modules/@docusaurus/plugin-google-tag-manager": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.10.0.tgz", @@ -4029,28 +3831,6 @@ "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/plugin-google-tag-manager/node_modules/@docusaurus/types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", - "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", - "license": "MIT", - "dependencies": { - "@mdx-js/mdx": "^3.0.0", - "@types/history": "^4.7.11", - "@types/mdast": "^4.0.2", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.9.2", - "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.95.0", - "webpack-merge": "^5.9.0" - }, - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - } - }, "node_modules/@docusaurus/plugin-sitemap": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.10.0.tgz", @@ -4075,28 +3855,6 @@ "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/plugin-sitemap/node_modules/@docusaurus/types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", - "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", - "license": "MIT", - "dependencies": { - "@mdx-js/mdx": "^3.0.0", - "@types/history": "^4.7.11", - "@types/mdast": "^4.0.2", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.9.2", - "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.95.0", - "webpack-merge": "^5.9.0" - }, - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - } - }, "node_modules/@docusaurus/plugin-svgr": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-svgr/-/plugin-svgr-3.10.0.tgz", @@ -4120,28 +3878,6 @@ "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/plugin-svgr/node_modules/@docusaurus/types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", - "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", - "license": "MIT", - "dependencies": { - "@mdx-js/mdx": "^3.0.0", - "@types/history": "^4.7.11", - "@types/mdast": "^4.0.2", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.9.2", - "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.95.0", - "webpack-merge": "^5.9.0" - }, - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - } - }, "node_modules/@docusaurus/preset-classic": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.10.0.tgz", @@ -4172,28 +3908,6 @@ "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", - "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", - "license": "MIT", - "dependencies": { - "@mdx-js/mdx": "^3.0.0", - "@types/history": "^4.7.11", - "@types/mdast": "^4.0.2", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.9.2", - "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.95.0", - "webpack-merge": "^5.9.0" - }, - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - } - }, "node_modules/@docusaurus/theme-classic": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.10.0.tgz", @@ -4235,28 +3949,6 @@ "react-dom": "^18.0.0 || ^19.0.0" } }, - "node_modules/@docusaurus/theme-classic/node_modules/@docusaurus/types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", - "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", - "license": "MIT", - "dependencies": { - "@mdx-js/mdx": "^3.0.0", - "@types/history": "^4.7.11", - "@types/mdast": "^4.0.2", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.9.2", - "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.95.0", - "webpack-merge": "^5.9.0" - }, - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - } - }, "node_modules/@docusaurus/theme-common": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.10.0.tgz", @@ -4331,25 +4023,25 @@ } }, "node_modules/@docusaurus/types": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.5.2.tgz", - "integrity": "sha512-N6GntLXoLVUwkZw7zCxwy9QiuEXIcTVzA9AkmNw16oc0AP3SXLrMmDMMBIfgqwuKWa6Ox6epHol9kMtJqekACw==", - "dev": true, + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", + "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", "@types/react": "*", "commander": "^5.1.0", "joi": "^17.9.2", - "react-helmet-async": "^1.3.0", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "utility-types": "^3.10.0", - "webpack": "^5.88.1", + "webpack": "^5.95.0", "webpack-merge": "^5.9.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/utils": { @@ -4397,28 +4089,6 @@ "node": ">=20.0" } }, - "node_modules/@docusaurus/utils-common/node_modules/@docusaurus/types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", - "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", - "license": "MIT", - "dependencies": { - "@mdx-js/mdx": "^3.0.0", - "@types/history": "^4.7.11", - "@types/mdast": "^4.0.2", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.9.2", - "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.95.0", - "webpack-merge": "^5.9.0" - }, - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - } - }, "node_modules/@docusaurus/utils-validation": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.10.0.tgz", @@ -4438,28 +4108,6 @@ "node": ">=20.0" } }, - "node_modules/@docusaurus/utils/node_modules/@docusaurus/types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.0.tgz", - "integrity": "sha512-F0dOt3FOoO20rRaFK7whGFQZ3ggyrWEdQc/c8/UiRuzhtg4y1w9FspXH5zpCT07uMnJKBPGh+qNazbNlCQqvSw==", - "license": "MIT", - "dependencies": { - "@mdx-js/mdx": "^3.0.0", - "@types/history": "^4.7.11", - "@types/mdast": "^4.0.2", - "@types/react": "*", - "commander": "^5.1.0", - "joi": "^17.9.2", - "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", - "utility-types": "^3.10.0", - "webpack": "^5.95.0", - "webpack-merge": "^5.9.0" - }, - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - } - }, "node_modules/@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", diff --git a/docs/package.json b/docs/package.json index 75a5ec36..1b8ea35a 100644 --- a/docs/package.json +++ b/docs/package.json @@ -19,7 +19,7 @@ }, "devDependencies": { "@docusaurus/module-type-aliases": "^3.10.0", - "@docusaurus/types": "3.10.0", + "@docusaurus/types": "^3.10.0", "typescript": "5.6.3", "webpack": "5.94.0" }, From 977db1f6238f48aefa3c54c67c9f12ebdaddf494 Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Fri, 10 Apr 2026 10:42:59 +0200 Subject: [PATCH 05/12] Rename 'Concepts' to 'Migration' and update docs Move the Breaking Changes doc from /concepts to /migration: update README and docs/intro links, adjust docusaurus.config.ts redirects to forward old /concepts paths to /migration, and update sidebars accordingly. Also refresh docs package.json and package-lock.json to update Docusaurus/DocSearch-related dependencies. --- README.md | 2 +- docs/docs/intro.md | 2 +- docs/docusaurus.config.ts | 5 +- docs/package-lock.json | 220 ++++++++++++++++---------------------- docs/package.json | 14 +-- docs/sidebars.ts | 16 +-- 6 files changed, 112 insertions(+), 147 deletions(-) diff --git a/README.md b/README.md index d367df27..a3114b67 100644 --- a/README.md +++ b/README.md @@ -158,7 +158,7 @@ dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj --rid win-x64 ### Migration -- [Breaking Changes vs Photino.NET](https://docs.infiniframe.dev/concepts/breaking-changes-from-photino) — +- [Breaking Changes vs Photino.NET](https://docs.infiniframe.dev/migration/breaking-changes-from-photino) — API, namespace, event system, and behavioral differences from the original Photino projects ### Build Docs Locally diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 1a541db1..a9b7f4a3 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -10,5 +10,5 @@ InfiniFrame documentation is organized into Guides, Concepts, and API references - [Guides](guides/getting-started.md) - [Packaging Tool Guide](guides/pack-tool.md) -- [Concepts](concepts/breaking-changes-from-photino.md) +- [Migration Notes](migration/breaking-changes-from-photino.md) - [API References](api.md) diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts index 4b1d24fd..dfa7f21f 100644 --- a/docs/docusaurus.config.ts +++ b/docs/docusaurus.config.ts @@ -46,7 +46,7 @@ const config: Config = { redirects: [ { from: ["/index.html"], to: "/" }, { from: ["/articles/guides"], to: "/guides/getting-started" }, - { from: ["/articles/concepts"], to: "/concepts/breaking-changes-from-photino" }, + { from: ["/articles/concepts"], to: "/migration/breaking-changes-from-photino" }, { from: ["/articles/csharp"], to: "/csharp/code-style" }, { from: ["/articles/cpp"], to: "/cpp/native-cpp-api" }, { from: ["/articles/guides/getting-started", "/articles/guides/getting-started.html"], to: "/guides/getting-started" }, @@ -56,7 +56,8 @@ const config: Config = { { from: ["/articles/guides/web-server", "/articles/guides/web-server.html"], to: "/guides/web-server" }, { from: ["/articles/guides/javascript-interop", "/articles/guides/javascript-interop.html"], to: "/guides/javascript-interop" }, { from: ["/articles/guides/custom-window-chrome", "/articles/guides/custom-window-chrome.html"], to: "/guides/custom-window-chrome" }, - { from: ["/articles/concepts/breaking-changes-from-photino", "/articles/concepts/breaking-changes-from-photino.html"], to: "/concepts/breaking-changes-from-photino" }, + { from: ["/articles/concepts/breaking-changes-from-photino", "/articles/concepts/breaking-changes-from-photino.html"], to: "/migration/breaking-changes-from-photino" }, + { from: ["/concepts/breaking-changes-from-photino"], to: "/migration/breaking-changes-from-photino" }, { from: ["/articles/csharp/code-style", "/articles/csharp/code-style.html"], to: "/csharp/code-style" }, { from: ["/articles/cpp/native-cpp-api", "/articles/cpp/native-cpp-api.html"], to: "/cpp/native-cpp-api" }, { from: ["/articles/cpp/code-style", "/articles/cpp/code-style.html"], to: "/cpp/code-style" }, diff --git a/docs/package-lock.json b/docs/package-lock.json index c7116e05..63a59af0 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -11,16 +11,15 @@ "@docusaurus/core": "^3.10.0", "@docusaurus/plugin-client-redirects": "^3.10.0", "@docusaurus/preset-classic": "^3.10.0", - "clsx": "2.1.1", - "prism-react-renderer": "2.4.1", - "react": "18.2.0", - "react-dom": "18.2.0" + "clsx": "^2.1.1", + "prism-react-renderer": "^2.4.1", + "react": "^19.2.5", + "react-dom": "^19.2.5" }, "devDependencies": { "@docusaurus/module-type-aliases": "^3.10.0", "@docusaurus/types": "^3.10.0", - "typescript": "5.6.3", - "webpack": "5.94.0" + "typescript": "^6.0.2" }, "engines": { "node": ">=20.0" @@ -3454,21 +3453,6 @@ } } }, - "node_modules/@docusaurus/bundler/node_modules/@docusaurus/cssnano-preset": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.10.0.tgz", - "integrity": "sha512-qzSshTO1DB3TYW+dPUal5KHM7XPc5YQfzF3Kdb2NDACJUyGbNcFtw3tGkCJlYwhNCRKbZcmwraKUS1i5dcHdGg==", - "license": "MIT", - "dependencies": { - "cssnano-preset-advanced": "^6.1.2", - "postcss": "^8.5.4", - "postcss-sort-media-queries": "^5.2.0", - "tslib": "^2.6.0" - }, - "engines": { - "node": ">=20.0" - } - }, "node_modules/@docusaurus/core": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.10.0.tgz", @@ -3550,6 +3534,21 @@ "node": ">=18.0.0" } }, + "node_modules/@docusaurus/cssnano-preset": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.10.0.tgz", + "integrity": "sha512-qzSshTO1DB3TYW+dPUal5KHM7XPc5YQfzF3Kdb2NDACJUyGbNcFtw3tGkCJlYwhNCRKbZcmwraKUS1i5dcHdGg==", + "license": "MIT", + "dependencies": { + "cssnano-preset-advanced": "^6.1.2", + "postcss": "^8.5.4", + "postcss-sort-media-queries": "^5.2.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, "node_modules/@docusaurus/logger": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.10.0.tgz", @@ -5284,6 +5283,26 @@ "@types/ms": "*" } }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -5808,13 +5827,16 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, "peerDependencies": { - "acorn": "^8" + "acorn": "^8.14.0" } }, "node_modules/acorn-jsx": { @@ -6470,14 +6492,14 @@ } }, "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", "set-function-length": "^1.2.2" }, "engines": { @@ -8147,9 +8169,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", "license": "MIT" }, "node_modules/es-object-atoms": { @@ -15396,28 +15418,24 @@ } }, "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "version": "19.2.5", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.5.tgz", + "integrity": "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==", "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - }, "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "version": "19.2.5", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.5.tgz", + "integrity": "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==", "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^18.2.0" + "react": "^19.2.5" } }, "node_modules/react-fast-compare": { @@ -16184,13 +16202,10 @@ } }, "node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - } + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" }, "node_modules/schema-dts": { "version": "1.1.5", @@ -17335,9 +17350,9 @@ } }, "node_modules/typescript": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz", + "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==", "devOptional": true, "license": "Apache-2.0", "bin": { @@ -17875,34 +17890,36 @@ } }, "node_modules/webpack": { - "version": "5.94.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", - "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", + "version": "5.106.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.0.tgz", + "integrity": "sha512-Pkx5joZ9RrdgO5LBkyX1L2ZAJeK/Taz3vqZ9CbcP0wS5LEMx5QkKsEwLl29QJfihZ+DKRBFldzy1O30pJ1MDpA==", + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.16.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", + "enhanced-resolve": "^5.20.0", + "es-module-lexer": "^2.0.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", + "loader-runner": "^4.3.1", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.17", + "watchpack": "^2.5.1", + "webpack-sources": "^3.3.4" }, "bin": { "webpack": "bin/webpack.js" @@ -18149,37 +18166,6 @@ "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, "node_modules/webpack/node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -18201,24 +18187,6 @@ "node": ">= 0.6" } }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/webpackbar": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-6.0.1.tgz", diff --git a/docs/package.json b/docs/package.json index 1b8ea35a..1038fd9e 100644 --- a/docs/package.json +++ b/docs/package.json @@ -12,21 +12,17 @@ "@docusaurus/core": "^3.10.0", "@docusaurus/plugin-client-redirects": "^3.10.0", "@docusaurus/preset-classic": "^3.10.0", - "clsx": "2.1.1", - "prism-react-renderer": "2.4.1", - "react": "18.2.0", - "react-dom": "18.2.0" + "clsx": "^2.1.1", + "prism-react-renderer": "^2.4.1", + "react": "^19.2.5", + "react-dom": "^19.2.5" }, "devDependencies": { "@docusaurus/module-type-aliases": "^3.10.0", "@docusaurus/types": "^3.10.0", - "typescript": "5.6.3", - "webpack": "5.94.0" + "typescript": "^6.0.2" }, "engines": { "node": ">=20.0" - }, - "overrides": { - "webpack": "5.94.0" } } diff --git a/docs/sidebars.ts b/docs/sidebars.ts index 50b55aeb..4bdf1831 100644 --- a/docs/sidebars.ts +++ b/docs/sidebars.ts @@ -16,13 +16,6 @@ const sidebars: SidebarsConfig = { "guides/custom-window-chrome", ], }, - { - type: "category", - label: "Concepts", - items: [ - "concepts/breaking-changes-from-photino", - ], - }, { type: "category", label: "C# Articles", @@ -39,7 +32,14 @@ const sidebars: SidebarsConfig = { ], }, "api", - "migration/docfx-to-docusaurus", + { + type: "category", + label: "Migration", + items: [ + "migration/breaking-changes-from-photino", + "migration/docfx-to-docusaurus", + ], + }, ], }; From ef0d8e58fc309cbc5ad182e69462bec14d34584d Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Fri, 10 Apr 2026 11:05:15 +0200 Subject: [PATCH 06/12] Update primary color palette in custom CSS for docs --- docs/src/css/custom.css | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css index 08390aee..03398bd2 100644 --- a/docs/src/css/custom.css +++ b/docs/src/css/custom.css @@ -1,9 +1,9 @@ :root { - --ifm-color-primary: #166534; - --ifm-color-primary-dark: #14532d; - --ifm-color-primary-darker: #0f3f23; - --ifm-color-primary-darkest: #0a2b18; - --ifm-color-primary-light: #15803d; - --ifm-color-primary-lighter: #16a34a; - --ifm-color-primary-lightest: #22c55e; + --ifm-color-primary: #3d4a3d; + --ifm-color-primary-dark: #313b31; + --ifm-color-primary-darker: #252c25; + --ifm-color-primary-darkest: #181e18; + --ifm-color-primary-light: #5a6d5a; + --ifm-color-primary-lighter: #778f77; + --ifm-color-primary-lightest: #9aac9a; } From e47cb538880af08f36bc4fda65de64aadee49e3f Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Fri, 10 Apr 2026 11:06:39 +0200 Subject: [PATCH 07/12] Remove DocFX to Docusaurus migration guide --- docs/docs/migration/docfx-to-docusaurus.md | 45 ---------------------- 1 file changed, 45 deletions(-) delete mode 100644 docs/docs/migration/docfx-to-docusaurus.md diff --git a/docs/docs/migration/docfx-to-docusaurus.md b/docs/docs/migration/docfx-to-docusaurus.md deleted file mode 100644 index 94565455..00000000 --- a/docs/docs/migration/docfx-to-docusaurus.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -id: docfx-to-docusaurus -slug: /migration/docfx-to-docusaurus -title: DocFX to Docusaurus Migration ---- - -## What Changed - -- Docusaurus is now the primary docs site generator. -- Existing Markdown guides and concepts from `docs/articles/**` were migrated into `docs/content/**`. -- Navigation moved from DocFX `toc.yml` files to Docusaurus `sidebars.ts`. -- Route redirects were added to preserve key legacy DocFX URLs. - -## API Docs Strategy - -Hybrid strategy is used: - -- C# generated API reference is produced with DocFX (API-only config) and published under `/api/cs/` in the same docs site. -- C++ generated API reference stays on the legacy external endpoint for now. - -Reason: C# API output already has a stable DocFX pipeline, so we keep DocFX narrowly scoped to API generation while Docusaurus owns all narrative docs and navigation. - -## Local Development - -From repository root: - -```powershell -npm run docs:dev -``` - -Build static output: - -```powershell -npm run docs:build -``` - -## CI / Deployment - -- Docs test workflow generates/builds the C# API docs with DocFX API-only config, then builds Docusaurus. -- Release docs workflow publishes Docusaurus output (`docs/build`) and merges generated C# API static files at `/api/cs/`. - -## Follow-Up for Full DocFX Retirement - -- Move C# API generation away from DocFX to a dedicated non-DocFX generator. -- Migrate C++ generated reference off the legacy endpoint. From 69ce5c6c4455e0cd9cc41e22cb8ac8068cf5832d Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Fri, 10 Apr 2026 11:10:13 +0200 Subject: [PATCH 08/12] Docs: Add automated generation for local C++ and C# API references - Introduced PowerShell scripts to prepare API pages (`prepare-local-api.ps1` and `update-cpp-api.ps1`). - Added Doxygen-based C++ API reference (`native-cpp-reference.md`) pipeline. - Integrated DocFX for local C# API reference placeholders. - Updated `.gitignore` to exclude static/generated API artifacts. - Adjusted `package.json` to execute API preparation in `docs:dev`. - Applied dependency updates and configuration tweaks in docs tooling. --- .gitignore | 1 - README.md | 5 ++ docs/docs/api.md | 2 +- docs/docs/api/cpp/native-cpp-reference.md | 15 +++++ docs/docusaurus.config.ts | 2 +- docs/package-lock.json | 32 ++++----- docs/package.json | 3 + docs/scripts/prepare-local-api.ps1 | 80 +++++++++++++++++++++++ docs/scripts/update-cpp-api.ps1 | 6 +- docs/static/api/cs/index.html | 4 +- package.json | 3 +- 11 files changed, 130 insertions(+), 23 deletions(-) create mode 100644 docs/docs/api/cpp/native-cpp-reference.md create mode 100644 docs/scripts/prepare-local-api.ps1 diff --git a/.gitignore b/.gitignore index 8c092c4c..1b714a0f 100644 --- a/.gitignore +++ b/.gitignore @@ -360,5 +360,4 @@ healthchecksdb /docs/api/toc.yml /docs/api/.manifest /docs/api/cs/ -/docs/api/cpp/native-cpp-reference.md /docs/.doxygen/ diff --git a/README.md b/README.md index a3114b67..db7dc502 100644 --- a/README.md +++ b/README.md @@ -174,6 +174,11 @@ Run: npm run docs:dev ``` +This now prepares generated API pages for local preview first: + +- C++ API markdown via Doxygen + moxygen (`docs/docs/api/cpp/native-cpp-reference.md`) +- C# API pages via DocFX copied to Docusaurus static route (`/api/cs/`) + Build static site: ```powershell diff --git a/docs/docs/api.md b/docs/docs/api.md index eca289bd..bbdd0889 100644 --- a/docs/docs/api.md +++ b/docs/docs/api.md @@ -10,6 +10,6 @@ InfiniFrame uses a split API docs strategy during the DocFX to Docusaurus migrat - [Native C++ API Guide](cpp/native-cpp-api.md) - Generated API references: - Generated C# API Reference - - [Generated C++ API Reference](https://docs.infiniframe.dev/api/cpp/native-cpp-reference.html) + - [Generated C++ API Reference](api/cpp/native-cpp-reference.md) This keeps generated API output stable while Markdown guides and concepts stay in Docusaurus. diff --git a/docs/docs/api/cpp/native-cpp-reference.md b/docs/docs/api/cpp/native-cpp-reference.md new file mode 100644 index 00000000..97f7b06b --- /dev/null +++ b/docs/docs/api/cpp/native-cpp-reference.md @@ -0,0 +1,15 @@ +--- +title: Native C++ API Reference +--- + +# Native C++ API Reference + +This page is generated from C++ headers via Doxygen XML and moxygen. + +Generation did not run in this environment (missing `doxygen` and/or `npx`). + +To generate locally: + +1. Install Doxygen. +2. Ensure Node.js/npm is installed. +3. Run `./docs/scripts/update-cpp-api.ps1`. diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts index dfa7f21f..d7b413fc 100644 --- a/docs/docusaurus.config.ts +++ b/docs/docusaurus.config.ts @@ -61,7 +61,7 @@ const config: Config = { { from: ["/articles/csharp/code-style", "/articles/csharp/code-style.html"], to: "/csharp/code-style" }, { from: ["/articles/cpp/native-cpp-api", "/articles/cpp/native-cpp-api.html"], to: "/cpp/native-cpp-api" }, { from: ["/articles/cpp/code-style", "/articles/cpp/code-style.html"], to: "/cpp/code-style" }, - { from: ["/api/cpp/native-cpp-reference", "/api/cpp/native-cpp-reference.html"], to: "/api" }, + { from: ["/api/cpp/native-cpp-reference.html"], to: "/api" }, { from: ["/api/cpp"], to: "/api" } ] } diff --git a/docs/package-lock.json b/docs/package-lock.json index 63a59af0..436c55d7 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -8169,9 +8169,9 @@ } }, "node_modules/es-module-lexer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", - "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", "license": "MIT" }, "node_modules/es-object-atoms": { @@ -17890,9 +17890,9 @@ } }, "node_modules/webpack": { - "version": "5.106.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.0.tgz", - "integrity": "sha512-Pkx5joZ9RrdgO5LBkyX1L2ZAJeK/Taz3vqZ9CbcP0wS5LEMx5QkKsEwLl29QJfihZ+DKRBFldzy1O30pJ1MDpA==", + "version": "5.101.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.3.tgz", + "integrity": "sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==", "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", @@ -17901,25 +17901,25 @@ "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.16.0", + "acorn": "^8.15.0", "acorn-import-phases": "^1.0.3", - "browserslist": "^4.28.1", + "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.20.0", - "es-module-lexer": "^2.0.0", + "enhanced-resolve": "^5.17.3", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.3.1", + "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^4.3.3", - "tapable": "^2.3.0", - "terser-webpack-plugin": "^5.3.17", - "watchpack": "^2.5.1", - "webpack-sources": "^3.3.4" + "schema-utils": "^4.3.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.1", + "webpack-sources": "^3.3.3" }, "bin": { "webpack": "bin/webpack.js" diff --git a/docs/package.json b/docs/package.json index 1038fd9e..248f676e 100644 --- a/docs/package.json +++ b/docs/package.json @@ -22,6 +22,9 @@ "@docusaurus/types": "^3.10.0", "typescript": "^6.0.2" }, + "overrides": { + "webpack": "5.101.3" + }, "engines": { "node": ">=20.0" } diff --git a/docs/scripts/prepare-local-api.ps1 b/docs/scripts/prepare-local-api.ps1 new file mode 100644 index 00000000..d4960269 --- /dev/null +++ b/docs/scripts/prepare-local-api.ps1 @@ -0,0 +1,80 @@ +param( + [switch]$Required +) + +$ErrorActionPreference = "Stop" + +$docsRoot = Split-Path -Parent $PSScriptRoot +$repoRoot = Split-Path -Parent $docsRoot +$docfxConfig = Join-Path $docsRoot "docfx.api.json" +$docfxOutput = Join-Path $docsRoot "_site_api/api/cs" +$localCsStatic = Join-Path $docsRoot "static/api/cs" + +function Ensure-CsPlaceholder { + $placeholder = @" + + + + + + InfiniFrame C# API Reference + + +
+

InfiniFrame C# API Reference

+

+ This local placeholder is replaced by generated C# API pages when DocFX is available. +

+
+ + +"@ + + New-Item -ItemType Directory -Path $localCsStatic -Force | Out-Null + + $placeholderPath = Join-Path $localCsStatic "index.html" + $utf8NoBom = New-Object System.Text.UTF8Encoding($false) + [System.IO.File]::WriteAllText($placeholderPath, $placeholder, $utf8NoBom) +} + +function Copy-CsApi { + if (Test-Path $localCsStatic) { + Remove-Item $localCsStatic -Recurse -Force + } + + New-Item -ItemType Directory -Path (Split-Path -Parent $localCsStatic) -Force | Out-Null + Copy-Item -Path $docfxOutput -Destination $localCsStatic -Recurse -Force +} + +Write-Host "Preparing local C++ API reference..." +& (Join-Path $PSScriptRoot "update-cpp-api.ps1") @( + if ($Required) { "-Required" } +) + +Write-Host "Preparing local C# API reference..." +if (-not (Get-Command docfx -ErrorAction SilentlyContinue)) { + $message = "docfx is not installed or not on PATH. Install with: dotnet tool install --global docfx --version 2.78.5" + if ($Required) { + throw $message + } + + Write-Warning $message + Ensure-CsPlaceholder + exit 0 +} + +Push-Location $repoRoot +try { + docfx metadata $docfxConfig + docfx build $docfxConfig + + if (-not (Test-Path (Join-Path $docfxOutput "index.html"))) { + throw "DocFX output missing expected index at '$docfxOutput/index.html'." + } + + Copy-CsApi +} finally { + Pop-Location +} + +Write-Host "Local API references are ready." diff --git a/docs/scripts/update-cpp-api.ps1 b/docs/scripts/update-cpp-api.ps1 index e0e6a50b..ee6b63c3 100644 --- a/docs/scripts/update-cpp-api.ps1 +++ b/docs/scripts/update-cpp-api.ps1 @@ -7,13 +7,17 @@ $ErrorActionPreference = "Stop" $docsRoot = Split-Path -Parent $PSScriptRoot $repoRoot = Split-Path -Parent $docsRoot -$outputFile = Join-Path $docsRoot "api/cpp/native-cpp-reference.md" +$outputFile = Join-Path $docsRoot "docs/api/cpp/native-cpp-reference.md" $doxygenRoot = Join-Path $docsRoot ".doxygen" $xmlDir = Join-Path $doxygenRoot "xml" $doxyfilePath = Join-Path $doxygenRoot "Doxyfile.generated" function New-PlaceholderFile { $content = @" +--- +title: Native C++ API Reference +--- + # Native C++ API Reference This page is generated from C++ headers via Doxygen XML and moxygen. diff --git a/docs/static/api/cs/index.html b/docs/static/api/cs/index.html index 6c63406f..1dccc377 100644 --- a/docs/static/api/cs/index.html +++ b/docs/static/api/cs/index.html @@ -9,8 +9,8 @@

InfiniFrame C# API Reference

- This local placeholder is replaced in CI/CD by generated C# API pages from DocFX. + This local placeholder is replaced by generated C# API pages when DocFX is available.

- + \ No newline at end of file diff --git a/package.json b/package.json index 6f6f96b9..e859bec3 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,8 @@ "name": "infinilore.infiniframe", "version": "0.1.0", "scripts": { - "docs:dev": "npm --prefix docs run dev", + "docs:prepare-api": "powershell -ExecutionPolicy Bypass -File ./docs/scripts/prepare-local-api.ps1", + "docs:dev": "npm run docs:prepare-api && npm --prefix docs run dev", "docs:build": "npm --prefix docs run build", "production:build": "npx webpack --env production=true", "watch:typescript": "npx webpack --watch --env production=false" From f47507fecc0030f284a4ff3bd08af14acb757117 Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Fri, 10 Apr 2026 13:12:43 +0200 Subject: [PATCH 09/12] Remove DocFX support and migrate API documentation fully to Docusaurus - Eliminated all DocFX-related configurations, scripts, and workflows. - Consolidated API documentation in Docusaurus, removing dependency on generated C# API references. - Updated `.gitignore` to exclude DocFX artifacts and cleaned up obsolete files. - Adjusted `package.json` to streamline docs development workflow. - Improved documentation structure and aesthetic consistency by refining styles and adding a favicon. --- .../workflows/shared-release-publish-docs.yml | 37 ----- .github/workflows/shared-testing-docs.yml | 54 +------ .gitignore | 7 - README.md | 15 +- docs/.gitignore | 1 - docs/docfx.api.json | 51 ------ docs/docs/api.md | 13 +- docs/docs/api/cpp/native-cpp-reference.md | 15 -- docs/docs/cpp/native-cpp-api.md | 6 +- docs/docs/guides/getting-started.md | 2 +- docs/docusaurus.config.ts | 2 +- docs/scripts/prepare-local-api.ps1 | 80 ---------- docs/scripts/serve-docs.ps1 | 30 ---- docs/scripts/update-cpp-api.ps1 | 145 ------------------ docs/sidebars.ts | 1 - docs/src/css/custom.css | 18 ++- docs/static/api/cs/index.html | 16 -- docs/static/favicon.ico | Bin 0 -> 103143 bytes package-lock.json | 8 +- package.json | 5 +- 20 files changed, 29 insertions(+), 477 deletions(-) delete mode 100644 docs/docfx.api.json delete mode 100644 docs/docs/api/cpp/native-cpp-reference.md delete mode 100644 docs/scripts/prepare-local-api.ps1 delete mode 100644 docs/scripts/serve-docs.ps1 delete mode 100644 docs/scripts/update-cpp-api.ps1 delete mode 100644 docs/static/api/cs/index.html create mode 100644 docs/static/favicon.ico diff --git a/.github/workflows/shared-release-publish-docs.yml b/.github/workflows/shared-release-publish-docs.yml index 0d4f9ada..81875c59 100644 --- a/.github/workflows/shared-release-publish-docs.yml +++ b/.github/workflows/shared-release-publish-docs.yml @@ -28,20 +28,6 @@ jobs: with: ref: ${{ inputs.checkout_ref != '' && inputs.checkout_ref || github.ref }} - - name: Setup .NET - uses: actions/setup-dotnet@v5 - with: - dotnet-version: | - 8.x - 9.x - 10.x - - - name: Install DocFX - shell: bash - run: | - dotnet tool install --global docfx --version 2.78.5 - echo "$HOME/.dotnet/tools" >> "$GITHUB_PATH" - - name: Setup Node uses: actions/setup-node@v6 with: @@ -55,33 +41,10 @@ jobs: shell: bash run: npm ci --prefix docs - - name: Generate C# API Metadata - run: docfx metadata docs/docfx.api.json - - - name: Build C# API Site - shell: bash - run: | - set -euo pipefail - - docfx build docs/docfx.api.json 2>&1 | tee /tmp/docfx-build.log - if grep -Eq '^[[:space:]]*[1-9][0-9]* warning\(s\)' /tmp/docfx-build.log; then - exit 1 - fi - - test -f docs/_site_api/api/cs/index.html - - name: Build Docusaurus Site shell: bash run: npm run docs:build - - name: Merge C# API Site Into Docusaurus Output - shell: bash - run: | - set -euo pipefail - mkdir -p docs/build/api - rm -rf docs/build/api/cs - cp -R docs/_site_api/api/cs docs/build/api/cs - - name: Setup Pages uses: actions/configure-pages@v6 diff --git a/.github/workflows/shared-testing-docs.yml b/.github/workflows/shared-testing-docs.yml index 01c0f2a7..42b5a7fe 100644 --- a/.github/workflows/shared-testing-docs.yml +++ b/.github/workflows/shared-testing-docs.yml @@ -31,14 +31,6 @@ jobs: with: ref: ${{ inputs.checkout_ref != '' && inputs.checkout_ref || env.TARGET_SHA }} - - name: Setup .NET - uses: actions/setup-dotnet@v5 - with: - dotnet-version: | - 8.x - 9.x - 10.x - - name: Setup Node uses: actions/setup-node@v6 with: @@ -47,35 +39,6 @@ jobs: cache-dependency-path: | package-lock.json docs/package-lock.json - - - name: Cache .NET Tools & NuGet - uses: actions/cache@v5 - with: - path: | - ~/.nuget/packages - ~/.dotnet/tools - key: dotnet-tools-${{ runner.os }}-docfx-2.78.5 - restore-keys: | - dotnet-tools-${{ runner.os }}-docfx- - - - name: Add Tools Path - run: echo "$HOME/.dotnet/tools" >> $GITHUB_PATH - - - name: Install DocFX if needed - run: | - set -euo pipefail - REQUIRED_VERSION=2.78.5 - - INSTALLED_VERSION=$(dotnet tool list --global | awk '$1=="docfx"{print $2}') - if [ "$INSTALLED_VERSION" = "$REQUIRED_VERSION" ]; then - echo "DocFX $REQUIRED_VERSION already installed, skipping install." - elif [ -n "$INSTALLED_VERSION" ]; then - echo "DocFX version mismatch ($INSTALLED_VERSION), reinstalling..." - dotnet tool update --global docfx --version $REQUIRED_VERSION - else - echo "DocFX not found, installing..." - dotnet tool install --global docfx --version $REQUIRED_VERSION - fi - name: Install Docusaurus Dependencies shell: bash @@ -96,21 +59,6 @@ jobs: target-url: ${{ format('{0}/{1}/actions/runs/{2}', github.server_url, github.repository, github.run_id) }} allow-status-422: 'true' - - name: Generate C# API Metadata - run: docfx metadata docs/docfx.api.json - - - name: Build C# API Site - shell: bash - run: | - set -euo pipefail - - docfx build docs/docfx.api.json 2>&1 | tee /tmp/docfx-build.log - if grep -Eq '^[[:space:]]*[1-9][0-9]* warning\(s\)' /tmp/docfx-build.log; then - exit 1 - fi - - test -f docs/_site_api/api/cs/index.html - - name: Build Docusaurus Docs shell: bash run: npm run docs:build @@ -129,4 +77,4 @@ jobs: target-url: ${{ format('{0}/{1}/actions/runs/{2}', github.server_url, github.repository, github.run_id) }} job-status: ${{ job.status }} success-description: Docs validation finished successfully - failure-description: Docs validation failed due to warnings or errors + failure-description: Docs validation failed diff --git a/.gitignore b/.gitignore index 1b714a0f..0986518f 100644 --- a/.gitignore +++ b/.gitignore @@ -354,10 +354,3 @@ healthchecksdb /examples/InfiniFrameExample.WebApp.Vue/wwwroot/ /tests/InfiniFrameTests.Playwright/wwwroot/ -# DocFX generated outputs -/docs/_site/ -/docs/api/*.yml -/docs/api/toc.yml -/docs/api/.manifest -/docs/api/cs/ -/docs/.doxygen/ diff --git a/README.md b/README.md index db7dc502..94598d06 100644 --- a/README.md +++ b/README.md @@ -153,8 +153,7 @@ dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj --rid win-x64 ### API Reference - [Native C++ API Guide](https://docs.infiniframe.dev/cpp/native-cpp-api) -- [Native C++ API Reference (Generated)](https://docs.infiniframe.dev/api/cpp/native-cpp-reference.html) -- [Generated C# API Reference](https://docs.infiniframe.dev/api/cs/) +- [API Reference Hub](https://docs.infiniframe.dev/api) ### Migration @@ -166,7 +165,6 @@ dotnet tool run infiniframe-pack publish src/MyApp/MyApp.csproj --rid win-x64 Requirements: - `Node.js`/`npm` (required) -- `.NET SDK` + `docfx` (optional, only if regenerating C# API docs) Run: @@ -174,23 +172,12 @@ Run: npm run docs:dev ``` -This now prepares generated API pages for local preview first: - -- C++ API markdown via Doxygen + moxygen (`docs/docs/api/cpp/native-cpp-reference.md`) -- C# API pages via DocFX copied to Docusaurus static route (`/api/cs/`) - Build static site: ```powershell npm run docs:build ``` -Generate and preview C# API docs only (DocFX API-only pipeline): - -```powershell -.\docs\scripts\serve-docs.ps1 -BuildCsApiOnly -``` - ## Platform Requirements | Platform | Browser Engine | Requirement | diff --git a/docs/.gitignore b/docs/.gitignore index 1bcaaff1..531b31c8 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -1,4 +1,3 @@ .docusaurus build node_modules -_site_api diff --git a/docs/docfx.api.json b/docs/docfx.api.json deleted file mode 100644 index ca214819..00000000 --- a/docs/docfx.api.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "metadata": [ - { - "src": [ - { - "src": "../src", - "files": [ - "InfiniFrame/InfiniFrame.csproj", - "InfiniFrame.Shared/InfiniFrame.Shared.csproj", - "InfiniFrame.Blazor/InfiniFrame.Blazor.csproj", - "InfiniFrame.BlazorWebView/InfiniFrame.BlazorWebView.csproj", - "InfiniFrame.Js/InfiniFrame.Js.csproj", - "InfiniFrame.WebServer/InfiniFrame.WebServer.csproj" - ] - } - ], - "dest": "api/cs", - "properties": { - "TargetFramework": "net10.0", - "Configuration": "Release", - "DocfxBuild": "true" - } - } - ], - "build": { - "content": [ - { - "files": [ - "api/cs/**/*.yml", - "api/cs/**/toc.yml" - ], - "exclude": [ - "**/bin/**", - "**/obj/**", - "**/scripts/**", - "**/.*/**" - ] - } - ], - "dest": "_site_api", - "template": [ - "default", - "modern" - ], - "globalMetadata": { - "_appTitle": "InfiniFrame C# API Reference", - "_enableSearch": true, - "_disableContribution": true - } - } -} diff --git a/docs/docs/api.md b/docs/docs/api.md index bbdd0889..7bfec8dc 100644 --- a/docs/docs/api.md +++ b/docs/docs/api.md @@ -4,12 +4,13 @@ slug: /api title: API Reference --- -InfiniFrame uses a split API docs strategy during the DocFX to Docusaurus migration: +InfiniFrame API documentation is currently maintained inline in Docusaurus. -- Conceptual API guidance lives in Docusaurus: +- Managed API guidance: + - [Core Window Guide](guides/core-window.md) + - [Blazor WebView Guide](guides/blazor-webview.md) + - [Web Server Guide](guides/web-server.md) +- Native API guidance: - [Native C++ API Guide](cpp/native-cpp-api.md) -- Generated API references: - - Generated C# API Reference - - [Generated C++ API Reference](api/cpp/native-cpp-reference.md) -This keeps generated API output stable while Markdown guides and concepts stay in Docusaurus. +This keeps the API docs simple and versionless by design. diff --git a/docs/docs/api/cpp/native-cpp-reference.md b/docs/docs/api/cpp/native-cpp-reference.md deleted file mode 100644 index 97f7b06b..00000000 --- a/docs/docs/api/cpp/native-cpp-reference.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Native C++ API Reference ---- - -# Native C++ API Reference - -This page is generated from C++ headers via Doxygen XML and moxygen. - -Generation did not run in this environment (missing `doxygen` and/or `npx`). - -To generate locally: - -1. Install Doxygen. -2. Ensure Node.js/npm is installed. -3. Run `./docs/scripts/update-cpp-api.ps1`. diff --git a/docs/docs/cpp/native-cpp-api.md b/docs/docs/cpp/native-cpp-api.md index 1057187e..39da0870 100644 --- a/docs/docs/cpp/native-cpp-api.md +++ b/docs/docs/cpp/native-cpp-api.md @@ -1,6 +1,6 @@ # Native C++ API -InfiniFrame native API documentation is hosted inside DocFX as conceptual reference and is sourced from the native headers and Doxygen-style comments under `src/InfiniFrame.Native`. +InfiniFrame native API documentation is maintained directly in Docusaurus and sourced from the native headers and comments under `src/InfiniFrame.Native`. ## Core headers @@ -27,6 +27,4 @@ InfiniFrame native API documentation is hosted inside DocFX as conceptual refere - `Exports.cpp`: exported C ABI used by the managed layer. -For detailed behavior, see source comments in the files above. This page is maintained in DocFX to keep C++ documentation and C# documentation in one navigation model. - -For generated member-level C++ reference, see [Native C++ API Reference (Generated)](../api.md). +For detailed behavior, see source comments in the files above. diff --git a/docs/docs/guides/getting-started.md b/docs/docs/guides/getting-started.md index 33b13164..5581a671 100644 --- a/docs/docs/guides/getting-started.md +++ b/docs/docs/guides/getting-started.md @@ -187,4 +187,4 @@ The start URL is automatically read from `ASPNETCORE_URLS` or the `urls` configu - [Core Window Guide](core-window.md) — Window events, messaging, dialogs, custom schemes - [Blazor Guide](blazor-webview.md) — DI, file providers, component configuration - [Web Server Guide](web-server.md) — ASP.NET Core pipeline, DI access, graceful shutdown -- Generated C# API Reference (`docs/api`, via `docfx metadata`) — Complete member-level reference +- [API Reference](../api.md) — Central API navigation and language-specific guides diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts index d7b413fc..0f172ce4 100644 --- a/docs/docusaurus.config.ts +++ b/docs/docusaurus.config.ts @@ -4,6 +4,7 @@ import type * as Preset from "@docusaurus/preset-classic"; const config: Config = { title: "InfiniFrame Documentation", tagline: "Guides, concepts, and API references", + favicon: "favicon.ico", url: "https://docs.infiniframe.dev", baseUrl: "/", onBrokenLinks: "throw", @@ -61,7 +62,6 @@ const config: Config = { { from: ["/articles/csharp/code-style", "/articles/csharp/code-style.html"], to: "/csharp/code-style" }, { from: ["/articles/cpp/native-cpp-api", "/articles/cpp/native-cpp-api.html"], to: "/cpp/native-cpp-api" }, { from: ["/articles/cpp/code-style", "/articles/cpp/code-style.html"], to: "/cpp/code-style" }, - { from: ["/api/cpp/native-cpp-reference.html"], to: "/api" }, { from: ["/api/cpp"], to: "/api" } ] } diff --git a/docs/scripts/prepare-local-api.ps1 b/docs/scripts/prepare-local-api.ps1 deleted file mode 100644 index d4960269..00000000 --- a/docs/scripts/prepare-local-api.ps1 +++ /dev/null @@ -1,80 +0,0 @@ -param( - [switch]$Required -) - -$ErrorActionPreference = "Stop" - -$docsRoot = Split-Path -Parent $PSScriptRoot -$repoRoot = Split-Path -Parent $docsRoot -$docfxConfig = Join-Path $docsRoot "docfx.api.json" -$docfxOutput = Join-Path $docsRoot "_site_api/api/cs" -$localCsStatic = Join-Path $docsRoot "static/api/cs" - -function Ensure-CsPlaceholder { - $placeholder = @" - - - - - - InfiniFrame C# API Reference - - -
-

InfiniFrame C# API Reference

-

- This local placeholder is replaced by generated C# API pages when DocFX is available. -

-
- - -"@ - - New-Item -ItemType Directory -Path $localCsStatic -Force | Out-Null - - $placeholderPath = Join-Path $localCsStatic "index.html" - $utf8NoBom = New-Object System.Text.UTF8Encoding($false) - [System.IO.File]::WriteAllText($placeholderPath, $placeholder, $utf8NoBom) -} - -function Copy-CsApi { - if (Test-Path $localCsStatic) { - Remove-Item $localCsStatic -Recurse -Force - } - - New-Item -ItemType Directory -Path (Split-Path -Parent $localCsStatic) -Force | Out-Null - Copy-Item -Path $docfxOutput -Destination $localCsStatic -Recurse -Force -} - -Write-Host "Preparing local C++ API reference..." -& (Join-Path $PSScriptRoot "update-cpp-api.ps1") @( - if ($Required) { "-Required" } -) - -Write-Host "Preparing local C# API reference..." -if (-not (Get-Command docfx -ErrorAction SilentlyContinue)) { - $message = "docfx is not installed or not on PATH. Install with: dotnet tool install --global docfx --version 2.78.5" - if ($Required) { - throw $message - } - - Write-Warning $message - Ensure-CsPlaceholder - exit 0 -} - -Push-Location $repoRoot -try { - docfx metadata $docfxConfig - docfx build $docfxConfig - - if (-not (Test-Path (Join-Path $docfxOutput "index.html"))) { - throw "DocFX output missing expected index at '$docfxOutput/index.html'." - } - - Copy-CsApi -} finally { - Pop-Location -} - -Write-Host "Local API references are ready." diff --git a/docs/scripts/serve-docs.ps1 b/docs/scripts/serve-docs.ps1 deleted file mode 100644 index fcf866b0..00000000 --- a/docs/scripts/serve-docs.ps1 +++ /dev/null @@ -1,30 +0,0 @@ -param( - [switch]$BuildCsApiOnly, - [string]$ConfigPath = "docs/docfx.api.json", - [string]$ApiSitePath = "docs/_site_api" -) - -$ErrorActionPreference = "Stop" -$repoRoot = Split-Path (Split-Path $PSScriptRoot -Parent) -Parent -$docsRoot = Join-Path $repoRoot "docs" - -if (-not [System.IO.Path]::IsPathRooted($ConfigPath)) { - $ConfigPath = Join-Path $repoRoot $ConfigPath -} - -if (-not [System.IO.Path]::IsPathRooted($ApiSitePath)) { - $ApiSitePath = Join-Path $repoRoot $ApiSitePath -} - -if (-not $BuildCsApiOnly) { - npm --prefix "$docsRoot" run dev - exit $LASTEXITCODE -} - -if (-not (Get-Command docfx -ErrorAction SilentlyContinue)) { - Write-Error "docfx is not installed or not on PATH. Install with: dotnet tool install --global docfx --version 2.78.5" -} - -docfx metadata $ConfigPath -docfx build $ConfigPath -docfx serve $ApiSitePath diff --git a/docs/scripts/update-cpp-api.ps1 b/docs/scripts/update-cpp-api.ps1 deleted file mode 100644 index ee6b63c3..00000000 --- a/docs/scripts/update-cpp-api.ps1 +++ /dev/null @@ -1,145 +0,0 @@ -param( - [switch]$Required, - [switch]$AutoInstallDoxygen -) - -$ErrorActionPreference = "Stop" - -$docsRoot = Split-Path -Parent $PSScriptRoot -$repoRoot = Split-Path -Parent $docsRoot -$outputFile = Join-Path $docsRoot "docs/api/cpp/native-cpp-reference.md" -$doxygenRoot = Join-Path $docsRoot ".doxygen" -$xmlDir = Join-Path $doxygenRoot "xml" -$doxyfilePath = Join-Path $doxygenRoot "Doxyfile.generated" - -function New-PlaceholderFile { - $content = @" ---- -title: Native C++ API Reference ---- - -# Native C++ API Reference - -This page is generated from C++ headers via Doxygen XML and moxygen. - -Generation did not run in this environment (missing `doxygen` and/or `npx`). - -To generate locally: - -1. Install Doxygen. -2. Ensure Node.js/npm is installed. -3. Run `./docs/scripts/update-cpp-api.ps1`. -"@ - - $content | Set-Content -Path $outputFile -Encoding UTF8 -} - -function Handle-MissingTool { - param([string]$Message) - if ($Required) { - throw $Message - } - - Write-Warning $Message - if (-not (Test-Path $outputFile)) { - New-PlaceholderFile - } - exit 0 -} - -function Ensure-Doxygen { - if (Get-Command doxygen -ErrorAction SilentlyContinue) { - return $true - } - - if (-not $AutoInstallDoxygen) { - return $false - } - - Write-Host "Doxygen not found. Attempting automatic installation..." - - if (Get-Command winget -ErrorAction SilentlyContinue) { - try { - winget install --id DimitriVanHeesch.Doxygen --exact --accept-package-agreements --accept-source-agreements --silent - } catch { - Write-Warning "winget installation attempt failed: $($_.Exception.Message)" - } - } - - if (-not (Get-Command doxygen -ErrorAction SilentlyContinue) -and (Get-Command choco -ErrorAction SilentlyContinue)) { - try { - choco install doxygen.install -y --no-progress - } catch { - Write-Warning "choco installation attempt failed: $($_.Exception.Message)" - } - } - - return [bool](Get-Command doxygen -ErrorAction SilentlyContinue) -} - -if (-not (Ensure-Doxygen)) { - Handle-MissingTool "Doxygen not found on PATH. Skipping C++ API generation." -} - -if (-not (Get-Command npx -ErrorAction SilentlyContinue)) { - Handle-MissingTool "npx not found on PATH. Skipping C++ API generation." -} - -New-Item -ItemType Directory -Path $doxygenRoot -Force | Out-Null -New-Item -ItemType Directory -Path (Split-Path -Parent $outputFile) -Force | Out-Null - -$inputDirs = @( - (Join-Path $repoRoot "src/InfiniFrame.Native/Core"), - (Join-Path $repoRoot "src/InfiniFrame.Native/Types"), - (Join-Path $repoRoot "src/InfiniFrame.Native/Utils"), - (Join-Path $repoRoot "src/InfiniFrame.Native/Platform") -) - -$inputValue = ($inputDirs | ForEach-Object { """$_""" }) -join " " - -$doxyfile = @" -PROJECT_NAME = "InfiniFrame.Native" -OUTPUT_DIRECTORY = "$($doxygenRoot.Replace('\','/'))" -GENERATE_HTML = NO -GENERATE_XML = YES -GENERATE_LATEX = NO -XML_OUTPUT = xml -RECURSIVE = YES -EXTRACT_ALL = NO -EXTRACT_PRIVATE = NO -EXTRACT_STATIC = NO -EXTRACT_LOCAL_CLASSES = NO -HIDE_UNDOC_MEMBERS = YES -HIDE_UNDOC_CLASSES = YES -FILE_PATTERNS = *.h *.hpp -INPUT = $inputValue -QUIET = YES -WARN_IF_UNDOCUMENTED = NO -WARN_IF_DOC_ERROR = YES -FULL_PATH_NAMES = NO -HAVE_DOT = NO -EXCLUDE_SYMBOLS = std detail -"@ - -$doxyfile | Set-Content -Path $doxyfilePath -Encoding UTF8 - -doxygen $doxyfilePath | Out-Null - -if (-not (Test-Path (Join-Path $xmlDir "index.xml"))) { - if ($Required) { - throw "Doxygen did not produce XML index at '$xmlDir/index.xml'." - } - Write-Warning "Doxygen XML index not found. Skipping C++ API markdown generation." - if (-not (Test-Path $outputFile)) { - New-PlaceholderFile - } - exit 0 -} - -npx --yes moxygen $xmlDir --output $outputFile --language cpp --anchors --quiet | Out-Null - -if (-not (Test-Path $outputFile)) { - throw "moxygen did not generate '$outputFile'." -} - -Write-Host "Generated C++ API markdown at '$outputFile'." diff --git a/docs/sidebars.ts b/docs/sidebars.ts index 4bdf1831..28b40e75 100644 --- a/docs/sidebars.ts +++ b/docs/sidebars.ts @@ -37,7 +37,6 @@ const sidebars: SidebarsConfig = { label: "Migration", items: [ "migration/breaking-changes-from-photino", - "migration/docfx-to-docusaurus", ], }, ], diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css index 03398bd2..cf09e337 100644 --- a/docs/src/css/custom.css +++ b/docs/src/css/custom.css @@ -1,9 +1,11 @@ :root { - --ifm-color-primary: #3d4a3d; - --ifm-color-primary-dark: #313b31; - --ifm-color-primary-darker: #252c25; - --ifm-color-primary-darkest: #181e18; - --ifm-color-primary-light: #5a6d5a; - --ifm-color-primary-lighter: #778f77; - --ifm-color-primary-lightest: #9aac9a; -} + --ifm-color-primary: #4f6f52; + + --ifm-color-primary-dark: #446147; + --ifm-color-primary-darker: #39533c; + --ifm-color-primary-darkest: #2e4531; + + --ifm-color-primary-light: #6f8f72; + --ifm-color-primary-lighter: #8faa8e; + --ifm-color-primary-lightest: #b0c7b0; +} \ No newline at end of file diff --git a/docs/static/api/cs/index.html b/docs/static/api/cs/index.html deleted file mode 100644 index 1dccc377..00000000 --- a/docs/static/api/cs/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - InfiniFrame C# API Reference - - -
-

InfiniFrame C# API Reference

-

- This local placeholder is replaced by generated C# API pages when DocFX is available. -

-
- - \ No newline at end of file diff --git a/docs/static/favicon.ico b/docs/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..543939e54dc0b9622fe59458af24caa5c649d81b GIT binary patch literal 103143 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 bXijITIOnZfN=`a!^%YQ-NOeJIgSP)4XFE&D literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index 384f23f9..809759c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "devDependencies": { "ts-loader": "^9.5.7", "typescript": "^6.0.2", - "webpack": "^5.105.4", + "webpack": "^5.106.0", "webpack-cli": "^7.0.2" } }, @@ -1467,9 +1467,9 @@ } }, "node_modules/webpack": { - "version": "5.105.4", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.4.tgz", - "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", + "version": "5.106.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.0.tgz", + "integrity": "sha512-Pkx5joZ9RrdgO5LBkyX1L2ZAJeK/Taz3vqZ9CbcP0wS5LEMx5QkKsEwLl29QJfihZ+DKRBFldzy1O30pJ1MDpA==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index e859bec3..a8d80ac6 100644 --- a/package.json +++ b/package.json @@ -2,8 +2,7 @@ "name": "infinilore.infiniframe", "version": "0.1.0", "scripts": { - "docs:prepare-api": "powershell -ExecutionPolicy Bypass -File ./docs/scripts/prepare-local-api.ps1", - "docs:dev": "npm run docs:prepare-api && npm --prefix docs run dev", + "docs:dev": "npm --prefix docs run dev", "docs:build": "npm --prefix docs run build", "production:build": "npx webpack --env production=true", "watch:typescript": "npx webpack --watch --env production=false" @@ -15,7 +14,7 @@ "devDependencies": { "ts-loader": "^9.5.7", "typescript": "^6.0.2", - "webpack": "^5.105.4", + "webpack": "^5.106.0", "webpack-cli": "^7.0.2" } } From 831e0b25f13f096da48a295c53c761268d495ce7 Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Fri, 10 Apr 2026 16:04:49 +0200 Subject: [PATCH 10/12] Update Docusaurus config and styles: Add dark mode support, update navbar links, refine footer, and adjust primary color palette --- assets/icon.png | Bin 50462 -> 123957 bytes docs/docusaurus.config.ts | 39 +++++++++++++++++++++----------------- docs/src/css/custom.css | 35 ++++++++++++++++++++++++++++++++-- docs/static/icon.png | Bin 0 -> 123957 bytes 4 files changed, 55 insertions(+), 19 deletions(-) create mode 100644 docs/static/icon.png diff --git a/assets/icon.png b/assets/icon.png index 0ccf73d4adf742e4caf50642d4bcdca246119cf1..0d00ee25f133ee12b1b5772ed89f084f26fc8ba7 100644 GIT binary patch literal 123957 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ℜ#6utA}M`)$7ec5_14 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 x$wilwwpwuUCr_vFebnmJS&_z~^iD51r Date: Fri, 10 Apr 2026 16:09:57 +0200 Subject: [PATCH 11/12] Refine footer styles: update padding, margins, font size, and add dark mode color adjustments --- docs/src/css/custom.css | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css index 9be49e01..4e04bd10 100644 --- a/docs/src/css/custom.css +++ b/docs/src/css/custom.css @@ -40,3 +40,21 @@ -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M1.998.342a1.997 1.997 0 1 0 0 3.995 1.997 1.997 0 0 0 0-3.995zm9.18 4.34a6.156 6.156 0 0 0-6.153 6.155v6.667c0 3.4 2.756 6.154 6.154 6.154h6.667c3.4 0 6.154-2.755 6.154-6.154v-6.667a6.154 6.154 0 0 0-6.154-6.155zm-1.477 2.8a2.496 2.496 0 1 1 0 4.993 2.496 2.496 0 0 1 0-4.993zm7.968 6.16a3.996 3.996 0 1 1-.002 7.992 3.996 3.996 0 0 1 .002-7.992z'/%3E%3C/svg%3E") center/contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M1.998.342a1.997 1.997 0 1 0 0 3.995 1.997 1.997 0 0 0 0-3.995zm9.18 4.34a6.156 6.156 0 0 0-6.153 6.155v6.667c0 3.4 2.756 6.154 6.154 6.154h6.667c3.4 0 6.154-2.755 6.154-6.154v-6.667a6.154 6.154 0 0 0-6.154-6.155zm-1.477 2.8a2.496 2.496 0 1 1 0 4.993 2.496 2.496 0 0 1 0-4.993zm7.968 6.16a3.996 3.996 0 1 1-.002 7.992 3.996 3.996 0 0 1 .002-7.992z'/%3E%3C/svg%3E") center/contain no-repeat; } + +.footer--dark { + background: var(--ifm-background-surface-color); + color: var(--ifm-font-color-base); +} + +.footer { + padding: 0.45rem 0; +} + +.footer__bottom { + margin-top: 0; + padding-top: 0; +} + +.footer__copyright { + font-size: 0.92rem; +} From ba4bb96b290a20585dec2698b4921d12d301247e Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Fri, 10 Apr 2026 16:13:23 +0200 Subject: [PATCH 12/12] Update navbar: rename 'Documentation' to 'Docs', add links for 'Issues' and 'Discussions' --- docs/docusaurus.config.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts index c74d37ba..2996ef6f 100644 --- a/docs/docusaurus.config.ts +++ b/docs/docusaurus.config.ts @@ -80,7 +80,22 @@ const config: Config = { src: "icon.png", }, items: [ - { type: "docSidebar", sidebarId: "docsSidebar", position: "left", label: "Documentation" }, + { + type: "docSidebar", + sidebarId: "docsSidebar", + position: "left", + label: "Docs" + }, + { + href: "https://github.com/InfiniLore/InfiniFrame/issues", + position: "left", + label: "Issues" + }, + { + href: "https://github.com/InfiniLore/InfiniFrame/discussions", + position: "left", + label: "Discussions" + }, { href: "https://www.nuget.org/packages/InfiniLore.InfiniFrame", position: "right",