From 1fb85a7592f7cf00a89ef24837e417696cf09ed5 Mon Sep 17 00:00:00 2001 From: barisgit Date: Thu, 4 Sep 2025 23:03:07 +0200 Subject: [PATCH 1/6] [refactor] Refactor commands into subfolder layout --- kicad_lib_manager/__init__.py | 2 +- kicad_lib_manager/cli.py | 2 +- kicad_lib_manager/commands/add_3d/__init__.py | 3 +++ .../commands/{add_3d.py => add_3d/command.py} | 4 ++-- kicad_lib_manager/commands/add_hook/__init__.py | 3 +++ .../commands/{add_hook.py => add_hook/command.py} | 6 +++--- kicad_lib_manager/commands/config/__init__.py | 3 +++ .../commands/{config.py => config/command.py} | 4 ++-- kicad_lib_manager/commands/init/__init__.py | 3 +++ .../commands/{init.py => init/command.py} | 4 ++-- .../commands/list_libraries/__init__.py | 3 +++ .../command.py} | 4 ++-- kicad_lib_manager/commands/pin/__init__.py | 3 +++ .../commands/{pin.py => pin/command.py} | 4 ++-- kicad_lib_manager/commands/setup/__init__.py | 3 +++ .../commands/{setup.py => setup/command.py} | 14 +++++++------- kicad_lib_manager/commands/status/__init__.py | 3 +++ .../commands/{status.py => status/command.py} | 4 ++-- kicad_lib_manager/commands/template/__init__.py | 3 +++ .../commands/{template.py => template/command.py} | 4 ++-- kicad_lib_manager/commands/unpin/__init__.py | 3 +++ .../commands/{unpin.py => unpin/command.py} | 4 ++-- kicad_lib_manager/commands/update/__init__.py | 3 +++ .../commands/{update.py => update/command.py} | 6 +++--- tests/test_config_commands.py | 2 +- tests/test_unpin_command.py | 6 +++--- tests/test_update_command.py | 4 ++-- 27 files changed, 70 insertions(+), 37 deletions(-) create mode 100644 kicad_lib_manager/commands/add_3d/__init__.py rename kicad_lib_manager/commands/{add_3d.py => add_3d/command.py} (99%) create mode 100644 kicad_lib_manager/commands/add_hook/__init__.py rename kicad_lib_manager/commands/{add_hook.py => add_hook/command.py} (97%) create mode 100644 kicad_lib_manager/commands/config/__init__.py rename kicad_lib_manager/commands/{config.py => config/command.py} (99%) create mode 100644 kicad_lib_manager/commands/init/__init__.py rename kicad_lib_manager/commands/{init.py => init/command.py} (99%) create mode 100644 kicad_lib_manager/commands/list_libraries/__init__.py rename kicad_lib_manager/commands/{list_libraries.py => list_libraries/command.py} (91%) create mode 100644 kicad_lib_manager/commands/pin/__init__.py rename kicad_lib_manager/commands/{pin.py => pin/command.py} (98%) create mode 100644 kicad_lib_manager/commands/setup/__init__.py rename kicad_lib_manager/commands/{setup.py => setup/command.py} (98%) create mode 100644 kicad_lib_manager/commands/status/__init__.py rename kicad_lib_manager/commands/{status.py => status/command.py} (98%) create mode 100644 kicad_lib_manager/commands/template/__init__.py rename kicad_lib_manager/commands/{template.py => template/command.py} (99%) create mode 100644 kicad_lib_manager/commands/unpin/__init__.py rename kicad_lib_manager/commands/{unpin.py => unpin/command.py} (98%) create mode 100644 kicad_lib_manager/commands/update/__init__.py rename kicad_lib_manager/commands/{update.py => update/command.py} (98%) diff --git a/kicad_lib_manager/__init__.py b/kicad_lib_manager/__init__.py index da00e75..b7102ce 100644 --- a/kicad_lib_manager/__init__.py +++ b/kicad_lib_manager/__init__.py @@ -2,4 +2,4 @@ KiCad Library Manager - Library management utilities for KiCad """ -__version__ = "0.2.2" +__version__ = "0.2.3" diff --git a/kicad_lib_manager/cli.py b/kicad_lib_manager/cli.py index a0d1059..fe323ae 100644 --- a/kicad_lib_manager/cli.py +++ b/kicad_lib_manager/cli.py @@ -39,7 +39,7 @@ def main(): main.add_command(add_3d) main.add_command(config) main.add_command(update) -main.add_command(add_hook, name="add-hook") +main.add_command(add_hook) main.add_command(template) diff --git a/kicad_lib_manager/commands/add_3d/__init__.py b/kicad_lib_manager/commands/add_3d/__init__.py new file mode 100644 index 0000000..8676021 --- /dev/null +++ b/kicad_lib_manager/commands/add_3d/__init__.py @@ -0,0 +1,3 @@ +from .command import add_3d + +__all__ = ["add_3d"] diff --git a/kicad_lib_manager/commands/add_3d.py b/kicad_lib_manager/commands/add_3d/command.py similarity index 99% rename from kicad_lib_manager/commands/add_3d.py rename to kicad_lib_manager/commands/add_3d/command.py index 1085a65..84f2f76 100644 --- a/kicad_lib_manager/commands/add_3d.py +++ b/kicad_lib_manager/commands/add_3d/command.py @@ -7,8 +7,8 @@ import click -from ..config import Config -from ..utils.metadata import ( +from ...config import Config +from ...utils.metadata import ( CLOUD_METADATA_FILE, generate_env_var_name, get_default_cloud_metadata, diff --git a/kicad_lib_manager/commands/add_hook/__init__.py b/kicad_lib_manager/commands/add_hook/__init__.py new file mode 100644 index 0000000..e802f9f --- /dev/null +++ b/kicad_lib_manager/commands/add_hook/__init__.py @@ -0,0 +1,3 @@ +from .command import add_hook + +__all__ = ["add_hook"] diff --git a/kicad_lib_manager/commands/add_hook.py b/kicad_lib_manager/commands/add_hook/command.py similarity index 97% rename from kicad_lib_manager/commands/add_hook.py rename to kicad_lib_manager/commands/add_hook/command.py index 685c674..584875c 100644 --- a/kicad_lib_manager/commands/add_hook.py +++ b/kicad_lib_manager/commands/add_hook/command.py @@ -7,7 +7,7 @@ import click -from ..utils.git_utils import ( +from ...utils.git_utils import ( backup_existing_hook, create_kilm_hook_content, get_git_hooks_directory, @@ -50,7 +50,7 @@ def add_hook(directory, force): click.echo(f"Using hooks directory: {hooks_dir}") except RuntimeError as e: - raise click.ClickException(f"Error: {e}") + raise click.ClickException(f"Error: {e}") from e # Check if post-merge hook already exists post_merge_hook = hooks_dir / "post-merge" @@ -111,4 +111,4 @@ def add_hook(directory, force): click.echo("the update behavior or automatically set up libraries.") except Exception as e: - raise click.ClickException(f"Error creating hook: {str(e)}") + raise click.ClickException(f"Error creating hook: {str(e)}") from e diff --git a/kicad_lib_manager/commands/config/__init__.py b/kicad_lib_manager/commands/config/__init__.py new file mode 100644 index 0000000..6a0af2a --- /dev/null +++ b/kicad_lib_manager/commands/config/__init__.py @@ -0,0 +1,3 @@ +from .command import config + +__all__ = ["config"] diff --git a/kicad_lib_manager/commands/config.py b/kicad_lib_manager/commands/config/command.py similarity index 99% rename from kicad_lib_manager/commands/config.py rename to kicad_lib_manager/commands/config/command.py index 8563a51..126a1af 100644 --- a/kicad_lib_manager/commands/config.py +++ b/kicad_lib_manager/commands/config/command.py @@ -8,8 +8,8 @@ import click -from ..config import Config -from ..utils.metadata import ( +from ...config import Config +from ...utils.metadata import ( CLOUD_METADATA_FILE, GITHUB_METADATA_FILE, read_cloud_metadata, diff --git a/kicad_lib_manager/commands/init/__init__.py b/kicad_lib_manager/commands/init/__init__.py new file mode 100644 index 0000000..3ea0b37 --- /dev/null +++ b/kicad_lib_manager/commands/init/__init__.py @@ -0,0 +1,3 @@ +from .command import init + +__all__ = ["init"] diff --git a/kicad_lib_manager/commands/init.py b/kicad_lib_manager/commands/init/command.py similarity index 99% rename from kicad_lib_manager/commands/init.py rename to kicad_lib_manager/commands/init/command.py index 24b15ed..408ccd7 100644 --- a/kicad_lib_manager/commands/init.py +++ b/kicad_lib_manager/commands/init/command.py @@ -8,8 +8,8 @@ import click -from ..config import Config -from ..utils.metadata import ( +from ...config import Config +from ...utils.metadata import ( GITHUB_METADATA_FILE, generate_env_var_name, get_default_github_metadata, diff --git a/kicad_lib_manager/commands/list_libraries/__init__.py b/kicad_lib_manager/commands/list_libraries/__init__.py new file mode 100644 index 0000000..df7abab --- /dev/null +++ b/kicad_lib_manager/commands/list_libraries/__init__.py @@ -0,0 +1,3 @@ +from .command import list_cmd + +__all__ = ["list_cmd"] diff --git a/kicad_lib_manager/commands/list_libraries.py b/kicad_lib_manager/commands/list_libraries/command.py similarity index 91% rename from kicad_lib_manager/commands/list_libraries.py rename to kicad_lib_manager/commands/list_libraries/command.py index 42d4552..89ad48d 100644 --- a/kicad_lib_manager/commands/list_libraries.py +++ b/kicad_lib_manager/commands/list_libraries/command.py @@ -6,8 +6,8 @@ import click -from ..library_manager import list_libraries -from ..utils.env_vars import expand_user_path, find_environment_variables +from ...library_manager import list_libraries +from ...utils.env_vars import expand_user_path, find_environment_variables @click.command() diff --git a/kicad_lib_manager/commands/pin/__init__.py b/kicad_lib_manager/commands/pin/__init__.py new file mode 100644 index 0000000..21044cf --- /dev/null +++ b/kicad_lib_manager/commands/pin/__init__.py @@ -0,0 +1,3 @@ +from .command import pin + +__all__ = ["pin"] diff --git a/kicad_lib_manager/commands/pin.py b/kicad_lib_manager/commands/pin/command.py similarity index 98% rename from kicad_lib_manager/commands/pin.py rename to kicad_lib_manager/commands/pin/command.py index 40ebc7b..ea7f030 100644 --- a/kicad_lib_manager/commands/pin.py +++ b/kicad_lib_manager/commands/pin/command.py @@ -6,8 +6,8 @@ import click -from ..library_manager import find_kicad_config, list_libraries -from ..utils.env_vars import ( +from ...library_manager import find_kicad_config, list_libraries +from ...utils.env_vars import ( expand_user_path, find_environment_variables, update_pinned_libraries, diff --git a/kicad_lib_manager/commands/setup/__init__.py b/kicad_lib_manager/commands/setup/__init__.py new file mode 100644 index 0000000..9142379 --- /dev/null +++ b/kicad_lib_manager/commands/setup/__init__.py @@ -0,0 +1,3 @@ +from .command import setup + +__all__ = ["setup"] diff --git a/kicad_lib_manager/commands/setup.py b/kicad_lib_manager/commands/setup/command.py similarity index 98% rename from kicad_lib_manager/commands/setup.py rename to kicad_lib_manager/commands/setup/command.py index 63020e6..ce8ae67 100644 --- a/kicad_lib_manager/commands/setup.py +++ b/kicad_lib_manager/commands/setup/command.py @@ -9,16 +9,16 @@ import click -from ..config import Config, LibraryDict -from ..library_manager import add_libraries, find_kicad_config -from ..utils.backup import create_backup -from ..utils.env_vars import ( +from ...config import Config, LibraryDict +from ...library_manager import add_libraries, find_kicad_config +from ...utils.backup import create_backup +from ...utils.env_vars import ( expand_user_path, find_environment_variables, update_kicad_env_vars, update_pinned_libraries, ) -from ..utils.metadata import read_cloud_metadata, read_github_metadata +from ...utils.metadata import read_cloud_metadata, read_github_metadata def fix_invalid_uris( @@ -39,7 +39,7 @@ def fix_invalid_uris( Returns: True if changes were made, False otherwise """ - from ..utils.backup import create_backup + from ...utils.backup import create_backup # Get the library table paths sym_table = kicad_config / "sym-lib-table" @@ -476,7 +476,7 @@ def setup( # Also list existing libraries to pin them all try: - from ..library_manager import list_libraries + from ...library_manager import list_libraries existing_symbols, existing_footprints = list_libraries(kicad_lib_dir) symbol_libs = existing_symbols diff --git a/kicad_lib_manager/commands/status/__init__.py b/kicad_lib_manager/commands/status/__init__.py new file mode 100644 index 0000000..239e435 --- /dev/null +++ b/kicad_lib_manager/commands/status/__init__.py @@ -0,0 +1,3 @@ +from .command import status + +__all__ = ["status"] diff --git a/kicad_lib_manager/commands/status.py b/kicad_lib_manager/commands/status/command.py similarity index 98% rename from kicad_lib_manager/commands/status.py rename to kicad_lib_manager/commands/status/command.py index f745a91..6a2a4e8 100644 --- a/kicad_lib_manager/commands/status.py +++ b/kicad_lib_manager/commands/status/command.py @@ -8,8 +8,8 @@ import click import yaml -from ..library_manager import find_kicad_config, list_configured_libraries -from ..utils.metadata import read_cloud_metadata, read_github_metadata +from ...library_manager import find_kicad_config, list_configured_libraries +from ...utils.metadata import read_cloud_metadata, read_github_metadata @click.command() diff --git a/kicad_lib_manager/commands/template/__init__.py b/kicad_lib_manager/commands/template/__init__.py new file mode 100644 index 0000000..4d98761 --- /dev/null +++ b/kicad_lib_manager/commands/template/__init__.py @@ -0,0 +1,3 @@ +from .command import template + +__all__ = ["template"] diff --git a/kicad_lib_manager/commands/template.py b/kicad_lib_manager/commands/template/command.py similarity index 99% rename from kicad_lib_manager/commands/template.py rename to kicad_lib_manager/commands/template/command.py index 5be8099..1b667eb 100644 --- a/kicad_lib_manager/commands/template.py +++ b/kicad_lib_manager/commands/template/command.py @@ -16,8 +16,8 @@ import questionary import yaml -from ..config import Config -from ..utils.template import ( +from ...config import Config +from ...utils.template import ( HOOKS_DIR, POST_CREATE_HOOK, TEMPLATE_CONTENT_DIR, diff --git a/kicad_lib_manager/commands/unpin/__init__.py b/kicad_lib_manager/commands/unpin/__init__.py new file mode 100644 index 0000000..90604f2 --- /dev/null +++ b/kicad_lib_manager/commands/unpin/__init__.py @@ -0,0 +1,3 @@ +from .command import unpin + +__all__ = ["unpin"] diff --git a/kicad_lib_manager/commands/unpin.py b/kicad_lib_manager/commands/unpin/command.py similarity index 98% rename from kicad_lib_manager/commands/unpin.py rename to kicad_lib_manager/commands/unpin/command.py index d70bf04..de8179f 100644 --- a/kicad_lib_manager/commands/unpin.py +++ b/kicad_lib_manager/commands/unpin/command.py @@ -7,8 +7,8 @@ import click -from ..library_manager import find_kicad_config -from ..utils.backup import create_backup +from ...library_manager import find_kicad_config +from ...utils.backup import create_backup @click.command() diff --git a/kicad_lib_manager/commands/update/__init__.py b/kicad_lib_manager/commands/update/__init__.py new file mode 100644 index 0000000..8a0a7f6 --- /dev/null +++ b/kicad_lib_manager/commands/update/__init__.py @@ -0,0 +1,3 @@ +from .command import check_for_library_changes, update + +__all__ = ["check_for_library_changes", "update"] diff --git a/kicad_lib_manager/commands/update.py b/kicad_lib_manager/commands/update/command.py similarity index 98% rename from kicad_lib_manager/commands/update.py rename to kicad_lib_manager/commands/update/command.py index ee9f00b..f6a5705 100644 --- a/kicad_lib_manager/commands/update.py +++ b/kicad_lib_manager/commands/update/command.py @@ -9,7 +9,7 @@ import click -from ..config import Config +from ...config import Config @click.command() @@ -154,7 +154,7 @@ def update(dry_run, verbose, auto_setup): click.echo("\nRunning 'kilm setup' to configure new libraries...") # Import at runtime to avoid circular imports try: - from .setup import setup as setup_cmd + from ...commands.setup import setup as setup_cmd ctx = click.Context(setup_cmd) setup_cmd.invoke(ctx) @@ -175,7 +175,7 @@ def update(dry_run, verbose, auto_setup): ) click.echo("Use 'kilm status' to check your current configuration.") - +# TODO: Should be in services or utils def check_for_library_changes(git_output, lib_path): """ Check if git pull output and filesystem changes indicate new libraries that would require setup. diff --git a/tests/test_config_commands.py b/tests/test_config_commands.py index 0d1c1e1..4ff2c7d 100644 --- a/tests/test_config_commands.py +++ b/tests/test_config_commands.py @@ -41,7 +41,7 @@ def mock_load_config(): @pytest.fixture def mock_config_class(monkeypatch, mock_config): """Mock the Config class to return our mock config.""" - monkeypatch.setattr("kicad_lib_manager.commands.config.Config", lambda: mock_config) + monkeypatch.setattr("kicad_lib_manager.commands.config.command.Config", lambda: mock_config) return mock_config diff --git a/tests/test_unpin_command.py b/tests/test_unpin_command.py index 5c9ba1a..57a0dc9 100644 --- a/tests/test_unpin_command.py +++ b/tests/test_unpin_command.py @@ -37,7 +37,7 @@ def test_mutual_exclusivity_all_with_both(self): def test_mutual_exclusivity_all_only(self): """Test that --all can be used without --symbols or --footprints.""" - with patch('kicad_lib_manager.commands.unpin.find_kicad_config') as mock_find_config: + with patch('kicad_lib_manager.commands.unpin.command.find_kicad_config') as mock_find_config: mock_find_config.return_value = Path("/tmp/kicad") with patch('pathlib.Path.exists') as mock_exists: @@ -53,7 +53,7 @@ def test_mutual_exclusivity_all_only(self): def test_mutual_exclusivity_symbols_only(self): """Test that --symbols can be used without --all.""" - with patch('kicad_lib_manager.commands.unpin.find_kicad_config') as mock_find_config: + with patch('kicad_lib_manager.commands.unpin.command.find_kicad_config') as mock_find_config: mock_find_config.return_value = Path("/tmp/kicad") with patch('pathlib.Path.exists') as mock_exists: @@ -69,7 +69,7 @@ def test_mutual_exclusivity_symbols_only(self): def test_mutual_exclusivity_footprints_only(self): """Test that --footprints can be used without --all.""" - with patch('kicad_lib_manager.commands.unpin.find_kicad_config') as mock_find_config: + with patch('kicad_lib_manager.commands.unpin.command.find_kicad_config') as mock_find_config: mock_find_config.return_value = Path("/tmp/kicad") with patch('pathlib.Path.exists') as mock_exists: diff --git a/tests/test_update_command.py b/tests/test_update_command.py index 7020133..78fd196 100644 --- a/tests/test_update_command.py +++ b/tests/test_update_command.py @@ -23,7 +23,7 @@ def mock_config(monkeypatch): config_mock = MagicMock() config_mock.get_libraries.return_value = TEST_LIBRARIES - monkeypatch.setattr("kicad_lib_manager.commands.update.Config", lambda: config_mock) + monkeypatch.setattr("kicad_lib_manager.commands.update.command.Config", lambda: config_mock) return config_mock @@ -169,7 +169,7 @@ def test_update_no_libraries(monkeypatch): """Test update when no libraries are configured.""" config_mock = MagicMock() config_mock.get_libraries.return_value = [] - monkeypatch.setattr("kicad_lib_manager.commands.update.Config", lambda: config_mock) + monkeypatch.setattr("kicad_lib_manager.commands.update.command.Config", lambda: config_mock) runner = CliRunner() result = runner.invoke(main, ["update"]) From 51651e94ee5507fb0722be7103ea744353e6200d Mon Sep 17 00:00:00 2001 From: barisgit Date: Thu, 4 Sep 2025 23:03:34 +0200 Subject: [PATCH 2/6] [refactor] Move docs to be collocated with commands (API reference) --- kicad_lib_manager/commands/add_3d/.command | 1 + kicad_lib_manager/commands/add_3d/docs.md | 80 +++++ kicad_lib_manager/commands/add_hook/.command | 1 + kicad_lib_manager/commands/add_hook/docs.md | 113 +++++++ kicad_lib_manager/commands/config/docs.mdx | 166 ++++++++++ kicad_lib_manager/commands/init/docs.md | 87 ++++++ .../commands/list_libraries/.command | 1 + .../commands/list_libraries/docs.md | 64 ++++ kicad_lib_manager/commands/pin/docs.md | 100 ++++++ kicad_lib_manager/commands/setup/docs.md | 124 ++++++++ kicad_lib_manager/commands/status/docs.md | 80 +++++ kicad_lib_manager/commands/template/docs.mdx | 291 ++++++++++++++++++ kicad_lib_manager/commands/unpin/docs.md | 82 +++++ kicad_lib_manager/commands/update/docs.md | 68 ++++ 14 files changed, 1258 insertions(+) create mode 100644 kicad_lib_manager/commands/add_3d/.command create mode 100644 kicad_lib_manager/commands/add_3d/docs.md create mode 100644 kicad_lib_manager/commands/add_hook/.command create mode 100644 kicad_lib_manager/commands/add_hook/docs.md create mode 100644 kicad_lib_manager/commands/config/docs.mdx create mode 100644 kicad_lib_manager/commands/init/docs.md create mode 100644 kicad_lib_manager/commands/list_libraries/.command create mode 100644 kicad_lib_manager/commands/list_libraries/docs.md create mode 100644 kicad_lib_manager/commands/pin/docs.md create mode 100644 kicad_lib_manager/commands/setup/docs.md create mode 100644 kicad_lib_manager/commands/status/docs.md create mode 100644 kicad_lib_manager/commands/template/docs.mdx create mode 100644 kicad_lib_manager/commands/unpin/docs.md create mode 100644 kicad_lib_manager/commands/update/docs.md diff --git a/kicad_lib_manager/commands/add_3d/.command b/kicad_lib_manager/commands/add_3d/.command new file mode 100644 index 0000000..cd9401c --- /dev/null +++ b/kicad_lib_manager/commands/add_3d/.command @@ -0,0 +1 @@ +add-3d \ No newline at end of file diff --git a/kicad_lib_manager/commands/add_3d/docs.md b/kicad_lib_manager/commands/add_3d/docs.md new file mode 100644 index 0000000..d2dda41 --- /dev/null +++ b/kicad_lib_manager/commands/add_3d/docs.md @@ -0,0 +1,80 @@ +--- +title: add-3d +description: Add a directory containing 3D models (e.g., STEP, WRL). +--- + +The `kilm add-3d` command registers a directory containing 3D models (like `.step` or `.wrl` files) with KiLM. This is typically used for libraries stored outside the main symbol/footprint Git repository, such as in cloud-synced folders. + +It performs the following main actions: + +1. Creates or updates a metadata file named `.kilm_cloud_metadata` within the target directory. This stores the library's name, description, associated environment variable, and a count of detected model files. +2. Adds an entry for this library (with its path and type `cloud`) to the main KiLM configuration file (`~/.config/kicad-lib-manager/config.yaml`). +3. Scans the directory for common 3D model file extensions and warns if none are found. + +## Usage + +```bash +kilm add-3d [OPTIONS] +``` + +## Options + +- `--directory DIRECTORY`: + Specifies the path to the directory containing the 3D models. + _Default:_ Uses the current working directory if not specified. + _Example:_ `kilm add-3d --directory ~/kicad/libraries/3d-models` + +- `--name TEXT`: + Sets a custom name for this 3D library entry. If not provided, a name is generated from the directory name. + _Example:_ `kilm add-3d --directory ... --name standard-3d-lib` + +- `--description TEXT`: + Adds an optional description for this 3D library to the metadata file. + _Example:_ `kilm add-3d --directory ... --name ... --description "My custom collection of STEP models"` + +- `--env-var TEXT`: + Specifies a custom KiCad environment variable name (e.g., `MY_CUSTOM_3D`) to associate with this library's path. If not provided (and `--no-env-var` isn't used), a name is automatically generated (e.g., `KICAD_3D_STANDARD_3D_LIB`). This variable will be set in KiCad when you run `kilm setup`. + _Example:_ `kilm add-3d --directory ... --name ... --env-var KICAD_USER_3DMOD` + +- `--no-env-var`: + Prevents an environment variable from being assigned to this library in the metadata. Default: `False`. + _Example:_ `kilm add-3d --no-env-var` + +- `--force`: + If `.kilm_cloud_metadata` already exists in the target directory, overwrite it with new metadata based on options or defaults. Without `--force`, existing metadata is updated only with explicitly provided options. Default: `False`. + _Example:_ `kilm add-3d --directory ... --force` + +- `--help`: + Show the help message and exit. + +## Behavior + +- **Target Directory:** Uses `--directory` path or current working directory. +- **Creates/Updates Metadata:** Creates or modifies `.kilm_cloud_metadata` in the target directory. +- **Updates Global Config:** Adds library entry (type `cloud`) to main `config.yaml`. +- **Verification:** Checks for the presence of files with extensions like `.step`, `.stp`, `.wrl` in the target directory. + +## Examples + +**Add a 3D library (using defaults where possible):** +Register the directory `/home/user/cad/my_3d_parts`. A name and environment variable will be generated automatically. + +```bash +kilm add-3d --directory /home/user/cad/my_3d_parts --description "Custom 3D mechanical parts" +``` + +**Add a 3D library with specific names:** +Register the directory `/opt/kicad/packages3d`, name it `kicad-official-3d`, and assign the environment variable `KICAD_OFFICIAL_3D`. + +```bash +kilm add-3d --directory /opt/kicad/packages3d --name kicad-official-3d --env-var KICAD_OFFICIAL_3D --description "KiCad Official 3D Models" +``` + +**Add 3D library in current directory without an environment variable:** + +```bash +cd ~/my_project_3d_models +kilm add-3d --name my-project-models --no-env-var +``` + +**Note:** After adding 3D libraries, you usually need to run [`kilm setup`](/reference/cli/setup/) to create or update the associated environment variables (like `KICAD_OFFICIAL_3D` in the example) in KiCad's configuration. diff --git a/kicad_lib_manager/commands/add_hook/.command b/kicad_lib_manager/commands/add_hook/.command new file mode 100644 index 0000000..8f870ef --- /dev/null +++ b/kicad_lib_manager/commands/add_hook/.command @@ -0,0 +1 @@ +add-hook \ No newline at end of file diff --git a/kicad_lib_manager/commands/add_hook/docs.md b/kicad_lib_manager/commands/add_hook/docs.md new file mode 100644 index 0000000..1959427 --- /dev/null +++ b/kicad_lib_manager/commands/add_hook/docs.md @@ -0,0 +1,113 @@ +--- +title: add-hook +description: Add a Git post-merge hook to automatically update libraries. +--- + +The `kilm add-hook` command creates or modifies a Git `post-merge` hook script in a specified repository. This hook is designed to automatically run `kilm update` after successful `git pull` or `git merge` operations. + +This helps keep your KiLM-managed libraries that are Git repositories synchronized with their remotes automatically. + +## Usage + +```bash +kilm add-hook [OPTIONS] +``` + +## Options + +- `--directory DIRECTORY`: + Specifies the path to the Git repository where the hook should be added. Defaults to the current directory. + _Example:_ `kilm add-hook --directory ~/my-kicad-libs-repo` + +- `--force / --no-force`: + If a `post-merge` hook already exists, overwrite it with the KiLM hook. Without `--force`, the command might fail if a hook already exists. + _Example:_ `kilm add-hook --force` + +- `--help`: + Show the help message and exit. + +## Behavior + +1. **Detects Active Hooks Directory:** + - Queries `git config core.hooksPath` for custom hooks directory + - Falls back to `.git/hooks` (standard location) + - Handles Git worktrees where hooks live in the linked location +2. **Checks Existing Hook:** Looks for an existing file named `post-merge`. +3. **Creates Safe Backup:** If a hook exists, creates a timestamped backup before modification. +4. **Intelligent Content Management:** + - If KiLM content already exists, updates the managed section + - If other content exists, merges KiLM content with clear markers + - Preserves existing user logic while adding KiLM functionality +5. **Writes Hook Script:** Creates or updates the hook file with content similar to this: + + ```bash + #!/bin/sh + # BEGIN KiLM-managed section + # KiCad Library Manager auto-update hook + # Added by kilm add-hook command + + echo "Running KiCad Library Manager update..." + kilm update + + # Uncomment to set up libraries automatically (use with caution) + # kilm setup + + echo "KiCad libraries update complete." + # END KiLM-managed section + ``` + +6. **Sets Permissions:** Ensures the hook has executable permissions (`chmod +x`). + +## Examples + +**Add hook to the current Git repository:** + +```bash +# Make sure you are in the root of your Git repository +kilm add-hook +``` + +**Add hook to a specific repository, overwriting if necessary:** + +```bash +kilm add-hook --directory /path/to/another/repo --force +``` + +## Advanced Features + +### Custom Hooks Directory + +If your repository uses `git config core.hooksPath` to specify a custom hooks directory, KiLM will automatically detect and use that location. + +### Git Worktree Support + +For repositories using Git worktrees, KiLM correctly identifies the main repository location and installs hooks in the appropriate hooks directory. + +### Safe Updates + +- **First Run:** Creates a new hook with KiLM content +- **Subsequent Runs:** Updates only the KiLM-managed section, preserving other customizations +- **Backup Protection:** Always creates timestamped backups before modifications +- **Idempotent:** Safe to run multiple times without duplicating content + +## Customization + +If you want the hook to do more, such as automatically running `kilm setup` after updating (which is potentially riskier as it modifies KiCad config automatically), you can manually edit the generated hook script. + +**Example (Manual Edit for Auto-Setup):** + +```bash +#!/bin/sh +# BEGIN KiLM-managed section +# KiCad Library Manager auto-update hook +# Added by kilm add-hook command + +echo "Running KiCad Library Manager update..." +kilm update + +# Uncomment to set up libraries automatically (use with caution) +kilm setup + +echo "KiCad libraries update complete." +# END KiLM-managed section +``` diff --git a/kicad_lib_manager/commands/config/docs.mdx b/kicad_lib_manager/commands/config/docs.mdx new file mode 100644 index 0000000..50d9197 --- /dev/null +++ b/kicad_lib_manager/commands/config/docs.mdx @@ -0,0 +1,166 @@ +--- +title: config +description: View and manage KiLM configuration settings and libraries. +--- + +import { Tabs, TabItem } from "@astrojs/starlight/components"; + +The `kilm config` command group allows you to inspect and manage the libraries registered in your KiLM configuration (`config.yaml`) and control settings like the default library. + +## Subcommands + + + + +Lists the configured libraries. + +#### Usage + +```bash +kilm config list [OPTIONS] +``` + +#### Options + +- `--type [github|cloud|all]`: + Filters the libraries shown by type. + - `github`: Shows symbol/footprint/template libraries. + - `cloud`: Shows 3D model libraries. + - `all`: Shows all types (default). + _Example:_ `kilm config list --type github` + +- `-v, --verbose`: + Displays more detailed information about each library, reading from both `config.yaml` and the library's metadata file (`kilm.yaml` or `.kilm_cloud_metadata`). Shows path, description, version, environment variable, capabilities/model count, etc. + _Example:_ `kilm config list --verbose` + +- `--help`: + Show the help message and exit. + +#### Examples + +**List all configured libraries (basic view):** + +```bash +kilm config list +``` + +**List only symbol/footprint libraries:** + +```bash +kilm config list --type github +``` + +**List all libraries with detailed information:** + +```bash +kilm config list --verbose +``` + +**List only 3D model libraries with details:** + +```bash +kilm config list --type cloud --verbose +``` + + + + +Sets a specific registered library as the default ("current") library used by KiLM. + +The `current_library` setting in `config.yaml` determines which library path is used by default in commands like `status` or `setup` (when not using `--all-libraries` or specific library flags). + +#### Usage + +```bash +kilm config set-default [LIBRARY_NAME] [OPTIONS] +``` + +#### Arguments + +- `LIBRARY_NAME`: The name (as shown in `kilm config list`) of the library to set as default. If omitted, you will be prompted to choose from a list. + +#### Options + +- `--type [github|cloud]`: + Specifies the type of library to choose from when prompting (if `LIBRARY_NAME` is omitted) or to disambiguate if names clash. Default: `github`. + _Example:_ `kilm config set-default --type cloud` (prompts for a cloud library) + +- `--help`: + Show the help message and exit. + +#### Examples + +**Set a specific GitHub library as default:** + +```bash +kilm config set-default my-company-library +``` + +**Set a specific Cloud (3D) library as default:** + +```bash +kilm config set-default shared-3d-models --type cloud +``` + +**Interactively select a GitHub library to be default:** + +```bash +kilm config set-default +``` + +**Interactively select a Cloud library to be default:** + +```bash +kilm config set-default --type cloud +``` + + + + +Removes a registered library from the KiLM configuration (`config.yaml`). This does _not_ delete the library files or its metadata file, only the entry in KiLM's central config. + +#### Usage + +```bash +kilm config remove LIBRARY_NAME [OPTIONS] +``` + +#### Arguments + +- `LIBRARY_NAME`: **Required.** The name (as shown in `kilm config list`) of the library to remove from the configuration. + +#### Options + +- `--type [github|cloud|all]`: + Specifies the type of the library entry to remove. If a name exists for both types, this is needed for disambiguation. `all` removes entries with this name regardless of type. Default: `all`. + _Example:_ `kilm config remove obsolete-lib --type github` + +- `--force`: + Remove the library entry without asking for confirmation. Default: `False` (confirmation required). + _Example:_ `kilm config remove old-project-lib --force` + +- `--help`: + Show the help message and exit. + +#### Examples + +**Remove a library (will ask for confirmation):** + +```bash +kilm config remove temp-test-library +``` + +**Remove only the GitHub entry for a library:** + +```bash +kilm config remove shared-lib --type github +``` + +**Force removal without confirmation:** + +```bash +kilm config remove unused-3d-models --type cloud --force +``` + + + diff --git a/kicad_lib_manager/commands/init/docs.md b/kicad_lib_manager/commands/init/docs.md new file mode 100644 index 0000000..de7d32b --- /dev/null +++ b/kicad_lib_manager/commands/init/docs.md @@ -0,0 +1,87 @@ +--- +title: init +description: Initialize the current directory as a KiCad library collection. +--- + +The `kilm init` command prepares the **current working directory** to be managed by KiLM as a library collection, primarily intended for symbol, footprint, and template libraries (often managed via Git, hence the internal type `github`). + +It performs several actions: + +1. Creates standard subdirectories (`symbols/`, `footprints/`, `templates/`) if they don't exist. +2. Creates a template `library_descriptions.yaml` file if it doesn't exist, used for richer descriptions in KiCad. +3. Creates or updates a metadata file named `kilm.yaml` within the current directory. This stores the library's name, description, associated environment variable, and detected capabilities (symbols, footprints, templates). +4. Adds an entry for this library (with its path and type `github`) to the main KiLM configuration file (`~/.config/kicad-lib-manager/config.yaml`). +5. Optionally sets this library as the `current_library` in the main configuration. + +## Usage + +Run this command from _within_ the directory you want to initialize: + +```bash +cd /path/to/your-library +kilm init [OPTIONS] +``` + +## Options + +- `--name TEXT`: + Sets a custom name for the library collection. If not provided, a name is generated from the current directory name. + _Example:_ `kilm init --name my-custom-library` + +- `--description TEXT`: + Adds a description to the library metadata (`kilm.yaml`). + _Example:_ `kilm init --description "My collection of custom components"` + +- `--env-var TEXT`: + Specifies a custom KiCad environment variable name (e.g., `MY_CUSTOM_LIB`) to associate with this library's path. If not provided (and `--no-env-var` isn't used), a name is automatically generated (e.g., `KICAD_LIB_MY_CUSTOM_LIBRARY`). This variable will be set in KiCad when you run `kilm setup`. + _Example:_ `kilm init --env-var MY_LIB_PATH` + +- `--no-env-var`: + Prevents an environment variable from being assigned to this library in the metadata. Default: `False`. + _Example:_ `kilm init --no-env-var` + +- `--set-current / --no-set-current`: + Controls whether this library should be set as the `current_library` in the main `config.yaml`. Default: `--set-current`. + _Example:_ `kilm init --no-set-current` + +- `--force`: + If `kilm.yaml` already exists, overwrite it with new metadata based on options or defaults. Without `--force`, existing metadata is updated only with explicitly provided options. Default: `False`. + _Example:_ `kilm init --force` + +- `--help`: + Show the help message and exit. + +## Behavior Summary + +- **Target:** Current working directory. +- **Creates/Updates:** `symbols/`, `footprints/`, `templates/` dirs, `library_descriptions.yaml`, `kilm.yaml`. +- **Modifies Global Config:** Adds library entry to main `config.yaml`, optionally sets `current_library`. +- **Library Type:** Registers the library with type `github` in `config.yaml`. + +## Examples + +**Basic Initialization:** +Initialize the current directory, creating folders and metadata, using default names/env vars, and setting it as current. + +```bash +cd /path/to/my-kicad-library +kilm init +``` + +**Initialization with Options:** +Initialize with a specific name, description, and environment variable, and _don't_ set it as the current library. + +```bash +cd /path/to/another-kicad-library +kilm init --name project-specific --description "Components for Project X" --env-var PROJECT_X_LIBS --no-set-current +``` + +**Re-initialize with Force:** +Overwrite existing `kilm.yaml` with default settings. + +```bash +cd /path/to/existing-library +kilm init --force +``` + +**Note:** Running `kilm init` registers the library with KiLM and prepares the directory. You still need to run [`kilm setup`](/reference/cli/setup/) afterwards to make KiCad aware of this library by updating KiCad's configuration files. diff --git a/kicad_lib_manager/commands/list_libraries/.command b/kicad_lib_manager/commands/list_libraries/.command new file mode 100644 index 0000000..e48b39a --- /dev/null +++ b/kicad_lib_manager/commands/list_libraries/.command @@ -0,0 +1 @@ +list \ No newline at end of file diff --git a/kicad_lib_manager/commands/list_libraries/docs.md b/kicad_lib_manager/commands/list_libraries/docs.md new file mode 100644 index 0000000..31b4ca8 --- /dev/null +++ b/kicad_lib_manager/commands/list_libraries/docs.md @@ -0,0 +1,64 @@ +--- +title: list +description: List symbol and footprint libraries found within a directory. +--- + +The `kilm list` command scans a specified directory (typically your main KiCad library directory) and lists the symbol (`.kicad_sym`) and footprint (`.pretty`) libraries it finds within it. + +This is useful for verifying the contents of a specific library directory, independent of KiLM's own configuration. + +## Usage + +```bash +kilm list [OPTIONS] +``` + +## Options + +- `--kicad-lib-dir TEXT`: + Specify the path to the KiCad library directory you want to scan. + If not provided, KiLM will look for the `KICAD_USER_LIB` environment variable and use its value. + _Default:_ Uses `KICAD_USER_LIB` environment variable. + _Example:_ `kilm list --kicad-lib-dir /path/to/my/libraries` + +- `--help`: + Show this help message and exit. + +## Behavior + +1. **Determines Target Directory:** Uses the path provided via `--kicad-lib-dir` or falls back to the `KICAD_USER_LIB` environment variable. +2. **Scans Directory:** Recursively scans the target directory. +3. **Identifies Libraries:** + - Looks for files ending in `.kicad_sym` to identify symbol libraries. + - Looks for directories ending in `.pretty` to identify footprint libraries. +4. **Prints Lists:** Outputs separate lists of the symbol and footprint library names found. + +## Examples + +**List Libraries in Default Directory:** +Scans the directory specified by the `KICAD_USER_LIB` environment variable. + +```bash +kilm list +``` + +_Expected Output (example):_ + +``` +Available Symbol Libraries: + - 74xx + - Connector + - Device + +Available Footprint Libraries: + - Capacitor_SMD + - Connector_PinHeader_2.54mm + - Resistor_SMD +``` + +**List Libraries in a Specific Directory:** +Scans the specified directory `/home/user/my-kicad-libs`. + +```bash +kilm list --kicad-lib-dir /home/user/my-kicad-libs +``` diff --git a/kicad_lib_manager/commands/pin/docs.md b/kicad_lib_manager/commands/pin/docs.md new file mode 100644 index 0000000..b544438 --- /dev/null +++ b/kicad_lib_manager/commands/pin/docs.md @@ -0,0 +1,100 @@ +--- +title: pin +description: Add libraries to KiCad's pinned (favorite) list. +--- + +The `kilm pin` command adds specified symbol and/or footprint libraries to KiCad's "Pinned Libraries" list, making them easily accessible in the symbol and footprint choosers. + +It operates by modifying the `pinned_symbol_libs` and `pinned_fp_libs` arrays within KiCad's `kicad_common.json` configuration file. + +**Note:** Changes require restarting KiCad. + +## Usage + +```bash +kilm pin [OPTIONS] +``` + +## Options + +- `--kicad-lib-dir TEXT`: + Specify the path to the KiCad library directory containing the libraries you want to pin. + If not provided, KiLM will look for the `KICAD_USER_LIB` environment variable. + This directory is scanned to find available libraries if `--all` is used or to validate specified library names. + _Default:_ Uses `KICAD_USER_LIB` environment variable. + _Example:_ `kilm pin --kicad-lib-dir /path/to/libs -s MyLib` + +- `-s, --symbols TEXT`: + Specify the name of a symbol library (`.kicad_sym` file, without extension) to pin. Use this option multiple times to pin several libraries. + _Example:_ `kilm pin -s Device -s MyCustomSymbols` + +- `-f, --footprints TEXT`: + Specify the name of a footprint library (`.pretty` directory, without extension) to pin. Use this option multiple times to pin several libraries. + _Example:_ `kilm pin -f Package_SO -f MyCustomFootprints` + +- `--all / --selected`: + Determines which libraries to pin. + - `--all` (Default): Pins _all_ symbol and footprint libraries found within the directory specified by `--kicad-lib-dir`. Cannot be used if `-s` or `-f` are specified. + - `--selected`: Pins only the libraries explicitly listed using `-s` or `-f`. This is implicitly active when `-s` or `-f` are used. + _Example (pin all):_ `kilm pin --all` + +- `--dry-run`: + Show which libraries would be added to the pinned list without actually modifying `kicad_common.json`. + _Example:_ `kilm pin --all --dry-run` + +- `--max-backups INTEGER`: + Maximum number of timestamped backups KiLM should keep for `kicad_common.json`. Default: `5`. + _Example:_ `kilm pin --max-backups 3` + +- `-v, --verbose`: + Show detailed output during the pinning process, including listing libraries found and pinned. + _Example:_ `kilm pin -s MyLib --verbose` + +- `--help`: + Show this help message and exit. + +## Behavior + +1. Locates the KiCad configuration directory and `kicad_common.json`. +2. Determines the target library directory using `--kicad-lib-dir` or `KICAD_USER_LIB`. +3. If `--all` is active (default and no `-s`/`-f`), lists all symbol/footprint libraries in the target directory. +4. If specific libraries are provided via `-s`/`-f`, validates they exist in the target directory (issues a warning if not found). +5. Creates a backup of `kicad_common.json` (unless `--dry-run`). +6. Reads the current pinned lists from `kicad_common.json`. +7. Adds the names of the determined libraries (all or selected) to the respective lists. +8. Writes the updated lists back to `kicad_common.json` (unless `--dry-run`). + +## Examples + +**Pin specific libraries:** + +```bash +kilm pin -s MySymbolLib -s AnotherLib -f MyFootprintLib +``` + +**Pin all libraries found in the default directory:** +(Assumes `KICAD_USER_LIB` is set) + +```bash +kilm pin --all +# Or simply: +kilm pin +``` + +**Pin all libraries in a specific directory:** + +```bash +kilm pin --kicad-lib-dir /path/to/company/libs --all +``` + +**Preview pinning all libraries:** + +```bash +kilm pin --all --dry-run +``` + +**Pin specific libraries with verbose output:** + +```bash +kilm pin -s Device -f Resistor_SMD -v +``` diff --git a/kicad_lib_manager/commands/setup/docs.md b/kicad_lib_manager/commands/setup/docs.md new file mode 100644 index 0000000..802f849 --- /dev/null +++ b/kicad_lib_manager/commands/setup/docs.md @@ -0,0 +1,124 @@ +--- +title: setup +description: Configure KiCad to use the registered libraries. +--- + +The `kilm setup` command reads your KiLM configuration and modifies KiCad's configuration files to reflect the registered libraries and environment variables. + +It performs the following main actions: + +1. Finds KiCad configuration files (`sym-lib-table`, `fp-lib-table`, `kicad_common.json`). +2. Creates timestamped backups of these files (number controlled by `--max-backups`). +3. Determines which libraries (symbol/footprint and 3D) to configure based on options. +4. Reads library metadata (if available) to find associated environment variable names (e.g., `KICAD_USER_LIB`). +5. Updates KiCad's environment variables (`kicad_common.json`). +6. Updates KiCad's symbol and footprint library tables (`sym-lib-table`, `fp-lib-table`). +7. Optionally updates KiCad's pinned libraries list (`kicad_common.json`) via `--pin-libraries`. +8. Attempts to fix known invalid URI formats in library tables. + +**Important:** You usually need to restart KiCad after running `kilm setup` for all changes to take effect. + +## Usage + +```bash +kilm setup [OPTIONS] +``` + +## Options + +- `--kicad-lib-dir TEXT`: + Directly specify the path for the primary symbol/footprint library directory. This path might be used to set a default environment variable like `KICAD_USER_LIB` if not otherwise specified by library metadata. Overrides environment variables (`KICAD_USER_LIB`). + _Example:_ `kilm setup --kicad-lib-dir /path/to/my/symbols` + +- `--kicad-3d-dir TEXT`: + Directly specify the path for the primary 3D models directory. This path might be used to set a default environment variable like `KICAD_3D_LIB`. Overrides environment variables (`KICAD_3D_LIB`). + _Example:_ `kilm setup --kicad-3d-dir /path/to/my/3dmodels` + +- `--symbol-lib-dirs TEXT`: + Specify a comma-separated list of library _names_ (as defined in KiLM config) to set up. Only these specific symbol/footprint libraries will be configured. This takes precedence over the default behavior and `--all-libraries`. + _Example:_ `kilm setup --symbol-lib-dirs "main-lib,project-lib"` + +- `--threed-lib-dirs TEXT`: + Specify a comma-separated list of 3D library _names_ (as defined in KiLM config) to set up. Only the environment variables for these specific 3D libraries will be configured. This takes precedence over the default behavior and `--all-libraries`. + _Example:_ `kilm setup --threed-lib-dirs "my-3d-models,official-3d"` + +- `--all-libraries`: + Configure _all_ libraries (both symbol/footprint and 3D) registered in KiLM's `config.yaml`. Without this flag, only the _current_ symbol/footprint library and the _current_ 3D library (as defined in `config.yaml` or derived) are configured by default. + _Example:_ `kilm setup --all-libraries` + +- `--max-backups INTEGER`: + Maximum number of timestamped backups KiLM should keep for each KiCad configuration file it modifies. Default: `5`. + _Example:_ `kilm setup --max-backups 10` + +- `--pin-libraries / --no-pin-libraries`: + Default: `--pin-libraries`. + Controls whether the configured libraries should be added to KiCad's "Pinned Libraries" list for quick access in the managers. + _Example:_ `kilm setup --no-pin-libraries` + +- `--dry-run`: + Show the changes KiLM would make to KiCad's configuration files without actually modifying them. Output is printed to the terminal. + _Example:_ `kilm setup --dry-run` + +- `-v, --verbose`: + Show detailed output during the setup process, useful for debugging. + _Example:_ `kilm setup --verbose` + +- `--help`: + Show this help message and exit. + +## Behavior Details + +- **Library Selection:** By default (without `--all-libraries`), `setup` configures only the _current_ symbol/footprint library and the _current_ 3D model library registered in KiLM. Use `--all-libraries` to configure all registered libraries, or `--symbol-lib-dirs` / `--threed-lib-dirs` to configure specific named libraries. +- **Environment Variables:** KiLM attempts to read metadata (e.g., `kilm.yaml` or `.kilm_cloud_metadata`) to find the correct environment variable name (like `KICAD_COMPANY_LIB`) associated with each library path. If specific `--kicad-lib-dir` or `--kicad-3d-dir` options are given, they might influence default variables like `KICAD_USER_LIB` or `KICAD_3D_LIB`. +- **Backups:** Backups are crucial for recovery if KiCad's configuration gets corrupted. They are stored in the same directory as the KiCad configuration files and are named with a timestamp. + +## Examples + +**Setup Current Libraries (Default):** +Configure only the current symbol/footprint library and current 3D library. + +```bash +kilm setup +``` + +**Setup All Registered Libraries:** +Configure all libraries defined in `config.yaml`. + +```bash +kilm setup --all-libraries +``` + +**Setup Specific Libraries:** +Only configure the symbol/footprint libraries named `main-lib` and `project-lib`, and the 3D library named `my-3d-models`. + +```bash +kilm setup --symbol-lib-dirs "main-lib,project-lib" --threed-lib-dirs "my-3d-models" +``` + +**Setup with Specific Paths and No Pinning:** +Use specific paths for default libs (this might not be relevant if not configuring the default libs) and disable adding them to pinned libraries. + +```bash +kilm setup --kicad-lib-dir /srv/kicad/symbols --kicad-3d-dir /srv/kicad/3d --no-pin-libraries +``` + +**Preview Changes (Default - Current Libs):** +See what changes `kilm setup` would make for the current libraries without applying them. + +```bash +kilm setup --dry-run +``` + +**Preview Changes (All Libs):** +See what changes `kilm setup` would make for all libraries without applying them. + +```bash +kilm setup --all-libraries --dry-run +``` + +**Verbose Dry Run (Current Libs):** +Get detailed output about the planned changes for current libraries. + +```bash +kilm setup --dry-run --verbose +``` diff --git a/kicad_lib_manager/commands/status/docs.md b/kicad_lib_manager/commands/status/docs.md new file mode 100644 index 0000000..4552526 --- /dev/null +++ b/kicad_lib_manager/commands/status/docs.md @@ -0,0 +1,80 @@ +--- +title: status +description: Check the current KiLM and KiCad configuration status. +--- + +The `kilm status` command provides a summary of the current KiLM setup and relevant KiCad configurations. + +## Usage + +```bash +kilm status [OPTIONS] +``` + +## Options + +- `--help`: + Show the help message and exit. + +## Behavior + +The command gathers and displays information about: + +- **KiLM Configuration:** Details from `config.yaml`, such as registered library names and potentially paths. +- **KiCad Configuration Directory:** The location KiLM detected for KiCad's configuration files. +- **KiCad Environment Variables:** Lists the environment variables currently set within KiCad's `kicad_common.json` file. +- **KiCad Pinned Libraries:** Shows the symbol and footprint libraries currently marked as favorites (pinned) in `kicad_common.json`. +- **KiCad Configured Libraries:** Lists the symbol and footprint libraries currently present in KiCad's `sym-lib-table` and `fp-lib-table`. + +## Example + +```bash +kilm status +``` + +_Expected Output (example structure):_ + +```text +KILM Configuration: + Configured Libraries: + GitHub Libraries (symbols/footprints): + - main-lib: /path/to/main-lib (current) + Metadata: Yes + - project-lib: /path/to/project-lib + Metadata: Yes + Cloud Libraries (3D models): + - shared-3d: /path/to/shared-3d (current) + Metadata: Yes + - kicad-official-3d: /path/to/kicad-official-3d + Current Library: /path/to/main-lib + Max Backups: 5 + +--- KiCad Configuration --- +KiCad configuration directory: /home/user/.config/kicad/7.0/ + +Environment Variables in KiCad: + KICAD_USER_LIB = /path/to/main-lib + PROJECT_LIB = /path/to/project-lib + SHARED_3D = /path/to/shared-3d + KICAD7_3DMODEL_DIR = /path/to/kicad-official-3d + +Pinned Libraries in KiCad: + Symbol Libraries: + - Device + - main-lib + Footprint Libraries: + - Package_SO + - main-lib + +Configured Symbol Libraries: + - Device: ${KICAD7_SYMBOL_DIR}/Device.kicad_sym + - main-lib: ${KICAD_USER_LIB}/main-lib.kicad_sym + - project-lib: ${PROJECT_LIB}/project-lib.kicad_sym + +Configured Footprint Libraries: + - Capacitor_SMD: ${KICAD7_FOOTPRINT_DIR}/Capacitor_SMD.pretty + - main-lib: ${KICAD_USER_LIB}/main-lib.pretty + - project-lib: ${PROJECT_LIB}/project-lib.pretty +``` + +This command is useful for verifying that your `kilm setup` commands have applied correctly and for understanding the current state recognised by both KiLM and KiCad. diff --git a/kicad_lib_manager/commands/template/docs.mdx b/kicad_lib_manager/commands/template/docs.mdx new file mode 100644 index 0000000..0f6d314 --- /dev/null +++ b/kicad_lib_manager/commands/template/docs.mdx @@ -0,0 +1,291 @@ +--- +title: template +description: Manage KiCad project templates. +--- + +import { Tabs, TabItem } from "@astrojs/starlight/components"; + +The `kilm template` command group provides tools for creating, managing, and using KiCad project templates. Templates allow you to standardize the starting structure for new projects. + +Templates are stored within a `templates` directory inside a KiLM-managed library. + +## Subcommands + + + + +Creates a new project template from an existing KiCad project directory. + +#### Usage + +```bash +kilm template make [project_path] [OPTIONS] +``` + +- ``: **Required.** The name for the new template. +- `[project_path]`: The path to the KiCad project directory to use as the source. Defaults to the current directory. + +#### Options + +- `--description TEXT`: A description for the template. +- `--use-case TEXT`: Describe the intended use case for this template. +- `--variable TEXT`: Define a variable for the template (key=value pair). Can be used multiple times. These variables can be used within template filenames using `%{variable}` syntax and within file content using Jinja2 `{{variable}}` syntax. +- `--exclude TEXT`: Glob pattern (like `.gitignore`) to exclude specific files or directories from the template. Can be used multiple times. +- `--output-directory DIRECTORY`: + Specifies the directory where the `templates/` structure will be created. Defaults to the `templates` directory within the KiLM library containing the current working directory. + _Example:_ `kilm template make my-tmpl --output-directory /path/to/central/templates/dir` +- `--non-interactive`: + Create the template without interactive prompts for configuration or variable detection. Default: `False` (interactive). +- `--dry-run`: + Preview template creation without actually creating files. +- `--force`: + Overwrite the template directory if it already exists. Default: `False`. +- `--help`: Show help message. + +#### Behavior + +1. **Scans Project:** Analyzes the source project directory. +2. **Determines Output:** Finds the target `templates/` directory (either default or via `--output-directory`). +3. **Creates Template Structure:** Creates `templates//`. +4. **Copies Files:** Copies project files into `templates//template/`, respecting `.gitignore` and `--exclude` patterns. +5. **Filename Templating:** Renames files using Windows-compatible syntax based on detected project names and provided/detected variables (e.g., `MyProject.kicad_pro` becomes `%{project_filename}.kicad_pro.jinja2`). +6. **Creates `metadata.yaml`:** Generates a `metadata.yaml` file containing the template name, description, use case, detected/defined variables, and exclusions. +7. **(Optional) Creates Hooks:** Can set up pre/post-creation hook scripts (e.g., `hooks/post_create.py`). + +#### Examples + +**Create template 'basic-mcu' from current directory (interactive):** + +```bash +cd /path/to/my-base-project +kilm template make basic-mcu +``` + +**Create template from specific path with variables, excluding backups:** + +```bash +kilm template make advanced-fpga path/to/fpga-project \ + --description "Advanced FPGA project setup" \ + --variable "board_rev=1.2" \ + --variable "default_author=Jane Doe" \ + --exclude "*.bak" \ + --exclude "build/" +``` + + + + +Creates a new KiCad project based on an existing template. + +#### Usage + +```bash +kilm template create [output_path] [OPTIONS] +``` + +- ``: **Required.** The name for the new KiCad project. If this contains path separators (e.g., `path/to/MyNewBoard`), the last component is used as the project name, and the preceding path is used as the default `output_path`. +- `[output_path]`: The directory where the new project will be created. If omitted, defaults to a directory named `` in the current location, or the path derived from ``. + +#### Options + +- `--template TEXT`: The name of the template to use. If not specified, KiLM will list available templates and prompt for selection. +- `--set-var TEXT`: Set a value for a template variable (key=value). Can be used multiple times. Overrides default values from `metadata.yaml`. +- `--library TEXT`: Specify the KiLM library containing the template (needed if multiple libraries have templates with the same name). +- `--skip-hooks`: Do not run any post-creation hook scripts defined in the template. Default: `False` (hooks run). +- `--dry-run`: Preview project creation without creating files. +- `--help`: Show help message. + +#### Behavior + +1. **Finds Template:** Locates the specified (or selected) template within the configured KiLM libraries. +2. **Reads Metadata:** Loads `metadata.yaml` to get variables and configuration. +3. **Determines Variables:** + - Combines default variables from `metadata.yaml` with any values provided via `--set-var`. + - **Interactively prompts** for any remaining variables sequentially. + - **Crucially:** When prompting for a variable, its default value is calculated _just-in-time_ using the values of variables already entered in the current session. This allows defaults to depend on previous inputs (e.g., the default `directory_name` can be based on the entered `project_name`). +4. **Copies and Renders:** Copies files from the template's `template/` directory to the output path. +5. **Processes Templates:** + - Renders filenames using Windows-compatible `%{variable}` syntax (with fallback support for legacy `{{variable}}` syntax) + - Renders file content using Jinja2 `{{variable}}` syntax for `.jinja2` files +6. **(Optional) Runs Hooks:** Executes the `hooks/post_create.py` script if it exists and `--skip-hooks` was not used. + +#### Examples + +**Create project 'MyNewBoard' using 'basic-mcu' template (will prompt for template selection if ambiguous):** + +```bash +kilm template create MyNewBoard +``` + +**Create project in specific dir, specifying template, setting variables:** + +```bash +kilm template create SensorModule projects/sensor --template advanced-fpga \ + --set-var board_rev=2.0 \ + --set-var default_author="My Name" +``` + +**Create project using a path:** + +```bash +# Creates project 'MyBoard' inside './new_projects/' +kilm template create new_projects/MyBoard --template basic-mcu +``` + + + + +Lists available project templates found in the configured KiLM libraries. + +#### Usage + +```bash +kilm template list [OPTIONS] +``` + +#### Options + +- `--library TEXT`: List templates only from the specified KiLM library name. +- `-v, --verbose`: Show detailed information, including template description, use case, and variables. +- `--json`: Output the list in JSON format. +- `--help`: Show help message. + +#### Examples + +**List all available templates:** + +```bash +kilm template list +``` + +**List templates with details:** + +```bash +kilm template list --verbose +``` + +**List templates from 'my-main-lib' in JSON:** + +```bash +kilm template list --library my-main-lib --json +``` + + + + +## Template Structure + +Templates reside within a `templates` directory inside a library initialized with `kilm init`: + +```plaintext +your-kilm-library/ +├── kilm.yaml +├── symbols/ +├── footprints/ +└── templates/ + └── template-name/ + ├── metadata.yaml # Template config (name, desc, vars) + ├── hooks/ + │ └── post_create.py # Optional post-creation script + └── template/ # Files to be copied and rendered + ├── %{project_filename}.kicad_pro.jinja2 + ├── %{project_filename}.kicad_sch.jinja2 + ├── %{project_filename}.kicad_pcb.jinja2 + ├── README.md.jinja2 + └── assets/ + └── logo-%{company_name|lower}.png.jinja2 +``` + +- **`metadata.yaml`**: Defines template variables and descriptions. +- **`hooks/`**: Contains optional Python scripts to run after project creation. +- **`template/`**: Holds the project files. + - Files ending in `.jinja2` will have their content processed by Jinja2. + - **Filenames containing `%{...}` will be renamed based on variable values during project creation** (Windows-compatible syntax). + - **Legacy support**: Filenames with `{{ ... }}` are still supported but may cause issues on Windows. + - The special variable `%{project_filename}` is automatically derived from the project name provided to `kilm template create` and should be used for the main KiCad project files (`.kicad_pro`, `.kicad_sch`, `.kicad_pcb`). + +### Filename Templating Syntax + +KiLM supports a Windows-compatible filename templating syntax using `%{variable}` instead of `{{variable}}`: + +**Basic usage:** + +- `%{project_name}.kicad_pro` → `MyProject.kicad_pro` +- `%{author}.md` → `JohnDoe.md` + +**With transformations:** + +- `%{project_name.lower}` → converts to lowercase +- `%{project_name.upper}` → converts to uppercase +- `%{project_name.replace(' ', '-')}` → replaces spaces with dashes +- `%{project_name.replace(' ', '_').lower}` → chain transformations + +**Examples:** + +- `%{project_name.lower}.kicad_sch` → `myproject.kicad_sch` +- `%{project_name.replace(' ', '-')}.kicad_pcb` → `my-project.kicad_pcb` +- `%{author.upper.replace(' ', '_')}.md` → `JOHN_DOE.md` + +:::note[Windows Compatibility] +The new `%{variable}` syntax is recommended for cross-platform compatibility. The old `{{variable}}` syntax still works but may cause filename issues on Windows systems due to character restrictions. +::: + +### Example: `metadata.yaml` + +This file defines the template's properties and the variables users will be prompted for. + +```yaml +description: "Standard 4-layer PCB projects" +name: default-4layer +use_case: "Standard 4-layer PCB projects" +variables: + project_name: + description: Main KiCad project name (with spaces, e.g., Power Supply) + subproject_name: + description: Subproject/Module name (with spaces, e.g., Controller Board) + directory_name_prefix: + default: Hardware + description: Top-level directory name (e.g., Hardware or Hardware_ProjectX) + directory_name: + default: "%{directory_name_prefix}_%{project_name.replace(' ', '')}_%{subproject_name.replace(' ', '')}" + description: Full directory name (e.g., Hardware_PowerSupply_ControllerBoard) + author: + default: YourCompanyName + description: Author/Company name (used in documentation and KiCad files) + author_position: + description: Author position (e.g., Hardware Engineer) + version: + default: V0.1 + description: Initial version number (e.g., V0.1) +version: 1.0.0 # Template version, distinct from project version variable +``` + +### Example: Using Variables in a Template File (`README.md.jinja2`) + +Template files within the `template/` directory can use Jinja2 syntax (`{{ variable_name }}`) to insert values provided by the user during `kilm template create`. + +```markdown +# {{ project_name }} {{ subproject_name }} + +## Overview + +This repository contains the PCB design files for the {{ project_name }} {{ subproject_name }} project. + +Created by: {{ author }} ({{ author_position }}) +Version: {{ version }} + +## Libraries and Footprints (KiLM) + +This project template relies on **KiLM** for managing common, shared KiCad libraries... + +[... rest of README content ...] +``` + +:::tip[Syntax Differences] + +- **File content** (inside `.jinja2` files): Use Jinja2 syntax `{{ variable_name }}` +- **Filenames**: Use Windows-compatible syntax `%{variable_name}` for new templates +- **Legacy filenames**: Old `{{ variable_name }}` syntax in filenames still works but may cause issues on Windows + ::: + +When a user runs `kilm template create MyProject Controller --template default-4layer` and provides values for `author`, `author_position`, and `version`, the resulting `README.md` in their new project directory will have the `{{ ... }}` placeholders replaced with the actual values. diff --git a/kicad_lib_manager/commands/unpin/docs.md b/kicad_lib_manager/commands/unpin/docs.md new file mode 100644 index 0000000..53cc9ae --- /dev/null +++ b/kicad_lib_manager/commands/unpin/docs.md @@ -0,0 +1,82 @@ +--- +title: unpin +description: Remove libraries from KiCad's pinned (favorite) list. +--- + +The `kilm unpin` command removes specified symbol and/or footprint libraries from KiCad's "Pinned Libraries" list. + +It operates by modifying the `pinned_symbol_libs` and `pinned_fp_libs` arrays within KiCad's `kicad_common.json` configuration file. + +**Note:** Changes require restarting KiCad. + +## Usage + +```bash +kilm unpin [OPTIONS] +``` + +## Options + +- `-s, --symbols TEXT`: + Specify the name of a symbol library currently in the pinned list to remove. Use this option multiple times to unpin several libraries. + _Example:_ `kilm unpin -s Device -s MyCustomSymbols` + +- `-f, --footprints TEXT`: + Specify the name of a footprint library currently in the pinned list to remove. Use this option multiple times to unpin several libraries. + _Example:_ `kilm unpin -f Package_SO -f MyCustomFootprints` + +- `--all`: + Unpin _all_ currently pinned symbol and footprint libraries. Cannot be used if `-s` or `-f` are specified. + _Example:_ `kilm unpin --all` + +- `--dry-run`: + Show which libraries would be removed from the pinned list without actually modifying `kicad_common.json`. + _Example:_ `kilm unpin --all --dry-run` + +- `--max-backups INTEGER`: + Maximum number of timestamped backups KiLM should keep for `kicad_common.json`. Default: `5`. + _Example:_ `kilm unpin --max-backups 3` + +- `-v, --verbose`: + Show detailed output during the unpinning process. + _Example:_ `kilm unpin -s MyLib --verbose` + +- `--help`: + Show this help message and exit. + +## Behavior + +1. Locates the KiCad configuration directory and `kicad_common.json`. +2. Creates a backup of `kicad_common.json` (unless `--dry-run`). +3. Reads the current pinned lists (`pinned_symbol_libs`, `pinned_fp_libs`) from `kicad_common.json`. +4. Determines the target libraries: + - If `--all`, targets all libraries found in the lists. + - Otherwise, targets libraries specified via `-s` and `-f`. +5. Removes the target library names from the respective lists. +6. Writes the updated lists back to `kicad_common.json` (unless `--dry-run`). + +## Examples + +**Unpin specific libraries:** + +```bash +kilm unpin -s ObsoleteSymLib -f OldFootprintLib +``` + +**Unpin all libraries:** + +```bash +kilm unpin --all +``` + +**Preview unpinning specific libraries:** + +```bash +kilm unpin -s Device -f Package_SO --dry-run +``` + +**Unpin all libraries with verbose output:** + +```bash +kilm unpin --all -v +``` diff --git a/kicad_lib_manager/commands/update/docs.md b/kicad_lib_manager/commands/update/docs.md new file mode 100644 index 0000000..25a1c23 --- /dev/null +++ b/kicad_lib_manager/commands/update/docs.md @@ -0,0 +1,68 @@ +--- +title: update +description: Update configured Git-based libraries using `git pull`. +--- + +The `kilm update` command attempts to update all configured symbol, footprint, and template libraries (type `github`) that are identified as Git repositories by running `git pull` within their directories. + +This command helps keep your local copies of shared libraries synchronized with their remote Git repositories. + +## Usage + +```bash +kilm update [OPTIONS] +``` + +## Options + +- `--dry-run`: + Show which libraries are detected as Git repositories and would be updated, but do not actually run `git pull`. + _Example:_ `kilm update --dry-run` + +- `--verbose`: + Show detailed output during the update process, including the full output from the `git pull` commands. + _Example:_ `kilm update --verbose` + +- `--auto-setup`: + If the `git pull` operation results in changes that likely require updating KiCad's configuration (e.g., new symbol or footprint libraries detected), automatically run `kilm setup` after the updates are complete. Default: `False`. + _Example:_ `kilm update --auto-setup` + +- `--help`: + Show the help message and exit. + +## Behavior + +1. **Reads KiLM Config:** Loads library information from `config.yaml`. +2. **Identifies `github` Libraries:** Filters for libraries with type `github`. +3. **Checks for `.git`:** For each library path, checks if it exists and contains a `.git` directory. +4. **Runs `git pull`:** If it's a valid Git repository, navigates into the directory and executes `git pull` (unless `--dry-run`). +5. **Checks for Changes:** After a successful pull, analyzes the output and file system to detect if new symbol libraries (`.kicad_sym`), footprint libraries (`.pretty`), or templates (`templates/*/metadata.yaml`) were added. +6. **Reports & Optional Setup:** Summarizes the update results. If changes requiring configuration updates were detected, it recommends running `kilm setup` or runs it automatically if `--auto-setup` was specified. + +## Examples + +**Update all Git-based libraries:** + +```bash +kilm update +``` + +**Preview which libraries would be updated:** + +```bash +kilm update --dry-run +``` + +**Update libraries with detailed output:** + +```bash +kilm update --verbose +``` + +**Update libraries and automatically run setup if needed:** + +```bash +kilm update --auto-setup +``` + +**Note:** If `git pull` fails (e.g., due to local changes or merge conflicts), you will need to resolve the issues manually within the affected repository directory using standard Git commands before `kilm update` can succeed for that library. From ee7b660fb6a4ea7581f4a7a847cd5b90366260f3 Mon Sep 17 00:00:00 2001 From: barisgit Date: Thu, 4 Sep 2025 23:04:06 +0200 Subject: [PATCH 3/6] [docs] Remove docs directly from docs folder (only cli reference) and create sync script --- docs/package.json | 15 +- docs/pnpm-lock.yaml | 4448 ++++++----------- docs/scripts/sync-embedded-docs.ts | 257 + .../src/content/docs/reference/cli/.gitignore | 3 + docs/src/content/docs/reference/cli/add-3d.md | 80 - .../content/docs/reference/cli/add-hook.md | 113 - .../src/content/docs/reference/cli/config.mdx | 166 - docs/src/content/docs/reference/cli/init.md | 87 - docs/src/content/docs/reference/cli/list.md | 64 - docs/src/content/docs/reference/cli/pin.md | 100 - docs/src/content/docs/reference/cli/setup.md | 124 - docs/src/content/docs/reference/cli/status.md | 80 - .../content/docs/reference/cli/template.mdx | 291 -- docs/src/content/docs/reference/cli/unpin.md | 82 - docs/src/content/docs/reference/cli/update.md | 68 - 15 files changed, 1806 insertions(+), 4172 deletions(-) create mode 100644 docs/scripts/sync-embedded-docs.ts create mode 100644 docs/src/content/docs/reference/cli/.gitignore delete mode 100644 docs/src/content/docs/reference/cli/add-3d.md delete mode 100644 docs/src/content/docs/reference/cli/add-hook.md delete mode 100644 docs/src/content/docs/reference/cli/config.mdx delete mode 100644 docs/src/content/docs/reference/cli/init.md delete mode 100644 docs/src/content/docs/reference/cli/list.md delete mode 100644 docs/src/content/docs/reference/cli/pin.md delete mode 100644 docs/src/content/docs/reference/cli/setup.md delete mode 100644 docs/src/content/docs/reference/cli/status.md delete mode 100644 docs/src/content/docs/reference/cli/template.mdx delete mode 100644 docs/src/content/docs/reference/cli/unpin.md delete mode 100644 docs/src/content/docs/reference/cli/update.md diff --git a/docs/package.json b/docs/package.json index dc8c720..2c6e1e2 100644 --- a/docs/package.json +++ b/docs/package.json @@ -3,9 +3,12 @@ "type": "module", "version": "0.0.1", "scripts": { - "dev": "astro dev", - "start": "astro dev", - "build": "astro build", + "sync-docs": "tsx scripts/sync-embedded-docs.ts sync", + "sync-docs:watch": "tsx scripts/sync-embedded-docs.ts watch", + "sync-docs:clean": "tsx scripts/sync-embedded-docs.ts clean", + "dev": "concurrently \"pnpm sync-docs:watch\" \"astro dev\" --names \"sync,astro\" --prefix-colors \"blue,green\"", + "start": "pnpm dev", + "build": "pnpm sync-docs && astro build", "preview": "astro preview", "astro": "astro" }, @@ -18,6 +21,10 @@ "tailwindcss": "^4.1.4" }, "devDependencies": { - "sharp": "^0.32.6" + "sharp": "^0.32.6", + "tsx": "^4.19.3", + "chokidar": "^4.0.2", + "@types/node": "^22.10.3", + "concurrently": "^9.1.0" } } diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index c6362ba..b64ee3a 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -1,24 +1,25 @@ -lockfileVersion: "9.0" +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false importers: + .: dependencies: - "@astrojs/starlight": + '@astrojs/starlight': specifier: ^0.33.2 - version: 0.33.2(astro@5.7.0(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(typescript@5.8.3)) - "@astrojs/starlight-tailwind": + version: 0.33.2(astro@5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3)) + '@astrojs/starlight-tailwind': specifier: ^4.0.0 - version: 4.0.0(@astrojs/starlight@0.33.2(astro@5.7.0(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(typescript@5.8.3)))(tailwindcss@4.1.4) - "@tailwindcss/vite": + version: 4.0.0(@astrojs/starlight@0.33.2(astro@5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3)))(tailwindcss@4.1.4) + '@tailwindcss/vite': specifier: ^4.1.4 - version: 4.1.4(vite@6.2.6(jiti@2.4.2)(lightningcss@1.29.2)) + version: 4.1.4(vite@6.2.6(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.20.5)) astro: specifier: ^5.6.1 - version: 5.7.0(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(typescript@5.8.3) + version: 5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -26,1207 +27,761 @@ importers: specifier: ^4.1.4 version: 4.1.4 devDependencies: + '@types/node': + specifier: ^22.10.3 + version: 22.18.1 + chokidar: + specifier: ^4.0.2 + version: 4.0.3 + concurrently: + specifier: ^9.1.0 + version: 9.2.1 sharp: specifier: ^0.32.6 version: 0.32.6 + tsx: + specifier: ^4.19.3 + version: 4.20.5 packages: - "@astrojs/compiler@2.11.0": - resolution: - { - integrity: sha512-zZOO7i+JhojO8qmlyR/URui6LyfHJY6m+L9nwyX5GiKD78YoRaZ5tzz6X0fkl+5bD3uwlDHayf6Oe8Fu36RKNg==, - } - - "@astrojs/internal-helpers@0.6.1": - resolution: - { - integrity: sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A==, - } - - "@astrojs/markdown-remark@6.3.1": - resolution: - { - integrity: sha512-c5F5gGrkczUaTVgmMW9g1YMJGzOtRvjjhw6IfGuxarM6ct09MpwysP10US729dy07gg8y+ofVifezvP3BNsWZg==, - } - - "@astrojs/mdx@4.2.4": - resolution: - { - integrity: sha512-c832AWpiMCcuPY8j+yr5T+hOf8n5RlKLFHlNTt15xxkOk3zjFJP81TIYKrMrbhD5rMzJ09Ixi+xM0m68w2Q0DQ==, - } - engines: { node: ^18.17.1 || ^20.3.0 || >=22.0.0 } + + '@astrojs/compiler@2.11.0': + resolution: {integrity: sha512-zZOO7i+JhojO8qmlyR/URui6LyfHJY6m+L9nwyX5GiKD78YoRaZ5tzz6X0fkl+5bD3uwlDHayf6Oe8Fu36RKNg==} + + '@astrojs/internal-helpers@0.6.1': + resolution: {integrity: sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A==} + + '@astrojs/markdown-remark@6.3.1': + resolution: {integrity: sha512-c5F5gGrkczUaTVgmMW9g1YMJGzOtRvjjhw6IfGuxarM6ct09MpwysP10US729dy07gg8y+ofVifezvP3BNsWZg==} + + '@astrojs/mdx@4.2.4': + resolution: {integrity: sha512-c832AWpiMCcuPY8j+yr5T+hOf8n5RlKLFHlNTt15xxkOk3zjFJP81TIYKrMrbhD5rMzJ09Ixi+xM0m68w2Q0DQ==} + engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} peerDependencies: astro: ^5.0.0 - "@astrojs/prism@3.2.0": - resolution: - { - integrity: sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw==, - } - engines: { node: ^18.17.1 || ^20.3.0 || >=22.0.0 } - - "@astrojs/sitemap@3.3.0": - resolution: - { - integrity: sha512-nYE4lKQtk+Kbrw/w0G0TTgT724co0jUsU4tPlHY9au5HmTBKbwiCLwO/15b1/y13aZ4Kr9ZbMeMHlXuwn0ty4Q==, - } - - "@astrojs/starlight-tailwind@4.0.0": - resolution: - { - integrity: sha512-x1hPSg9FzayOg25fTlcbMtp3YAdA2KZC2G2ee2yk+JLD2j1v1ZpWXeg5QgRjeUU5V9d9Tx3HWuIrWvSC5clB2A==, - } + '@astrojs/prism@3.2.0': + resolution: {integrity: sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw==} + engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} + + '@astrojs/sitemap@3.3.0': + resolution: {integrity: sha512-nYE4lKQtk+Kbrw/w0G0TTgT724co0jUsU4tPlHY9au5HmTBKbwiCLwO/15b1/y13aZ4Kr9ZbMeMHlXuwn0ty4Q==} + + '@astrojs/starlight-tailwind@4.0.0': + resolution: {integrity: sha512-x1hPSg9FzayOg25fTlcbMtp3YAdA2KZC2G2ee2yk+JLD2j1v1ZpWXeg5QgRjeUU5V9d9Tx3HWuIrWvSC5clB2A==} peerDependencies: - "@astrojs/starlight": ">=0.34.0" + '@astrojs/starlight': '>=0.34.0' tailwindcss: ^4.0.0 - "@astrojs/starlight@0.33.2": - resolution: - { - integrity: sha512-UpvPBMtZrP/x17uQmdOxm8lUTtmEJ0csTprQT8fd8HSHDn/pSK69fOsSjl6tk83ROMOARC5/DivExSxxJADNSA==, - } + '@astrojs/starlight@0.33.2': + resolution: {integrity: sha512-UpvPBMtZrP/x17uQmdOxm8lUTtmEJ0csTprQT8fd8HSHDn/pSK69fOsSjl6tk83ROMOARC5/DivExSxxJADNSA==} peerDependencies: astro: ^5.1.5 - "@astrojs/telemetry@3.2.0": - resolution: - { - integrity: sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ==, - } - engines: { node: ^18.17.1 || ^20.3.0 || >=22.0.0 } - - "@babel/helper-string-parser@7.25.9": - resolution: - { - integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-validator-identifier@7.25.9": - resolution: - { - integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==, - } - engines: { node: ">=6.9.0" } - - "@babel/parser@7.27.0": - resolution: - { - integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==, - } - engines: { node: ">=6.0.0" } + '@astrojs/telemetry@3.2.0': + resolution: {integrity: sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ==} + engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.27.0': + resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} + engines: {node: '>=6.0.0'} hasBin: true - "@babel/runtime@7.27.0": - resolution: - { - integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==, - } - engines: { node: ">=6.9.0" } - - "@babel/types@7.27.0": - resolution: - { - integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==, - } - engines: { node: ">=6.9.0" } - - "@capsizecss/metrics@3.5.0": - resolution: - { - integrity: sha512-Ju2I/Qn3c1OaU8FgeW4Tc22D4C9NwyVfKzNmzst59bvxBjPoLYNZMqFYn+HvCtn4MpXwiaDtCE8fNuQLpdi9yA==, - } - - "@capsizecss/unpack@2.4.0": - resolution: - { - integrity: sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==, - } - - "@ctrl/tinycolor@4.1.0": - resolution: - { - integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==, - } - engines: { node: ">=14" } - - "@emnapi/runtime@1.4.3": - resolution: - { - integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==, - } - - "@esbuild/aix-ppc64@0.25.2": - resolution: - { - integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==, - } - engines: { node: ">=18" } + '@babel/runtime@7.27.0': + resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.27.0': + resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} + engines: {node: '>=6.9.0'} + + '@capsizecss/metrics@3.5.0': + resolution: {integrity: sha512-Ju2I/Qn3c1OaU8FgeW4Tc22D4C9NwyVfKzNmzst59bvxBjPoLYNZMqFYn+HvCtn4MpXwiaDtCE8fNuQLpdi9yA==} + + '@capsizecss/unpack@2.4.0': + resolution: {integrity: sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==} + + '@ctrl/tinycolor@4.1.0': + resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==} + engines: {node: '>=14'} + + '@emnapi/runtime@1.4.3': + resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} + + '@esbuild/aix-ppc64@0.25.2': + resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} + engines: {node: '>=18'} cpu: [ppc64] os: [aix] - "@esbuild/android-arm64@0.25.2": - resolution: - { - integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==, - } - engines: { node: ">=18" } + '@esbuild/android-arm64@0.25.2': + resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==} + engines: {node: '>=18'} cpu: [arm64] os: [android] - "@esbuild/android-arm@0.25.2": - resolution: - { - integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==, - } - engines: { node: ">=18" } + '@esbuild/android-arm@0.25.2': + resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==} + engines: {node: '>=18'} cpu: [arm] os: [android] - "@esbuild/android-x64@0.25.2": - resolution: - { - integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==, - } - engines: { node: ">=18" } + '@esbuild/android-x64@0.25.2': + resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==} + engines: {node: '>=18'} cpu: [x64] os: [android] - "@esbuild/darwin-arm64@0.25.2": - resolution: - { - integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==, - } - engines: { node: ">=18" } + '@esbuild/darwin-arm64@0.25.2': + resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==} + engines: {node: '>=18'} cpu: [arm64] os: [darwin] - "@esbuild/darwin-x64@0.25.2": - resolution: - { - integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==, - } - engines: { node: ">=18" } + '@esbuild/darwin-x64@0.25.2': + resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==} + engines: {node: '>=18'} cpu: [x64] os: [darwin] - "@esbuild/freebsd-arm64@0.25.2": - resolution: - { - integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==, - } - engines: { node: ">=18" } + '@esbuild/freebsd-arm64@0.25.2': + resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==} + engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - "@esbuild/freebsd-x64@0.25.2": - resolution: - { - integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==, - } - engines: { node: ">=18" } + '@esbuild/freebsd-x64@0.25.2': + resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==} + engines: {node: '>=18'} cpu: [x64] os: [freebsd] - "@esbuild/linux-arm64@0.25.2": - resolution: - { - integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==, - } - engines: { node: ">=18" } + '@esbuild/linux-arm64@0.25.2': + resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==} + engines: {node: '>=18'} cpu: [arm64] os: [linux] - "@esbuild/linux-arm@0.25.2": - resolution: - { - integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==, - } - engines: { node: ">=18" } + '@esbuild/linux-arm@0.25.2': + resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==} + engines: {node: '>=18'} cpu: [arm] os: [linux] - "@esbuild/linux-ia32@0.25.2": - resolution: - { - integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==, - } - engines: { node: ">=18" } + '@esbuild/linux-ia32@0.25.2': + resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==} + engines: {node: '>=18'} cpu: [ia32] os: [linux] - "@esbuild/linux-loong64@0.25.2": - resolution: - { - integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==, - } - engines: { node: ">=18" } + '@esbuild/linux-loong64@0.25.2': + resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==} + engines: {node: '>=18'} cpu: [loong64] os: [linux] - "@esbuild/linux-mips64el@0.25.2": - resolution: - { - integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==, - } - engines: { node: ">=18" } + '@esbuild/linux-mips64el@0.25.2': + resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==} + engines: {node: '>=18'} cpu: [mips64el] os: [linux] - "@esbuild/linux-ppc64@0.25.2": - resolution: - { - integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==, - } - engines: { node: ">=18" } + '@esbuild/linux-ppc64@0.25.2': + resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==} + engines: {node: '>=18'} cpu: [ppc64] os: [linux] - "@esbuild/linux-riscv64@0.25.2": - resolution: - { - integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==, - } - engines: { node: ">=18" } + '@esbuild/linux-riscv64@0.25.2': + resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==} + engines: {node: '>=18'} cpu: [riscv64] os: [linux] - "@esbuild/linux-s390x@0.25.2": - resolution: - { - integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==, - } - engines: { node: ">=18" } + '@esbuild/linux-s390x@0.25.2': + resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==} + engines: {node: '>=18'} cpu: [s390x] os: [linux] - "@esbuild/linux-x64@0.25.2": - resolution: - { - integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==, - } - engines: { node: ">=18" } + '@esbuild/linux-x64@0.25.2': + resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==} + engines: {node: '>=18'} cpu: [x64] os: [linux] - "@esbuild/netbsd-arm64@0.25.2": - resolution: - { - integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==, - } - engines: { node: ">=18" } + '@esbuild/netbsd-arm64@0.25.2': + resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==} + engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - "@esbuild/netbsd-x64@0.25.2": - resolution: - { - integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==, - } - engines: { node: ">=18" } + '@esbuild/netbsd-x64@0.25.2': + resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==} + engines: {node: '>=18'} cpu: [x64] os: [netbsd] - "@esbuild/openbsd-arm64@0.25.2": - resolution: - { - integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==, - } - engines: { node: ">=18" } + '@esbuild/openbsd-arm64@0.25.2': + resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==} + engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - "@esbuild/openbsd-x64@0.25.2": - resolution: - { - integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==, - } - engines: { node: ">=18" } + '@esbuild/openbsd-x64@0.25.2': + resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==} + engines: {node: '>=18'} cpu: [x64] os: [openbsd] - "@esbuild/sunos-x64@0.25.2": - resolution: - { - integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==, - } - engines: { node: ">=18" } + '@esbuild/sunos-x64@0.25.2': + resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==} + engines: {node: '>=18'} cpu: [x64] os: [sunos] - "@esbuild/win32-arm64@0.25.2": - resolution: - { - integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==, - } - engines: { node: ">=18" } + '@esbuild/win32-arm64@0.25.2': + resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==} + engines: {node: '>=18'} cpu: [arm64] os: [win32] - "@esbuild/win32-ia32@0.25.2": - resolution: - { - integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==, - } - engines: { node: ">=18" } + '@esbuild/win32-ia32@0.25.2': + resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==} + engines: {node: '>=18'} cpu: [ia32] os: [win32] - "@esbuild/win32-x64@0.25.2": - resolution: - { - integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==, - } - engines: { node: ">=18" } + '@esbuild/win32-x64@0.25.2': + resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==} + engines: {node: '>=18'} cpu: [x64] os: [win32] - "@expressive-code/core@0.41.1": - resolution: - { - integrity: sha512-mG2IrN4t/NGPmEeeswmttsW7W7c96sz3ASjo1psQnOqU5QWAF61HpnBu3lPxHI8iQJyZI8wfAroo9FFpwlkvAQ==, - } - - "@expressive-code/plugin-frames@0.41.1": - resolution: - { - integrity: sha512-cwUUWMr2jNpKpgiepEzM9BGnU60WepE5/Ar3H2aOn8IzcDa4Eeuk0JqQB1Vvpo0bu+VRIxaTA2njoAIeQuMN5w==, - } - - "@expressive-code/plugin-shiki@0.41.1": - resolution: - { - integrity: sha512-xJHk89ECxQpvf7ftTmtEfAKoApYYr5Um7d6fiE6GuY7+WuXN02+ZHH8r5pSJpxlQMfAmavqbNPd3dEJ9v/zHnQ==, - } - - "@expressive-code/plugin-text-markers@0.41.1": - resolution: - { - integrity: sha512-PFvk91yY+H8KVEcyZSrktLoWzBgLVpowvMxOJooFn74roGxnU4TEBJpWcRnJFtMEwTLzWNnk10MSOApOccvSKg==, - } - - "@img/sharp-darwin-arm64@0.33.5": - resolution: - { - integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@expressive-code/core@0.41.1': + resolution: {integrity: sha512-mG2IrN4t/NGPmEeeswmttsW7W7c96sz3ASjo1psQnOqU5QWAF61HpnBu3lPxHI8iQJyZI8wfAroo9FFpwlkvAQ==} + + '@expressive-code/plugin-frames@0.41.1': + resolution: {integrity: sha512-cwUUWMr2jNpKpgiepEzM9BGnU60WepE5/Ar3H2aOn8IzcDa4Eeuk0JqQB1Vvpo0bu+VRIxaTA2njoAIeQuMN5w==} + + '@expressive-code/plugin-shiki@0.41.1': + resolution: {integrity: sha512-xJHk89ECxQpvf7ftTmtEfAKoApYYr5Um7d6fiE6GuY7+WuXN02+ZHH8r5pSJpxlQMfAmavqbNPd3dEJ9v/zHnQ==} + + '@expressive-code/plugin-text-markers@0.41.1': + resolution: {integrity: sha512-PFvk91yY+H8KVEcyZSrktLoWzBgLVpowvMxOJooFn74roGxnU4TEBJpWcRnJFtMEwTLzWNnk10MSOApOccvSKg==} + + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] - "@img/sharp-darwin-x64@0.33.5": - resolution: - { - integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] - "@img/sharp-libvips-darwin-arm64@1.0.4": - resolution: - { - integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==, - } + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} cpu: [arm64] os: [darwin] - "@img/sharp-libvips-darwin-x64@1.0.4": - resolution: - { - integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==, - } + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} cpu: [x64] os: [darwin] - "@img/sharp-libvips-linux-arm64@1.0.4": - resolution: - { - integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==, - } + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} cpu: [arm64] os: [linux] - "@img/sharp-libvips-linux-arm@1.0.5": - resolution: - { - integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==, - } + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} cpu: [arm] os: [linux] - "@img/sharp-libvips-linux-s390x@1.0.4": - resolution: - { - integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==, - } + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} cpu: [s390x] os: [linux] - "@img/sharp-libvips-linux-x64@1.0.4": - resolution: - { - integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==, - } + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} cpu: [x64] os: [linux] - "@img/sharp-libvips-linuxmusl-arm64@1.0.4": - resolution: - { - integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==, - } + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} cpu: [arm64] os: [linux] - "@img/sharp-libvips-linuxmusl-x64@1.0.4": - resolution: - { - integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==, - } + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} cpu: [x64] os: [linux] - "@img/sharp-linux-arm64@0.33.5": - resolution: - { - integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - "@img/sharp-linux-arm@0.33.5": - resolution: - { - integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - "@img/sharp-linux-s390x@0.33.5": - resolution: - { - integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - "@img/sharp-linux-x64@0.33.5": - resolution: - { - integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - "@img/sharp-linuxmusl-arm64@0.33.5": - resolution: - { - integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - "@img/sharp-linuxmusl-x64@0.33.5": - resolution: - { - integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - "@img/sharp-wasm32@0.33.5": - resolution: - { - integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - "@img/sharp-win32-ia32@0.33.5": - resolution: - { - integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - "@img/sharp-win32-x64@0.33.5": - resolution: - { - integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] - "@jridgewell/sourcemap-codec@1.5.0": - resolution: - { - integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==, - } - - "@mdx-js/mdx@3.1.0": - resolution: - { - integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==, - } - - "@oslojs/encoding@1.1.0": - resolution: - { - integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==, - } - - "@pagefind/darwin-arm64@1.3.0": - resolution: - { - integrity: sha512-365BEGl6ChOsauRjyVpBjXybflXAOvoMROw3TucAROHIcdBvXk9/2AmEvGFU0r75+vdQI4LJdJdpH4Y6Yqaj4A==, - } + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@mdx-js/mdx@3.1.0': + resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==} + + '@oslojs/encoding@1.1.0': + resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} + + '@pagefind/darwin-arm64@1.3.0': + resolution: {integrity: sha512-365BEGl6ChOsauRjyVpBjXybflXAOvoMROw3TucAROHIcdBvXk9/2AmEvGFU0r75+vdQI4LJdJdpH4Y6Yqaj4A==} cpu: [arm64] os: [darwin] - "@pagefind/darwin-x64@1.3.0": - resolution: - { - integrity: sha512-zlGHA23uuXmS8z3XxEGmbHpWDxXfPZ47QS06tGUq0HDcZjXjXHeLG+cboOy828QIV5FXsm9MjfkP5e4ZNbOkow==, - } + '@pagefind/darwin-x64@1.3.0': + resolution: {integrity: sha512-zlGHA23uuXmS8z3XxEGmbHpWDxXfPZ47QS06tGUq0HDcZjXjXHeLG+cboOy828QIV5FXsm9MjfkP5e4ZNbOkow==} cpu: [x64] os: [darwin] - "@pagefind/default-ui@1.3.0": - resolution: - { - integrity: sha512-CGKT9ccd3+oRK6STXGgfH+m0DbOKayX6QGlq38TfE1ZfUcPc5+ulTuzDbZUnMo+bubsEOIypm4Pl2iEyzZ1cNg==, - } - - "@pagefind/linux-arm64@1.3.0": - resolution: - { - integrity: sha512-8lsxNAiBRUk72JvetSBXs4WRpYrQrVJXjlRRnOL6UCdBN9Nlsz0t7hWstRk36+JqHpGWOKYiuHLzGYqYAqoOnQ==, - } + '@pagefind/default-ui@1.3.0': + resolution: {integrity: sha512-CGKT9ccd3+oRK6STXGgfH+m0DbOKayX6QGlq38TfE1ZfUcPc5+ulTuzDbZUnMo+bubsEOIypm4Pl2iEyzZ1cNg==} + + '@pagefind/linux-arm64@1.3.0': + resolution: {integrity: sha512-8lsxNAiBRUk72JvetSBXs4WRpYrQrVJXjlRRnOL6UCdBN9Nlsz0t7hWstRk36+JqHpGWOKYiuHLzGYqYAqoOnQ==} cpu: [arm64] os: [linux] - "@pagefind/linux-x64@1.3.0": - resolution: - { - integrity: sha512-hAvqdPJv7A20Ucb6FQGE6jhjqy+vZ6pf+s2tFMNtMBG+fzcdc91uTw7aP/1Vo5plD0dAOHwdxfkyw0ugal4kcQ==, - } + '@pagefind/linux-x64@1.3.0': + resolution: {integrity: sha512-hAvqdPJv7A20Ucb6FQGE6jhjqy+vZ6pf+s2tFMNtMBG+fzcdc91uTw7aP/1Vo5plD0dAOHwdxfkyw0ugal4kcQ==} cpu: [x64] os: [linux] - "@pagefind/windows-x64@1.3.0": - resolution: - { - integrity: sha512-BR1bIRWOMqkf8IoU576YDhij1Wd/Zf2kX/kCI0b2qzCKC8wcc2GQJaaRMCpzvCCrmliO4vtJ6RITp/AnoYUUmQ==, - } + '@pagefind/windows-x64@1.3.0': + resolution: {integrity: sha512-BR1bIRWOMqkf8IoU576YDhij1Wd/Zf2kX/kCI0b2qzCKC8wcc2GQJaaRMCpzvCCrmliO4vtJ6RITp/AnoYUUmQ==} cpu: [x64] os: [win32] - "@rollup/pluginutils@5.1.4": - resolution: - { - integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==, - } - engines: { node: ">=14.0.0" } + '@rollup/pluginutils@5.1.4': + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} + engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true - "@rollup/rollup-android-arm-eabi@4.40.0": - resolution: - { - integrity: sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==, - } + '@rollup/rollup-android-arm-eabi@4.40.0': + resolution: {integrity: sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==} cpu: [arm] os: [android] - "@rollup/rollup-android-arm64@4.40.0": - resolution: - { - integrity: sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==, - } + '@rollup/rollup-android-arm64@4.40.0': + resolution: {integrity: sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==} cpu: [arm64] os: [android] - "@rollup/rollup-darwin-arm64@4.40.0": - resolution: - { - integrity: sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==, - } + '@rollup/rollup-darwin-arm64@4.40.0': + resolution: {integrity: sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==} cpu: [arm64] os: [darwin] - "@rollup/rollup-darwin-x64@4.40.0": - resolution: - { - integrity: sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==, - } + '@rollup/rollup-darwin-x64@4.40.0': + resolution: {integrity: sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==} cpu: [x64] os: [darwin] - "@rollup/rollup-freebsd-arm64@4.40.0": - resolution: - { - integrity: sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==, - } + '@rollup/rollup-freebsd-arm64@4.40.0': + resolution: {integrity: sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==} cpu: [arm64] os: [freebsd] - "@rollup/rollup-freebsd-x64@4.40.0": - resolution: - { - integrity: sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==, - } + '@rollup/rollup-freebsd-x64@4.40.0': + resolution: {integrity: sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==} cpu: [x64] os: [freebsd] - "@rollup/rollup-linux-arm-gnueabihf@4.40.0": - resolution: - { - integrity: sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==, - } + '@rollup/rollup-linux-arm-gnueabihf@4.40.0': + resolution: {integrity: sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==} cpu: [arm] os: [linux] - "@rollup/rollup-linux-arm-musleabihf@4.40.0": - resolution: - { - integrity: sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==, - } + '@rollup/rollup-linux-arm-musleabihf@4.40.0': + resolution: {integrity: sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==} cpu: [arm] os: [linux] - "@rollup/rollup-linux-arm64-gnu@4.40.0": - resolution: - { - integrity: sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==, - } + '@rollup/rollup-linux-arm64-gnu@4.40.0': + resolution: {integrity: sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==} cpu: [arm64] os: [linux] - "@rollup/rollup-linux-arm64-musl@4.40.0": - resolution: - { - integrity: sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==, - } + '@rollup/rollup-linux-arm64-musl@4.40.0': + resolution: {integrity: sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==} cpu: [arm64] os: [linux] - "@rollup/rollup-linux-loongarch64-gnu@4.40.0": - resolution: - { - integrity: sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==, - } + '@rollup/rollup-linux-loongarch64-gnu@4.40.0': + resolution: {integrity: sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==} cpu: [loong64] os: [linux] - "@rollup/rollup-linux-powerpc64le-gnu@4.40.0": - resolution: - { - integrity: sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==, - } + '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': + resolution: {integrity: sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==} cpu: [ppc64] os: [linux] - "@rollup/rollup-linux-riscv64-gnu@4.40.0": - resolution: - { - integrity: sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==, - } + '@rollup/rollup-linux-riscv64-gnu@4.40.0': + resolution: {integrity: sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==} cpu: [riscv64] os: [linux] - "@rollup/rollup-linux-riscv64-musl@4.40.0": - resolution: - { - integrity: sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==, - } + '@rollup/rollup-linux-riscv64-musl@4.40.0': + resolution: {integrity: sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==} cpu: [riscv64] os: [linux] - "@rollup/rollup-linux-s390x-gnu@4.40.0": - resolution: - { - integrity: sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==, - } + '@rollup/rollup-linux-s390x-gnu@4.40.0': + resolution: {integrity: sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==} cpu: [s390x] os: [linux] - "@rollup/rollup-linux-x64-gnu@4.40.0": - resolution: - { - integrity: sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==, - } + '@rollup/rollup-linux-x64-gnu@4.40.0': + resolution: {integrity: sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==} cpu: [x64] os: [linux] - "@rollup/rollup-linux-x64-musl@4.40.0": - resolution: - { - integrity: sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==, - } + '@rollup/rollup-linux-x64-musl@4.40.0': + resolution: {integrity: sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==} cpu: [x64] os: [linux] - "@rollup/rollup-win32-arm64-msvc@4.40.0": - resolution: - { - integrity: sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==, - } + '@rollup/rollup-win32-arm64-msvc@4.40.0': + resolution: {integrity: sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==} cpu: [arm64] os: [win32] - "@rollup/rollup-win32-ia32-msvc@4.40.0": - resolution: - { - integrity: sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==, - } + '@rollup/rollup-win32-ia32-msvc@4.40.0': + resolution: {integrity: sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==} cpu: [ia32] os: [win32] - "@rollup/rollup-win32-x64-msvc@4.40.0": - resolution: - { - integrity: sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==, - } + '@rollup/rollup-win32-x64-msvc@4.40.0': + resolution: {integrity: sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==} cpu: [x64] os: [win32] - "@shikijs/core@3.2.2": - resolution: - { - integrity: sha512-yvlSKVMLjddAGBa2Yu+vUZxuu3sClOWW1AG+UtJkvejYuGM5BVL35s6Ijiwb75O9QdEx6IkMxinHZSi8ZyrBaA==, - } - - "@shikijs/engine-javascript@3.2.2": - resolution: - { - integrity: sha512-tlDKfhWpF4jKLUyVAnmL+ggIC+0VyteNsUpBzh1iwWLZu4i+PelIRr0TNur6pRRo5UZIv3ss/PLMuwahg9S2hg==, - } - - "@shikijs/engine-oniguruma@3.2.2": - resolution: - { - integrity: sha512-vyXRnWVCSvokwbaUD/8uPn6Gqsf5Hv7XwcW4AgiU4Z2qwy19sdr6VGzMdheKKN58tJOOe5MIKiNb901bgcUXYQ==, - } - - "@shikijs/langs@3.2.2": - resolution: - { - integrity: sha512-NY0Urg2dV9ETt3JIOWoMPuoDNwte3geLZ4M1nrPHbkDS8dWMpKcEwlqiEIGqtwZNmt5gKyWpR26ln2Bg2ecPgw==, - } - - "@shikijs/themes@3.2.2": - resolution: - { - integrity: sha512-Zuq4lgAxVKkb0FFdhHSdDkALuRpsj1so1JdihjKNQfgM78EHxV2JhO10qPsMrm01FkE3mDRTdF68wfmsqjt6HA==, - } - - "@shikijs/types@3.2.2": - resolution: - { - integrity: sha512-a5TiHk7EH5Lso8sHcLHbVNNhWKP0Wi3yVnXnu73g86n3WoDgEra7n3KszyeCGuyoagspQ2fzvy4cpSc8pKhb0A==, - } - - "@shikijs/vscode-textmate@10.0.2": - resolution: - { - integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==, - } - - "@swc/helpers@0.5.17": - resolution: - { - integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==, - } - - "@tailwindcss/node@4.1.4": - resolution: - { - integrity: sha512-MT5118zaiO6x6hNA04OWInuAiP1YISXql8Z+/Y8iisV5nuhM8VXlyhRuqc2PEviPszcXI66W44bCIk500Oolhw==, - } - - "@tailwindcss/oxide-android-arm64@4.1.4": - resolution: - { - integrity: sha512-xMMAe/SaCN/vHfQYui3fqaBDEXMu22BVwQ33veLc8ep+DNy7CWN52L+TTG9y1K397w9nkzv+Mw+mZWISiqhmlA==, - } - engines: { node: ">= 10" } + '@shikijs/core@3.2.2': + resolution: {integrity: sha512-yvlSKVMLjddAGBa2Yu+vUZxuu3sClOWW1AG+UtJkvejYuGM5BVL35s6Ijiwb75O9QdEx6IkMxinHZSi8ZyrBaA==} + + '@shikijs/engine-javascript@3.2.2': + resolution: {integrity: sha512-tlDKfhWpF4jKLUyVAnmL+ggIC+0VyteNsUpBzh1iwWLZu4i+PelIRr0TNur6pRRo5UZIv3ss/PLMuwahg9S2hg==} + + '@shikijs/engine-oniguruma@3.2.2': + resolution: {integrity: sha512-vyXRnWVCSvokwbaUD/8uPn6Gqsf5Hv7XwcW4AgiU4Z2qwy19sdr6VGzMdheKKN58tJOOe5MIKiNb901bgcUXYQ==} + + '@shikijs/langs@3.2.2': + resolution: {integrity: sha512-NY0Urg2dV9ETt3JIOWoMPuoDNwte3geLZ4M1nrPHbkDS8dWMpKcEwlqiEIGqtwZNmt5gKyWpR26ln2Bg2ecPgw==} + + '@shikijs/themes@3.2.2': + resolution: {integrity: sha512-Zuq4lgAxVKkb0FFdhHSdDkALuRpsj1so1JdihjKNQfgM78EHxV2JhO10qPsMrm01FkE3mDRTdF68wfmsqjt6HA==} + + '@shikijs/types@3.2.2': + resolution: {integrity: sha512-a5TiHk7EH5Lso8sHcLHbVNNhWKP0Wi3yVnXnu73g86n3WoDgEra7n3KszyeCGuyoagspQ2fzvy4cpSc8pKhb0A==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + + '@swc/helpers@0.5.17': + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + + '@tailwindcss/node@4.1.4': + resolution: {integrity: sha512-MT5118zaiO6x6hNA04OWInuAiP1YISXql8Z+/Y8iisV5nuhM8VXlyhRuqc2PEviPszcXI66W44bCIk500Oolhw==} + + '@tailwindcss/oxide-android-arm64@4.1.4': + resolution: {integrity: sha512-xMMAe/SaCN/vHfQYui3fqaBDEXMu22BVwQ33veLc8ep+DNy7CWN52L+TTG9y1K397w9nkzv+Mw+mZWISiqhmlA==} + engines: {node: '>= 10'} cpu: [arm64] os: [android] - "@tailwindcss/oxide-darwin-arm64@4.1.4": - resolution: - { - integrity: sha512-JGRj0SYFuDuAGilWFBlshcexev2hOKfNkoX+0QTksKYq2zgF9VY/vVMq9m8IObYnLna0Xlg+ytCi2FN2rOL0Sg==, - } - engines: { node: ">= 10" } + '@tailwindcss/oxide-darwin-arm64@4.1.4': + resolution: {integrity: sha512-JGRj0SYFuDuAGilWFBlshcexev2hOKfNkoX+0QTksKYq2zgF9VY/vVMq9m8IObYnLna0Xlg+ytCi2FN2rOL0Sg==} + engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - "@tailwindcss/oxide-darwin-x64@4.1.4": - resolution: - { - integrity: sha512-sdDeLNvs3cYeWsEJ4H1DvjOzaGios4QbBTNLVLVs0XQ0V95bffT3+scptzYGPMjm7xv4+qMhCDrkHwhnUySEzA==, - } - engines: { node: ">= 10" } + '@tailwindcss/oxide-darwin-x64@4.1.4': + resolution: {integrity: sha512-sdDeLNvs3cYeWsEJ4H1DvjOzaGios4QbBTNLVLVs0XQ0V95bffT3+scptzYGPMjm7xv4+qMhCDrkHwhnUySEzA==} + engines: {node: '>= 10'} cpu: [x64] os: [darwin] - "@tailwindcss/oxide-freebsd-x64@4.1.4": - resolution: - { - integrity: sha512-VHxAqxqdghM83HslPhRsNhHo91McsxRJaEnShJOMu8mHmEj9Ig7ToHJtDukkuLWLzLboh2XSjq/0zO6wgvykNA==, - } - engines: { node: ">= 10" } + '@tailwindcss/oxide-freebsd-x64@4.1.4': + resolution: {integrity: sha512-VHxAqxqdghM83HslPhRsNhHo91McsxRJaEnShJOMu8mHmEj9Ig7ToHJtDukkuLWLzLboh2XSjq/0zO6wgvykNA==} + engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - "@tailwindcss/oxide-linux-arm-gnueabihf@4.1.4": - resolution: - { - integrity: sha512-OTU/m/eV4gQKxy9r5acuesqaymyeSCnsx1cFto/I1WhPmi5HDxX1nkzb8KYBiwkHIGg7CTfo/AcGzoXAJBxLfg==, - } - engines: { node: ">= 10" } + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.4': + resolution: {integrity: sha512-OTU/m/eV4gQKxy9r5acuesqaymyeSCnsx1cFto/I1WhPmi5HDxX1nkzb8KYBiwkHIGg7CTfo/AcGzoXAJBxLfg==} + engines: {node: '>= 10'} cpu: [arm] os: [linux] - "@tailwindcss/oxide-linux-arm64-gnu@4.1.4": - resolution: - { - integrity: sha512-hKlLNvbmUC6z5g/J4H+Zx7f7w15whSVImokLPmP6ff1QqTVE+TxUM9PGuNsjHvkvlHUtGTdDnOvGNSEUiXI1Ww==, - } - engines: { node: ">= 10" } + '@tailwindcss/oxide-linux-arm64-gnu@4.1.4': + resolution: {integrity: sha512-hKlLNvbmUC6z5g/J4H+Zx7f7w15whSVImokLPmP6ff1QqTVE+TxUM9PGuNsjHvkvlHUtGTdDnOvGNSEUiXI1Ww==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] - "@tailwindcss/oxide-linux-arm64-musl@4.1.4": - resolution: - { - integrity: sha512-X3As2xhtgPTY/m5edUtddmZ8rCruvBvtxYLMw9OsZdH01L2gS2icsHRwxdU0dMItNfVmrBezueXZCHxVeeb7Aw==, - } - engines: { node: ">= 10" } + '@tailwindcss/oxide-linux-arm64-musl@4.1.4': + resolution: {integrity: sha512-X3As2xhtgPTY/m5edUtddmZ8rCruvBvtxYLMw9OsZdH01L2gS2icsHRwxdU0dMItNfVmrBezueXZCHxVeeb7Aw==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] - "@tailwindcss/oxide-linux-x64-gnu@4.1.4": - resolution: - { - integrity: sha512-2VG4DqhGaDSmYIu6C4ua2vSLXnJsb/C9liej7TuSO04NK+JJJgJucDUgmX6sn7Gw3Cs5ZJ9ZLrnI0QRDOjLfNQ==, - } - engines: { node: ">= 10" } + '@tailwindcss/oxide-linux-x64-gnu@4.1.4': + resolution: {integrity: sha512-2VG4DqhGaDSmYIu6C4ua2vSLXnJsb/C9liej7TuSO04NK+JJJgJucDUgmX6sn7Gw3Cs5ZJ9ZLrnI0QRDOjLfNQ==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] - "@tailwindcss/oxide-linux-x64-musl@4.1.4": - resolution: - { - integrity: sha512-v+mxVgH2kmur/X5Mdrz9m7TsoVjbdYQT0b4Z+dr+I4RvreCNXyCFELZL/DO0M1RsidZTrm6O1eMnV6zlgEzTMQ==, - } - engines: { node: ">= 10" } + '@tailwindcss/oxide-linux-x64-musl@4.1.4': + resolution: {integrity: sha512-v+mxVgH2kmur/X5Mdrz9m7TsoVjbdYQT0b4Z+dr+I4RvreCNXyCFELZL/DO0M1RsidZTrm6O1eMnV6zlgEzTMQ==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] - "@tailwindcss/oxide-wasm32-wasi@4.1.4": - resolution: - { - integrity: sha512-2TLe9ir+9esCf6Wm+lLWTMbgklIjiF0pbmDnwmhR9MksVOq+e8aP3TSsXySnBDDvTTVd/vKu1aNttEGj3P6l8Q==, - } - engines: { node: ">=14.0.0" } + '@tailwindcss/oxide-wasm32-wasi@4.1.4': + resolution: {integrity: sha512-2TLe9ir+9esCf6Wm+lLWTMbgklIjiF0pbmDnwmhR9MksVOq+e8aP3TSsXySnBDDvTTVd/vKu1aNttEGj3P6l8Q==} + engines: {node: '>=14.0.0'} cpu: [wasm32] bundledDependencies: - - "@napi-rs/wasm-runtime" - - "@emnapi/core" - - "@emnapi/runtime" - - "@tybys/wasm-util" - - "@emnapi/wasi-threads" + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' - tslib - "@tailwindcss/oxide-win32-arm64-msvc@4.1.4": - resolution: - { - integrity: sha512-VlnhfilPlO0ltxW9/BgfLI5547PYzqBMPIzRrk4W7uupgCt8z6Trw/tAj6QUtF2om+1MH281Pg+HHUJoLesmng==, - } - engines: { node: ">= 10" } + '@tailwindcss/oxide-win32-arm64-msvc@4.1.4': + resolution: {integrity: sha512-VlnhfilPlO0ltxW9/BgfLI5547PYzqBMPIzRrk4W7uupgCt8z6Trw/tAj6QUtF2om+1MH281Pg+HHUJoLesmng==} + engines: {node: '>= 10'} cpu: [arm64] os: [win32] - "@tailwindcss/oxide-win32-x64-msvc@4.1.4": - resolution: - { - integrity: sha512-+7S63t5zhYjslUGb8NcgLpFXD+Kq1F/zt5Xv5qTv7HaFTG/DHyHD9GA6ieNAxhgyA4IcKa/zy7Xx4Oad2/wuhw==, - } - engines: { node: ">= 10" } + '@tailwindcss/oxide-win32-x64-msvc@4.1.4': + resolution: {integrity: sha512-+7S63t5zhYjslUGb8NcgLpFXD+Kq1F/zt5Xv5qTv7HaFTG/DHyHD9GA6ieNAxhgyA4IcKa/zy7Xx4Oad2/wuhw==} + engines: {node: '>= 10'} cpu: [x64] os: [win32] - "@tailwindcss/oxide@4.1.4": - resolution: - { - integrity: sha512-p5wOpXyOJx7mKh5MXh5oKk+kqcz8T+bA3z/5VWWeQwFrmuBItGwz8Y2CHk/sJ+dNb9B0nYFfn0rj/cKHZyjahQ==, - } - engines: { node: ">= 10" } - - "@tailwindcss/vite@4.1.4": - resolution: - { - integrity: sha512-4UQeMrONbvrsXKXXp/uxmdEN5JIJ9RkH7YVzs6AMxC/KC1+Np7WZBaNIco7TEjlkthqxZbt8pU/ipD+hKjm80A==, - } + '@tailwindcss/oxide@4.1.4': + resolution: {integrity: sha512-p5wOpXyOJx7mKh5MXh5oKk+kqcz8T+bA3z/5VWWeQwFrmuBItGwz8Y2CHk/sJ+dNb9B0nYFfn0rj/cKHZyjahQ==} + engines: {node: '>= 10'} + + '@tailwindcss/vite@4.1.4': + resolution: {integrity: sha512-4UQeMrONbvrsXKXXp/uxmdEN5JIJ9RkH7YVzs6AMxC/KC1+Np7WZBaNIco7TEjlkthqxZbt8pU/ipD+hKjm80A==} peerDependencies: vite: ^5.2.0 || ^6 - "@types/debug@4.1.12": - resolution: - { - integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==, - } - - "@types/estree-jsx@1.0.5": - resolution: - { - integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==, - } - - "@types/estree@1.0.7": - resolution: - { - integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==, - } - - "@types/hast@3.0.4": - resolution: - { - integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==, - } - - "@types/js-yaml@4.0.9": - resolution: - { - integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==, - } - - "@types/mdast@4.0.4": - resolution: - { - integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==, - } - - "@types/mdx@2.0.13": - resolution: - { - integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==, - } - - "@types/ms@2.1.0": - resolution: - { - integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==, - } - - "@types/nlcst@2.0.3": - resolution: - { - integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==, - } - - "@types/node@17.0.45": - resolution: - { - integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==, - } - - "@types/sax@1.2.7": - resolution: - { - integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==, - } - - "@types/unist@2.0.11": - resolution: - { - integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==, - } - - "@types/unist@3.0.3": - resolution: - { - integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==, - } - - "@ungap/structured-clone@1.3.0": - resolution: - { - integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==, - } + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/js-yaml@4.0.9': + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/nlcst@2.0.3': + resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} + + '@types/node@17.0.45': + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + + '@types/node@22.18.1': + resolution: {integrity: sha512-rzSDyhn4cYznVG+PCzGe1lwuMYJrcBS1fc3JqSa2PvtABwWo+dZ1ij5OVok3tqfpEBCBoaR4d7upFJk73HRJDw==} + + '@types/sax@1.2.7': + resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} acorn-jsx@5.3.2: - resolution: - { - integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, - } + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 acorn@8.14.1: - resolution: - { - integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==, - } - engines: { node: ">=0.4.0" } + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} hasBin: true ansi-align@3.0.1: - resolution: - { - integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==, - } + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} ansi-regex@5.0.1: - resolution: - { - integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} ansi-regex@6.1.0: - resolution: - { - integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} ansi-styles@6.2.1: - resolution: - { - integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} anymatch@3.1.3: - resolution: - { - integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} arg@5.0.2: - resolution: - { - integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==, - } + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} argparse@2.0.1: - resolution: - { - integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, - } + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} aria-query@5.3.2: - resolution: - { - integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} array-iterate@2.0.1: - resolution: - { - integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==, - } + resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} astring@1.9.0: - resolution: - { - integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==, - } + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true astro-expressive-code@0.41.1: - resolution: - { - integrity: sha512-za6HlekMOczwlkuYuQQTd6LkKFwsnfAjwjIprCzOqsjp9vkYrAcriXM5cIG7V1Zxx88sVXF6iGnyNl4J0DL2Mg==, - } + resolution: {integrity: sha512-za6HlekMOczwlkuYuQQTd6LkKFwsnfAjwjIprCzOqsjp9vkYrAcriXM5cIG7V1Zxx88sVXF6iGnyNl4J0DL2Mg==} peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 astro@5.7.0: - resolution: - { - integrity: sha512-LxvWFlCQSxRLqvtCfZ/LFzlaHcvX++qtq0NrRmwtDmrZhAyHOoVfLkxEE0STKgn0wjLTuETyBrgCBWe2eb68/A==, - } - engines: - { node: ^18.17.1 || ^20.3.0 || >=22.0.0, npm: ">=9.6.5", pnpm: ">=7.1.0" } + resolution: {integrity: sha512-LxvWFlCQSxRLqvtCfZ/LFzlaHcvX++qtq0NrRmwtDmrZhAyHOoVfLkxEE0STKgn0wjLTuETyBrgCBWe2eb68/A==} + engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true axobject-query@4.1.0: - resolution: - { - integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} b4a@1.6.7: - resolution: - { - integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==, - } + resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} bail@2.0.2: - resolution: - { - integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==, - } + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} bare-events@2.5.4: - resolution: - { - integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==, - } + resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} bare-fs@4.1.2: - resolution: - { - integrity: sha512-8wSeOia5B7LwD4+h465y73KOdj5QHsbbuoUfPBi+pXgFJIPuG7SsiOdJuijWMyfid49eD+WivpfY7KT8gbAzBA==, - } - engines: { bare: ">=1.16.0" } + resolution: {integrity: sha512-8wSeOia5B7LwD4+h465y73KOdj5QHsbbuoUfPBi+pXgFJIPuG7SsiOdJuijWMyfid49eD+WivpfY7KT8gbAzBA==} + engines: {bare: '>=1.16.0'} peerDependencies: - bare-buffer: "*" + bare-buffer: '*' peerDependenciesMeta: bare-buffer: optional: true bare-os@3.6.1: - resolution: - { - integrity: sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==, - } - engines: { bare: ">=1.14.0" } + resolution: {integrity: sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==} + engines: {bare: '>=1.14.0'} bare-path@3.0.0: - resolution: - { - integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==, - } + resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} bare-stream@2.6.5: - resolution: - { - integrity: sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==, - } + resolution: {integrity: sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==} peerDependencies: - bare-buffer: "*" - bare-events: "*" + bare-buffer: '*' + bare-events: '*' peerDependenciesMeta: bare-buffer: optional: true @@ -1234,512 +789,292 @@ packages: optional: true base-64@1.0.0: - resolution: - { - integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==, - } + resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} base64-js@1.5.1: - resolution: - { - integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, - } + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} bcp-47-match@2.0.3: - resolution: - { - integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==, - } + resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} bcp-47@2.1.0: - resolution: - { - integrity: sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==, - } + resolution: {integrity: sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==} bl@4.1.0: - resolution: - { - integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, - } + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} blob-to-buffer@1.2.9: - resolution: - { - integrity: sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==, - } + resolution: {integrity: sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==} boolbase@1.0.0: - resolution: - { - integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, - } + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} boxen@8.0.1: - resolution: - { - integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} + engines: {node: '>=18'} brotli@1.3.3: - resolution: - { - integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==, - } + resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} buffer@5.7.1: - resolution: - { - integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, - } + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} camelcase@8.0.0: - resolution: - { - integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} + engines: {node: '>=16'} ccount@2.0.1: - resolution: - { - integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==, - } + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} chalk@5.4.1: - resolution: - { - integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==, - } - engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} character-entities-html4@2.1.0: - resolution: - { - integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==, - } + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} character-entities-legacy@3.0.0: - resolution: - { - integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==, - } + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} character-entities@2.0.2: - resolution: - { - integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==, - } + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} character-reference-invalid@2.0.1: - resolution: - { - integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==, - } + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} chokidar@4.0.3: - resolution: - { - integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==, - } - engines: { node: ">= 14.16.0" } + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} chownr@1.1.4: - resolution: - { - integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==, - } + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} ci-info@4.2.0: - resolution: - { - integrity: sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==} + engines: {node: '>=8'} cli-boxes@3.0.0: - resolution: - { - integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} clone@2.1.2: - resolution: - { - integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==, - } - engines: { node: ">=0.8" } + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} clsx@2.1.1: - resolution: - { - integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} collapse-white-space@2.1.0: - resolution: - { - integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==, - } + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} color-convert@2.0.1: - resolution: - { - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, - } - engines: { node: ">=7.0.0" } + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} color-name@1.1.4: - resolution: - { - integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, - } + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} color-string@1.9.1: - resolution: - { - integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==, - } + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} color@4.2.3: - resolution: - { - integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==, - } - engines: { node: ">=12.5.0" } + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} comma-separated-tokens@2.0.3: - resolution: - { - integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==, - } + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} common-ancestor-path@1.0.1: - resolution: - { - integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==, - } + resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} + + concurrently@9.2.1: + resolution: {integrity: sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==} + engines: {node: '>=18'} + hasBin: true cookie-es@1.2.2: - resolution: - { - integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==, - } + resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} cookie@1.0.2: - resolution: - { - integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + engines: {node: '>=18'} cross-fetch@3.2.0: - resolution: - { - integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==, - } + resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} crossws@0.3.4: - resolution: - { - integrity: sha512-uj0O1ETYX1Bh6uSgktfPvwDiPYGQ3aI4qVsaC/LWpkIzGj1nUYm5FK3K+t11oOlpN01lGbprFCH4wBlKdJjVgw==, - } + resolution: {integrity: sha512-uj0O1ETYX1Bh6uSgktfPvwDiPYGQ3aI4qVsaC/LWpkIzGj1nUYm5FK3K+t11oOlpN01lGbprFCH4wBlKdJjVgw==} css-selector-parser@3.1.2: - resolution: - { - integrity: sha512-WfUcL99xWDs7b3eZPoRszWVfbNo8ErCF15PTvVROjkShGlAfjIkG6hlfj/sl6/rfo5Q9x9ryJ3VqVnAZDA+gcw==, - } + resolution: {integrity: sha512-WfUcL99xWDs7b3eZPoRszWVfbNo8ErCF15PTvVROjkShGlAfjIkG6hlfj/sl6/rfo5Q9x9ryJ3VqVnAZDA+gcw==} css-tree@3.1.0: - resolution: - { - integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==, - } - engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} cssesc@3.0.0: - resolution: - { - integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} hasBin: true debug@4.4.0: - resolution: - { - integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==, - } - engines: { node: ">=6.0" } + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} peerDependencies: - supports-color: "*" + supports-color: '*' peerDependenciesMeta: supports-color: optional: true decode-named-character-reference@1.1.0: - resolution: - { - integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==, - } + resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==} decompress-response@6.0.0: - resolution: - { - integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} deep-extend@0.6.0: - resolution: - { - integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==, - } - engines: { node: ">=4.0.0" } + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} defu@6.1.4: - resolution: - { - integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==, - } + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} dequal@2.0.3: - resolution: - { - integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} destr@2.0.5: - resolution: - { - integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==, - } + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} detect-libc@2.0.3: - resolution: - { - integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} deterministic-object-hash@2.0.2: - resolution: - { - integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} + engines: {node: '>=18'} devalue@5.1.1: - resolution: - { - integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==, - } + resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==} devlop@1.1.0: - resolution: - { - integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==, - } + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} dfa@1.2.0: - resolution: - { - integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==, - } + resolution: {integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==} diff@5.2.0: - resolution: - { - integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==, - } - engines: { node: ">=0.3.1" } + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} direction@2.0.1: - resolution: - { - integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==, - } + resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} hasBin: true dlv@1.1.3: - resolution: - { - integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==, - } + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dset@3.1.4: - resolution: - { - integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} + engines: {node: '>=4'} emoji-regex-xs@1.0.0: - resolution: - { - integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==, - } + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} emoji-regex@10.4.0: - resolution: - { - integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==, - } + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} emoji-regex@8.0.0: - resolution: - { - integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, - } + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} end-of-stream@1.4.4: - resolution: - { - integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==, - } + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} enhanced-resolve@5.18.1: - resolution: - { - integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==, - } - engines: { node: ">=10.13.0" } + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} entities@4.5.0: - resolution: - { - integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, - } - engines: { node: ">=0.12" } + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} es-module-lexer@1.6.0: - resolution: - { - integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==, - } + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} esast-util-from-estree@2.0.0: - resolution: - { - integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==, - } + resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} esast-util-from-js@2.0.1: - resolution: - { - integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==, - } + resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} esbuild@0.25.2: - resolution: - { - integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} + engines: {node: '>=18'} hasBin: true + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + escape-string-regexp@5.0.0: - resolution: - { - integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} estree-util-attach-comments@3.0.0: - resolution: - { - integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==, - } + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} estree-util-build-jsx@3.0.1: - resolution: - { - integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==, - } + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} estree-util-is-identifier-name@3.0.0: - resolution: - { - integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==, - } + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} estree-util-scope@1.0.0: - resolution: - { - integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==, - } + resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} estree-util-to-js@2.0.0: - resolution: - { - integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==, - } + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} estree-util-visit@2.0.0: - resolution: - { - integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==, - } + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} estree-walker@2.0.2: - resolution: - { - integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, - } + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} estree-walker@3.0.3: - resolution: - { - integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==, - } + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} eventemitter3@5.0.1: - resolution: - { - integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, - } + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} expand-template@2.0.3: - resolution: - { - integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} expressive-code@0.41.1: - resolution: - { - integrity: sha512-O3+bDWGw+y7b0L3Y3xc7LbPgRTvFy2tqXzYY24TBbDwnHbIwb0OFdS4v+1PpX6NEsF7XsVv9sqY5xo22yWe7Hw==, - } + resolution: {integrity: sha512-O3+bDWGw+y7b0L3Y3xc7LbPgRTvFy2tqXzYY24TBbDwnHbIwb0OFdS4v+1PpX6NEsF7XsVv9sqY5xo22yWe7Hw==} extend@3.0.2: - resolution: - { - integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==, - } + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} fast-deep-equal@3.1.3: - resolution: - { - integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, - } + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} fast-fifo@1.3.2: - resolution: - { - integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==, - } + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} fdir@6.4.3: - resolution: - { - integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==, - } + resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -1747,899 +1082,490 @@ packages: optional: true flattie@1.1.1: - resolution: - { - integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} + engines: {node: '>=8'} fontkit@2.0.4: - resolution: - { - integrity: sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==, - } + resolution: {integrity: sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==} fs-constants@1.0.0: - resolution: - { - integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==, - } + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} fsevents@2.3.3: - resolution: - { - integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, - } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + get-east-asian-width@1.3.0: - resolution: - { - integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + engines: {node: '>=18'} + + get-tsconfig@4.10.1: + resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} github-from-package@0.0.0: - resolution: - { - integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==, - } + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} github-slugger@2.0.0: - resolution: - { - integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==, - } + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} graceful-fs@4.2.11: - resolution: - { - integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, - } + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} h3@1.15.1: - resolution: - { - integrity: sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==, - } + resolution: {integrity: sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} hast-util-embedded@3.0.0: - resolution: - { - integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==, - } + resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==} hast-util-format@1.1.0: - resolution: - { - integrity: sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA==, - } + resolution: {integrity: sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA==} hast-util-from-html@2.0.3: - resolution: - { - integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==, - } + resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} hast-util-from-parse5@8.0.3: - resolution: - { - integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==, - } + resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} hast-util-has-property@3.0.0: - resolution: - { - integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==, - } + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} hast-util-is-body-ok-link@3.0.1: - resolution: - { - integrity: sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==, - } + resolution: {integrity: sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==} hast-util-is-element@3.0.0: - resolution: - { - integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==, - } + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} hast-util-minify-whitespace@1.0.1: - resolution: - { - integrity: sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==, - } + resolution: {integrity: sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==} hast-util-parse-selector@4.0.0: - resolution: - { - integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==, - } + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} hast-util-phrasing@3.0.1: - resolution: - { - integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==, - } + resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==} hast-util-raw@9.1.0: - resolution: - { - integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==, - } + resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} hast-util-select@6.0.4: - resolution: - { - integrity: sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==, - } + resolution: {integrity: sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==} hast-util-to-estree@3.1.3: - resolution: - { - integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==, - } + resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} hast-util-to-html@9.0.5: - resolution: - { - integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==, - } + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} hast-util-to-jsx-runtime@2.3.6: - resolution: - { - integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==, - } + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} hast-util-to-parse5@8.0.0: - resolution: - { - integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==, - } + resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} hast-util-to-string@3.0.1: - resolution: - { - integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==, - } + resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} hast-util-to-text@4.0.2: - resolution: - { - integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==, - } + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} hast-util-whitespace@3.0.0: - resolution: - { - integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==, - } + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} hastscript@9.0.1: - resolution: - { - integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==, - } + resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} html-escaper@3.0.3: - resolution: - { - integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==, - } + resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} html-void-elements@3.0.0: - resolution: - { - integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==, - } + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} html-whitespace-sensitive-tag-names@3.0.1: - resolution: - { - integrity: sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==, - } + resolution: {integrity: sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==} http-cache-semantics@4.1.1: - resolution: - { - integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==, - } + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} i18next@23.16.8: - resolution: - { - integrity: sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==, - } + resolution: {integrity: sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==} ieee754@1.2.1: - resolution: - { - integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, - } + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} import-meta-resolve@4.1.0: - resolution: - { - integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==, - } + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} inherits@2.0.4: - resolution: - { - integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, - } + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} ini@1.3.8: - resolution: - { - integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, - } + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} inline-style-parser@0.2.4: - resolution: - { - integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==, - } + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} iron-webcrypto@1.2.1: - resolution: - { - integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==, - } + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} is-alphabetical@2.0.1: - resolution: - { - integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==, - } + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} is-alphanumerical@2.0.1: - resolution: - { - integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==, - } + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} is-arrayish@0.3.2: - resolution: - { - integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==, - } + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} is-decimal@2.0.1: - resolution: - { - integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==, - } + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} is-docker@3.0.0: - resolution: - { - integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true is-fullwidth-code-point@3.0.0: - resolution: - { - integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} is-hexadecimal@2.0.1: - resolution: - { - integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==, - } + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} is-inside-container@1.0.0: - resolution: - { - integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==, - } - engines: { node: ">=14.16" } + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} hasBin: true is-plain-obj@4.1.0: - resolution: - { - integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} is-wsl@3.1.0: - resolution: - { - integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} jiti@2.4.2: - resolution: - { - integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==, - } + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} hasBin: true js-yaml@4.1.0: - resolution: - { - integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, - } + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true kleur@3.0.3: - resolution: - { - integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} kleur@4.1.5: - resolution: - { - integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} klona@2.0.6: - resolution: - { - integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} lightningcss-darwin-arm64@1.29.2: - resolution: - { - integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] lightningcss-darwin-x64@1.29.2: - resolution: - { - integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] lightningcss-freebsd-x64@1.29.2: - resolution: - { - integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] lightningcss-linux-arm-gnueabihf@1.29.2: - resolution: - { - integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==} + engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] lightningcss-linux-arm64-gnu@1.29.2: - resolution: - { - integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] lightningcss-linux-arm64-musl@1.29.2: - resolution: - { - integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] lightningcss-linux-x64-gnu@1.29.2: - resolution: - { - integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] lightningcss-linux-x64-musl@1.29.2: - resolution: - { - integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] lightningcss-win32-arm64-msvc@1.29.2: - resolution: - { - integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] lightningcss-win32-x64-msvc@1.29.2: - resolution: - { - integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] lightningcss@1.29.2: - resolution: - { - integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==} + engines: {node: '>= 12.0.0'} longest-streak@3.1.0: - resolution: - { - integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==, - } + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} lru-cache@10.4.3: - resolution: - { - integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, - } + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} magic-string@0.30.17: - resolution: - { - integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==, - } + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} magicast@0.3.5: - resolution: - { - integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==, - } + resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} markdown-extensions@2.0.0: - resolution: - { - integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} markdown-table@3.0.4: - resolution: - { - integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==, - } + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} mdast-util-definitions@6.0.0: - resolution: - { - integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==, - } + resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} mdast-util-directive@3.1.0: - resolution: - { - integrity: sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==, - } + resolution: {integrity: sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==} mdast-util-find-and-replace@3.0.2: - resolution: - { - integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==, - } + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} mdast-util-from-markdown@2.0.2: - resolution: - { - integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==, - } + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} mdast-util-gfm-autolink-literal@2.0.1: - resolution: - { - integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==, - } + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} mdast-util-gfm-footnote@2.1.0: - resolution: - { - integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==, - } + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} mdast-util-gfm-strikethrough@2.0.0: - resolution: - { - integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==, - } + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} mdast-util-gfm-table@2.0.0: - resolution: - { - integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==, - } + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} mdast-util-gfm-task-list-item@2.0.0: - resolution: - { - integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==, - } + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} mdast-util-gfm@3.1.0: - resolution: - { - integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==, - } + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} mdast-util-mdx-expression@2.0.1: - resolution: - { - integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==, - } + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} mdast-util-mdx-jsx@3.2.0: - resolution: - { - integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==, - } + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} mdast-util-mdx@3.0.0: - resolution: - { - integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==, - } + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} mdast-util-mdxjs-esm@2.0.1: - resolution: - { - integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==, - } + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} mdast-util-phrasing@4.1.0: - resolution: - { - integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==, - } + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} mdast-util-to-hast@13.2.0: - resolution: - { - integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==, - } + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} mdast-util-to-markdown@2.1.2: - resolution: - { - integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==, - } + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} mdast-util-to-string@4.0.0: - resolution: - { - integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==, - } + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} mdn-data@2.12.2: - resolution: - { - integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==, - } + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} micromark-core-commonmark@2.0.3: - resolution: - { - integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==, - } + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} micromark-extension-directive@3.0.2: - resolution: - { - integrity: sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==, - } + resolution: {integrity: sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==} micromark-extension-gfm-autolink-literal@2.1.0: - resolution: - { - integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==, - } + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} micromark-extension-gfm-footnote@2.1.0: - resolution: - { - integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==, - } + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} micromark-extension-gfm-strikethrough@2.1.0: - resolution: - { - integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==, - } + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} micromark-extension-gfm-table@2.1.1: - resolution: - { - integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==, - } + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} micromark-extension-gfm-tagfilter@2.0.0: - resolution: - { - integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==, - } + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} micromark-extension-gfm-task-list-item@2.1.0: - resolution: - { - integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==, - } + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} micromark-extension-gfm@3.0.0: - resolution: - { - integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==, - } + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} micromark-extension-mdx-expression@3.0.1: - resolution: - { - integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==, - } + resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} micromark-extension-mdx-jsx@3.0.2: - resolution: - { - integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==, - } + resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} micromark-extension-mdx-md@2.0.0: - resolution: - { - integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==, - } + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} micromark-extension-mdxjs-esm@3.0.0: - resolution: - { - integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==, - } + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} micromark-extension-mdxjs@3.0.0: - resolution: - { - integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==, - } + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} micromark-factory-destination@2.0.1: - resolution: - { - integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==, - } + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} micromark-factory-label@2.0.1: - resolution: - { - integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==, - } + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} micromark-factory-mdx-expression@2.0.3: - resolution: - { - integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==, - } + resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} micromark-factory-space@2.0.1: - resolution: - { - integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==, - } + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} micromark-factory-title@2.0.1: - resolution: - { - integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==, - } + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} micromark-factory-whitespace@2.0.1: - resolution: - { - integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==, - } + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} micromark-util-character@2.1.1: - resolution: - { - integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==, - } + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} micromark-util-chunked@2.0.1: - resolution: - { - integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==, - } + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} micromark-util-classify-character@2.0.1: - resolution: - { - integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==, - } + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} micromark-util-combine-extensions@2.0.1: - resolution: - { - integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==, - } + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} micromark-util-decode-numeric-character-reference@2.0.2: - resolution: - { - integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==, - } + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} micromark-util-decode-string@2.0.1: - resolution: - { - integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==, - } + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} micromark-util-encode@2.0.1: - resolution: - { - integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==, - } + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} micromark-util-events-to-acorn@2.0.3: - resolution: - { - integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==, - } + resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} micromark-util-html-tag-name@2.0.1: - resolution: - { - integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==, - } + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} micromark-util-normalize-identifier@2.0.1: - resolution: - { - integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==, - } + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} micromark-util-resolve-all@2.0.1: - resolution: - { - integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==, - } + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} micromark-util-sanitize-uri@2.0.1: - resolution: - { - integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==, - } + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} micromark-util-subtokenize@2.1.0: - resolution: - { - integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==, - } + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} micromark-util-symbol@2.0.1: - resolution: - { - integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==, - } + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} micromark-util-types@2.0.2: - resolution: - { - integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==, - } + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} micromark@4.0.2: - resolution: - { - integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==, - } + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} mimic-response@3.1.0: - resolution: - { - integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} minimist@1.2.8: - resolution: - { - integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, - } + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} mkdirp-classic@0.5.3: - resolution: - { - integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==, - } + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} mrmime@2.0.1: - resolution: - { - integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} ms@2.1.3: - resolution: - { - integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, - } + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} nanoid@3.3.11: - resolution: - { - integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==, - } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true napi-build-utils@2.0.0: - resolution: - { - integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==, - } + resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} neotraverse@0.6.18: - resolution: - { - integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==, - } - engines: { node: ">= 10" } + resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} + engines: {node: '>= 10'} nlcst-to-string@4.0.0: - resolution: - { - integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==, - } + resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} node-abi@3.74.0: - resolution: - { - integrity: sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==} + engines: {node: '>=10'} node-addon-api@6.1.0: - resolution: - { - integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==, - } + resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} node-fetch-native@1.6.6: - resolution: - { - integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==, - } + resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} node-fetch@2.7.0: - resolution: - { - integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==, - } - engines: { node: 4.x || >=6.0.0 } + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 peerDependenciesMeta: @@ -2647,658 +1573,378 @@ packages: optional: true node-mock-http@1.0.0: - resolution: - { - integrity: sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==, - } + resolution: {integrity: sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==} normalize-path@3.0.0: - resolution: - { - integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} nth-check@2.1.1: - resolution: - { - integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, - } + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} ofetch@1.4.1: - resolution: - { - integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==, - } + resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} ohash@1.1.6: - resolution: - { - integrity: sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==, - } + resolution: {integrity: sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==} once@1.4.0: - resolution: - { - integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, - } + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} oniguruma-parser@0.11.1: - resolution: - { - integrity: sha512-fX6SirDOsTUNqSUOnL3fDtD3R7PCXNWGA3WWPvv9egEfTWkNXzRLO/9CC1WkDusP6HyWRZig06kHeYPcw3mlqQ==, - } + resolution: {integrity: sha512-fX6SirDOsTUNqSUOnL3fDtD3R7PCXNWGA3WWPvv9egEfTWkNXzRLO/9CC1WkDusP6HyWRZig06kHeYPcw3mlqQ==} oniguruma-to-es@4.2.0: - resolution: - { - integrity: sha512-MDPs6KSOLS0tKQ7joqg44dRIRZUyotfTy0r+7oEEs6VwWWP0+E2PPDYWMFN0aqOjRyWHBYq7RfKw9GQk2S2z5g==, - } + resolution: {integrity: sha512-MDPs6KSOLS0tKQ7joqg44dRIRZUyotfTy0r+7oEEs6VwWWP0+E2PPDYWMFN0aqOjRyWHBYq7RfKw9GQk2S2z5g==} p-limit@6.2.0: - resolution: - { - integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} + engines: {node: '>=18'} p-queue@8.1.0: - resolution: - { - integrity: sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==} + engines: {node: '>=18'} p-timeout@6.1.4: - resolution: - { - integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==, - } - engines: { node: ">=14.16" } + resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} + engines: {node: '>=14.16'} package-manager-detector@1.2.0: - resolution: - { - integrity: sha512-PutJepsOtsqVfUsxCzgTTpyXmiAgvKptIgY4th5eq5UXXFhj5PxfQ9hnGkypMeovpAvVshFRItoFHYO18TCOqA==, - } + resolution: {integrity: sha512-PutJepsOtsqVfUsxCzgTTpyXmiAgvKptIgY4th5eq5UXXFhj5PxfQ9hnGkypMeovpAvVshFRItoFHYO18TCOqA==} pagefind@1.3.0: - resolution: - { - integrity: sha512-8KPLGT5g9s+olKMRTU9LFekLizkVIu9tes90O1/aigJ0T5LmyPqTzGJrETnSw3meSYg58YH7JTzhTTW/3z6VAw==, - } + resolution: {integrity: sha512-8KPLGT5g9s+olKMRTU9LFekLizkVIu9tes90O1/aigJ0T5LmyPqTzGJrETnSw3meSYg58YH7JTzhTTW/3z6VAw==} hasBin: true pako@0.2.9: - resolution: - { - integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==, - } + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} parse-entities@4.0.2: - resolution: - { - integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==, - } + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} parse-latin@7.0.0: - resolution: - { - integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==, - } + resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} parse5@7.2.1: - resolution: - { - integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==, - } + resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} picocolors@1.1.1: - resolution: - { - integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, - } + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} picomatch@2.3.1: - resolution: - { - integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, - } - engines: { node: ">=8.6" } + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} picomatch@4.0.2: - resolution: - { - integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} postcss-nested@6.2.0: - resolution: - { - integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==, - } - engines: { node: ">=12.0" } + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 postcss-selector-parser@6.1.2: - resolution: - { - integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} postcss@8.5.3: - resolution: - { - integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==, - } - engines: { node: ^10 || ^12 || >=14 } + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} prebuild-install@7.1.3: - resolution: - { - integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} + engines: {node: '>=10'} hasBin: true prettier@3.6.2: - resolution: - { - integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} + engines: {node: '>=14'} hasBin: true prismjs@1.30.0: - resolution: - { - integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} + engines: {node: '>=6'} prompts@2.4.2: - resolution: - { - integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} property-information@6.5.0: - resolution: - { - integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==, - } + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} property-information@7.0.0: - resolution: - { - integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==, - } + resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} pump@3.0.2: - resolution: - { - integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==, - } + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} radix3@1.1.2: - resolution: - { - integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==, - } + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} rc@1.2.8: - resolution: - { - integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==, - } + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true readable-stream@3.6.2: - resolution: - { - integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} readdirp@4.1.2: - resolution: - { - integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==, - } - engines: { node: ">= 14.18.0" } + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} recma-build-jsx@1.0.0: - resolution: - { - integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==, - } + resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} recma-jsx@1.0.0: - resolution: - { - integrity: sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==, - } + resolution: {integrity: sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==} recma-parse@1.0.0: - resolution: - { - integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==, - } + resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} recma-stringify@1.0.0: - resolution: - { - integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==, - } + resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} regenerator-runtime@0.14.1: - resolution: - { - integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==, - } + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} regex-recursion@6.0.2: - resolution: - { - integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==, - } + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} regex-utilities@2.3.0: - resolution: - { - integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==, - } + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} regex@6.0.1: - resolution: - { - integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==, - } + resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} rehype-expressive-code@0.41.1: - resolution: - { - integrity: sha512-QApC3js5/AwrF6VqWfGsNY9Y1qLC0LQDWcqOHEAhbl3CB4e5GMor2SpWaGOWBW+mmrkVCEymayLPCPIbx0tcQQ==, - } + resolution: {integrity: sha512-QApC3js5/AwrF6VqWfGsNY9Y1qLC0LQDWcqOHEAhbl3CB4e5GMor2SpWaGOWBW+mmrkVCEymayLPCPIbx0tcQQ==} rehype-format@5.0.1: - resolution: - { - integrity: sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==, - } + resolution: {integrity: sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==} rehype-parse@9.0.1: - resolution: - { - integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==, - } + resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==} rehype-raw@7.0.0: - resolution: - { - integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==, - } + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} rehype-recma@1.0.0: - resolution: - { - integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==, - } + resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} rehype-stringify@10.0.1: - resolution: - { - integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==, - } + resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==} rehype@13.0.2: - resolution: - { - integrity: sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==, - } + resolution: {integrity: sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==} remark-directive@3.0.1: - resolution: - { - integrity: sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==, - } + resolution: {integrity: sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==} remark-gfm@4.0.1: - resolution: - { - integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==, - } + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} remark-mdx@3.1.0: - resolution: - { - integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==, - } + resolution: {integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==} remark-parse@11.0.0: - resolution: - { - integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==, - } + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} remark-rehype@11.1.2: - resolution: - { - integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==, - } + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} remark-smartypants@3.0.2: - resolution: - { - integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==, - } - engines: { node: ">=16.0.0" } + resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==} + engines: {node: '>=16.0.0'} remark-stringify@11.0.0: - resolution: - { - integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==, - } + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} restructure@3.0.2: - resolution: - { - integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==, - } + resolution: {integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==} retext-latin@4.0.0: - resolution: - { - integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==, - } + resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} retext-smartypants@6.2.0: - resolution: - { - integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==, - } + resolution: {integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==} retext-stringify@4.0.0: - resolution: - { - integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==, - } + resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} retext@9.0.0: - resolution: - { - integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==, - } + resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} rollup@4.40.0: - resolution: - { - integrity: sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==, - } - engines: { node: ">=18.0.0", npm: ">=8.0.0" } + resolution: {integrity: sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + safe-buffer@5.2.1: - resolution: - { - integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, - } + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} sax@1.4.1: - resolution: - { - integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==, - } + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} semver@7.7.1: - resolution: - { - integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} hasBin: true sharp@0.32.6: - resolution: - { - integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==, - } - engines: { node: ">=14.15.0" } + resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} + engines: {node: '>=14.15.0'} sharp@0.33.5: - resolution: - { - integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + engines: {node: '>= 0.4'} shiki@3.2.2: - resolution: - { - integrity: sha512-0qWBkM2t/0NXPRcVgtLhtHv6Ak3Q5yI4K/ggMqcgLRKm4+pCs3namgZlhlat/7u2CuqNtlShNs9lENOG6n7UaQ==, - } + resolution: {integrity: sha512-0qWBkM2t/0NXPRcVgtLhtHv6Ak3Q5yI4K/ggMqcgLRKm4+pCs3namgZlhlat/7u2CuqNtlShNs9lENOG6n7UaQ==} simple-concat@1.0.1: - resolution: - { - integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==, - } + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} simple-get@4.0.1: - resolution: - { - integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==, - } + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} simple-swizzle@0.2.2: - resolution: - { - integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==, - } + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} sisteransi@1.0.5: - resolution: - { - integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==, - } + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} sitemap@8.0.0: - resolution: - { - integrity: sha512-+AbdxhM9kJsHtruUF39bwS/B0Fytw6Fr1o4ZAIAEqA6cke2xcoO2GleBw9Zw7nRzILVEgz7zBM5GiTJjie1G9A==, - } - engines: { node: ">=14.0.0", npm: ">=6.0.0" } + resolution: {integrity: sha512-+AbdxhM9kJsHtruUF39bwS/B0Fytw6Fr1o4ZAIAEqA6cke2xcoO2GleBw9Zw7nRzILVEgz7zBM5GiTJjie1G9A==} + engines: {node: '>=14.0.0', npm: '>=6.0.0'} hasBin: true smol-toml@1.3.1: - resolution: - { - integrity: sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==, - } - engines: { node: ">= 18" } + resolution: {integrity: sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==} + engines: {node: '>= 18'} source-map-js@1.2.1: - resolution: - { - integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} source-map@0.7.4: - resolution: - { - integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} space-separated-tokens@2.0.2: - resolution: - { - integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==, - } + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} stream-replace-string@2.0.0: - resolution: - { - integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==, - } + resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} streamx@2.22.0: - resolution: - { - integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==, - } + resolution: {integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==} string-width@4.2.3: - resolution: - { - integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} string-width@7.2.0: - resolution: - { - integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} string_decoder@1.3.0: - resolution: - { - integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, - } + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} stringify-entities@4.0.4: - resolution: - { - integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==, - } + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} strip-ansi@6.0.1: - resolution: - { - integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} strip-ansi@7.1.0: - resolution: - { - integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} strip-json-comments@2.0.1: - resolution: - { - integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} style-to-js@1.1.16: - resolution: - { - integrity: sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==, - } + resolution: {integrity: sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==} style-to-object@1.0.8: - resolution: - { - integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==, - } + resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} tailwindcss@4.1.4: - resolution: - { - integrity: sha512-1ZIUqtPITFbv/DxRmDr5/agPqJwF69d24m9qmM1939TJehgY539CtzeZRjbLt5G6fSy/7YqqYsfvoTEw9xUI2A==, - } + resolution: {integrity: sha512-1ZIUqtPITFbv/DxRmDr5/agPqJwF69d24m9qmM1939TJehgY539CtzeZRjbLt5G6fSy/7YqqYsfvoTEw9xUI2A==} tapable@2.2.1: - resolution: - { - integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} tar-fs@2.1.2: - resolution: - { - integrity: sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==, - } + resolution: {integrity: sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==} tar-fs@3.0.8: - resolution: - { - integrity: sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==, - } + resolution: {integrity: sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==} tar-stream@2.2.0: - resolution: - { - integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} tar-stream@3.1.7: - resolution: - { - integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==, - } + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} text-decoder@1.2.3: - resolution: - { - integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==, - } + resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} tiny-inflate@1.0.3: - resolution: - { - integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==, - } + resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} tinyexec@0.3.2: - resolution: - { - integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==, - } + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} tinyglobby@0.2.12: - resolution: - { - integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==, - } - engines: { node: ">=12.0.0" } + resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} + engines: {node: '>=12.0.0'} tr46@0.0.3: - resolution: - { - integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, - } + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true trim-lines@3.0.1: - resolution: - { - integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==, - } + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} trough@2.2.0: - resolution: - { - integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==, - } + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} tsconfck@3.1.5: - resolution: - { - integrity: sha512-CLDfGgUp7XPswWnezWwsCRxNmgQjhYq3VXHM0/XIRxhVrKw0M1if9agzryh1QS3nxjCROvV+xWxoJO1YctzzWg==, - } - engines: { node: ^18 || >=20 } + resolution: {integrity: sha512-CLDfGgUp7XPswWnezWwsCRxNmgQjhYq3VXHM0/XIRxhVrKw0M1if9agzryh1QS3nxjCROvV+xWxoJO1YctzzWg==} + engines: {node: ^18 || >=20} hasBin: true peerDependencies: typescript: ^5.0.0 @@ -3307,184 +1953,126 @@ packages: optional: true tslib@2.8.1: - resolution: - { - integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, - } + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsx@4.20.5: + resolution: {integrity: sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw==} + engines: {node: '>=18.0.0'} + hasBin: true tunnel-agent@0.6.0: - resolution: - { - integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==, - } + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} type-fest@4.40.0: - resolution: - { - integrity: sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw==} + engines: {node: '>=16'} typescript@5.8.3: - resolution: - { - integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==, - } - engines: { node: ">=14.17" } + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} hasBin: true ufo@1.6.1: - resolution: - { - integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==, - } + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} ultrahtml@1.6.0: - resolution: - { - integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==, - } + resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} uncrypto@0.1.3: - resolution: - { - integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==, - } + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} unicode-properties@1.4.1: - resolution: - { - integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==, - } + resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==} unicode-trie@2.0.0: - resolution: - { - integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==, - } + resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} unified@11.0.5: - resolution: - { - integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==, - } + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} unifont@0.1.7: - resolution: - { - integrity: sha512-UyN6r/TUyl69iW/jhXaCtuwA6bP9ZSLhVViwgP8LH9EHRGk5FyIMDxvClqD5z2BV6MI9GMATzd0dyLqFxKkUmQ==, - } + resolution: {integrity: sha512-UyN6r/TUyl69iW/jhXaCtuwA6bP9ZSLhVViwgP8LH9EHRGk5FyIMDxvClqD5z2BV6MI9GMATzd0dyLqFxKkUmQ==} unist-util-find-after@5.0.0: - resolution: - { - integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==, - } + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} unist-util-is@6.0.0: - resolution: - { - integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==, - } + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} unist-util-modify-children@4.0.0: - resolution: - { - integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==, - } + resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==} unist-util-position-from-estree@2.0.0: - resolution: - { - integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==, - } + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} unist-util-position@5.0.0: - resolution: - { - integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==, - } + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} unist-util-remove-position@5.0.0: - resolution: - { - integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==, - } + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} unist-util-stringify-position@4.0.0: - resolution: - { - integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==, - } + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} unist-util-visit-children@3.0.0: - resolution: - { - integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==, - } + resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} unist-util-visit-parents@6.0.1: - resolution: - { - integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==, - } + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} unist-util-visit@5.0.0: - resolution: - { - integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==, - } + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} unstorage@1.15.0: - resolution: - { - integrity: sha512-m40eHdGY/gA6xAPqo8eaxqXgBuzQTlAKfmB1iF7oCKXE1HfwHwzDJBywK+qQGn52dta+bPlZluPF7++yR3p/bg==, - } + resolution: {integrity: sha512-m40eHdGY/gA6xAPqo8eaxqXgBuzQTlAKfmB1iF7oCKXE1HfwHwzDJBywK+qQGn52dta+bPlZluPF7++yR3p/bg==} peerDependencies: - "@azure/app-configuration": ^1.8.0 - "@azure/cosmos": ^4.2.0 - "@azure/data-tables": ^13.3.0 - "@azure/identity": ^4.6.0 - "@azure/keyvault-secrets": ^4.9.0 - "@azure/storage-blob": ^12.26.0 - "@capacitor/preferences": ^6.0.3 - "@deno/kv": ">=0.9.0" - "@netlify/blobs": ^6.5.0 || ^7.0.0 || ^8.1.0 - "@planetscale/database": ^1.19.0 - "@upstash/redis": ^1.34.3 - "@vercel/blob": ">=0.27.1" - "@vercel/kv": ^1.0.1 + '@azure/app-configuration': ^1.8.0 + '@azure/cosmos': ^4.2.0 + '@azure/data-tables': ^13.3.0 + '@azure/identity': ^4.6.0 + '@azure/keyvault-secrets': ^4.9.0 + '@azure/storage-blob': ^12.26.0 + '@capacitor/preferences': ^6.0.3 + '@deno/kv': '>=0.9.0' + '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 + '@planetscale/database': ^1.19.0 + '@upstash/redis': ^1.34.3 + '@vercel/blob': '>=0.27.1' + '@vercel/kv': ^1.0.1 aws4fetch: ^1.0.20 - db0: ">=0.2.1" + db0: '>=0.2.1' idb-keyval: ^6.2.1 ioredis: ^5.4.2 uploadthing: ^7.4.4 peerDependenciesMeta: - "@azure/app-configuration": + '@azure/app-configuration': optional: true - "@azure/cosmos": + '@azure/cosmos': optional: true - "@azure/data-tables": + '@azure/data-tables': optional: true - "@azure/identity": + '@azure/identity': optional: true - "@azure/keyvault-secrets": + '@azure/keyvault-secrets': optional: true - "@azure/storage-blob": + '@azure/storage-blob': optional: true - "@capacitor/preferences": + '@capacitor/preferences': optional: true - "@deno/kv": + '@deno/kv': optional: true - "@netlify/blobs": + '@netlify/blobs': optional: true - "@planetscale/database": + '@planetscale/database': optional: true - "@upstash/redis": + '@upstash/redis': optional: true - "@vercel/blob": + '@vercel/blob': optional: true - "@vercel/kv": + '@vercel/kv': optional: true aws4fetch: optional: true @@ -3498,50 +2086,35 @@ packages: optional: true util-deprecate@1.0.2: - resolution: - { - integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, - } + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} vfile-location@5.0.3: - resolution: - { - integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==, - } + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} vfile-message@4.0.2: - resolution: - { - integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==, - } + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} vfile@6.0.3: - resolution: - { - integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==, - } + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} vite@6.2.6: - resolution: - { - integrity: sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw==, - } - engines: { node: ^18.0.0 || ^20.0.0 || >=22.0.0 } + resolution: {integrity: sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: - "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: ">=1.21.0" - less: "*" + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' lightningcss: ^1.21.0 - sass: "*" - sass-embedded: "*" - stylus: "*" - sugarss: "*" + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' terser: ^5.16.0 tsx: ^4.8.1 yaml: ^2.4.2 peerDependenciesMeta: - "@types/node": + '@types/node': optional: true jiti: optional: true @@ -3565,10 +2138,7 @@ packages: optional: true vitefu@1.0.6: - resolution: - { - integrity: sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==, - } + resolution: {integrity: sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 peerDependenciesMeta: @@ -3576,122 +2146,87 @@ packages: optional: true web-namespaces@2.0.1: - resolution: - { - integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==, - } + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} webidl-conversions@3.0.1: - resolution: - { - integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, - } + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} whatwg-url@5.0.0: - resolution: - { - integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, - } + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} which-pm-runs@1.1.0: - resolution: - { - integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} + engines: {node: '>=4'} widest-line@5.0.0: - resolution: - { - integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} + engines: {node: '>=18'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} wrap-ansi@9.0.0: - resolution: - { - integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} wrappy@1.0.2: - resolution: - { - integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, - } + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} xxhash-wasm@1.1.0: - resolution: - { - integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==, - } + resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} yargs-parser@21.1.1: - resolution: - { - integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} yocto-queue@1.2.1: - resolution: - { - integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==, - } - engines: { node: ">=12.20" } + resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + engines: {node: '>=12.20'} yocto-spinner@0.2.1: - resolution: - { - integrity: sha512-lHHxjh0bXaLgdJy3cNnVb/F9myx3CkhrvSOEVTkaUgNMXnYFa2xYPVhtGnqhh3jErY2gParBOHallCbc7NrlZQ==, - } - engines: { node: ">=18.19" } + resolution: {integrity: sha512-lHHxjh0bXaLgdJy3cNnVb/F9myx3CkhrvSOEVTkaUgNMXnYFa2xYPVhtGnqhh3jErY2gParBOHallCbc7NrlZQ==} + engines: {node: '>=18.19'} yoctocolors@2.1.1: - resolution: - { - integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} + engines: {node: '>=18'} zod-to-json-schema@3.24.5: - resolution: - { - integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==, - } + resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} peerDependencies: zod: ^3.24.1 zod-to-ts@1.2.0: - resolution: - { - integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==, - } + resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} peerDependencies: typescript: ^4.9.4 || ^5.0.2 zod: ^3 zod@3.24.2: - resolution: - { - integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==, - } + resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} zwitch@2.0.4: - resolution: - { - integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==, - } + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} snapshots: - "@astrojs/compiler@2.11.0": {} - "@astrojs/internal-helpers@0.6.1": {} + '@astrojs/compiler@2.11.0': {} + + '@astrojs/internal-helpers@0.6.1': {} - "@astrojs/markdown-remark@6.3.1": + '@astrojs/markdown-remark@6.3.1': dependencies: - "@astrojs/internal-helpers": 0.6.1 - "@astrojs/prism": 3.2.0 + '@astrojs/internal-helpers': 0.6.1 + '@astrojs/prism': 3.2.0 github-slugger: 2.0.0 hast-util-from-html: 2.0.3 hast-util-to-text: 4.0.2 @@ -3714,12 +2249,12 @@ snapshots: transitivePeerDependencies: - supports-color - "@astrojs/mdx@4.2.4(astro@5.7.0(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(typescript@5.8.3))": + '@astrojs/mdx@4.2.4(astro@5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3))': dependencies: - "@astrojs/markdown-remark": 6.3.1 - "@mdx-js/mdx": 3.1.0(acorn@8.14.1) + '@astrojs/markdown-remark': 6.3.1 + '@mdx-js/mdx': 3.1.0(acorn@8.14.1) acorn: 8.14.1 - astro: 5.7.0(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(typescript@5.8.3) + astro: 5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3) es-module-lexer: 1.6.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 @@ -3733,31 +2268,31 @@ snapshots: transitivePeerDependencies: - supports-color - "@astrojs/prism@3.2.0": + '@astrojs/prism@3.2.0': dependencies: prismjs: 1.30.0 - "@astrojs/sitemap@3.3.0": + '@astrojs/sitemap@3.3.0': dependencies: sitemap: 8.0.0 stream-replace-string: 2.0.0 zod: 3.24.2 - "@astrojs/starlight-tailwind@4.0.0(@astrojs/starlight@0.33.2(astro@5.7.0(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(typescript@5.8.3)))(tailwindcss@4.1.4)": + '@astrojs/starlight-tailwind@4.0.0(@astrojs/starlight@0.33.2(astro@5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3)))(tailwindcss@4.1.4)': dependencies: - "@astrojs/starlight": 0.33.2(astro@5.7.0(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(typescript@5.8.3)) + '@astrojs/starlight': 0.33.2(astro@5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3)) tailwindcss: 4.1.4 - "@astrojs/starlight@0.33.2(astro@5.7.0(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(typescript@5.8.3))": + '@astrojs/starlight@0.33.2(astro@5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3))': dependencies: - "@astrojs/mdx": 4.2.4(astro@5.7.0(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(typescript@5.8.3)) - "@astrojs/sitemap": 3.3.0 - "@pagefind/default-ui": 1.3.0 - "@types/hast": 3.0.4 - "@types/js-yaml": 4.0.9 - "@types/mdast": 4.0.4 - astro: 5.7.0(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(typescript@5.8.3) - astro-expressive-code: 0.41.1(astro@5.7.0(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(typescript@5.8.3)) + '@astrojs/mdx': 4.2.4(astro@5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3)) + '@astrojs/sitemap': 3.3.0 + '@pagefind/default-ui': 1.3.0 + '@types/hast': 3.0.4 + '@types/js-yaml': 4.0.9 + '@types/mdast': 4.0.4 + astro: 5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3) + astro-expressive-code: 0.41.1(astro@5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.4 @@ -3779,7 +2314,7 @@ snapshots: transitivePeerDependencies: - supports-color - "@astrojs/telemetry@3.2.0": + '@astrojs/telemetry@3.2.0': dependencies: ci-info: 4.2.0 debug: 4.4.0 @@ -3791,26 +2326,26 @@ snapshots: transitivePeerDependencies: - supports-color - "@babel/helper-string-parser@7.25.9": {} + '@babel/helper-string-parser@7.25.9': {} - "@babel/helper-validator-identifier@7.25.9": {} + '@babel/helper-validator-identifier@7.25.9': {} - "@babel/parser@7.27.0": + '@babel/parser@7.27.0': dependencies: - "@babel/types": 7.27.0 + '@babel/types': 7.27.0 - "@babel/runtime@7.27.0": + '@babel/runtime@7.27.0': dependencies: regenerator-runtime: 0.14.1 - "@babel/types@7.27.0": + '@babel/types@7.27.0': dependencies: - "@babel/helper-string-parser": 7.25.9 - "@babel/helper-validator-identifier": 7.25.9 + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 - "@capsizecss/metrics@3.5.0": {} + '@capsizecss/metrics@3.5.0': {} - "@capsizecss/unpack@2.4.0": + '@capsizecss/unpack@2.4.0': dependencies: blob-to-buffer: 1.2.9 cross-fetch: 3.2.0 @@ -3818,91 +2353,91 @@ snapshots: transitivePeerDependencies: - encoding - "@ctrl/tinycolor@4.1.0": {} + '@ctrl/tinycolor@4.1.0': {} - "@emnapi/runtime@1.4.3": + '@emnapi/runtime@1.4.3': dependencies: tslib: 2.8.1 optional: true - "@esbuild/aix-ppc64@0.25.2": + '@esbuild/aix-ppc64@0.25.2': optional: true - "@esbuild/android-arm64@0.25.2": + '@esbuild/android-arm64@0.25.2': optional: true - "@esbuild/android-arm@0.25.2": + '@esbuild/android-arm@0.25.2': optional: true - "@esbuild/android-x64@0.25.2": + '@esbuild/android-x64@0.25.2': optional: true - "@esbuild/darwin-arm64@0.25.2": + '@esbuild/darwin-arm64@0.25.2': optional: true - "@esbuild/darwin-x64@0.25.2": + '@esbuild/darwin-x64@0.25.2': optional: true - "@esbuild/freebsd-arm64@0.25.2": + '@esbuild/freebsd-arm64@0.25.2': optional: true - "@esbuild/freebsd-x64@0.25.2": + '@esbuild/freebsd-x64@0.25.2': optional: true - "@esbuild/linux-arm64@0.25.2": + '@esbuild/linux-arm64@0.25.2': optional: true - "@esbuild/linux-arm@0.25.2": + '@esbuild/linux-arm@0.25.2': optional: true - "@esbuild/linux-ia32@0.25.2": + '@esbuild/linux-ia32@0.25.2': optional: true - "@esbuild/linux-loong64@0.25.2": + '@esbuild/linux-loong64@0.25.2': optional: true - "@esbuild/linux-mips64el@0.25.2": + '@esbuild/linux-mips64el@0.25.2': optional: true - "@esbuild/linux-ppc64@0.25.2": + '@esbuild/linux-ppc64@0.25.2': optional: true - "@esbuild/linux-riscv64@0.25.2": + '@esbuild/linux-riscv64@0.25.2': optional: true - "@esbuild/linux-s390x@0.25.2": + '@esbuild/linux-s390x@0.25.2': optional: true - "@esbuild/linux-x64@0.25.2": + '@esbuild/linux-x64@0.25.2': optional: true - "@esbuild/netbsd-arm64@0.25.2": + '@esbuild/netbsd-arm64@0.25.2': optional: true - "@esbuild/netbsd-x64@0.25.2": + '@esbuild/netbsd-x64@0.25.2': optional: true - "@esbuild/openbsd-arm64@0.25.2": + '@esbuild/openbsd-arm64@0.25.2': optional: true - "@esbuild/openbsd-x64@0.25.2": + '@esbuild/openbsd-x64@0.25.2': optional: true - "@esbuild/sunos-x64@0.25.2": + '@esbuild/sunos-x64@0.25.2': optional: true - "@esbuild/win32-arm64@0.25.2": + '@esbuild/win32-arm64@0.25.2': optional: true - "@esbuild/win32-ia32@0.25.2": + '@esbuild/win32-ia32@0.25.2': optional: true - "@esbuild/win32-x64@0.25.2": + '@esbuild/win32-x64@0.25.2': optional: true - "@expressive-code/core@0.41.1": + '@expressive-code/core@0.41.1': dependencies: - "@ctrl/tinycolor": 4.1.0 + '@ctrl/tinycolor': 4.1.0 hast-util-select: 6.0.4 hast-util-to-html: 9.0.5 hast-util-to-text: 4.0.2 @@ -3912,102 +2447,102 @@ snapshots: unist-util-visit: 5.0.0 unist-util-visit-parents: 6.0.1 - "@expressive-code/plugin-frames@0.41.1": + '@expressive-code/plugin-frames@0.41.1': dependencies: - "@expressive-code/core": 0.41.1 + '@expressive-code/core': 0.41.1 - "@expressive-code/plugin-shiki@0.41.1": + '@expressive-code/plugin-shiki@0.41.1': dependencies: - "@expressive-code/core": 0.41.1 + '@expressive-code/core': 0.41.1 shiki: 3.2.2 - "@expressive-code/plugin-text-markers@0.41.1": + '@expressive-code/plugin-text-markers@0.41.1': dependencies: - "@expressive-code/core": 0.41.1 + '@expressive-code/core': 0.41.1 - "@img/sharp-darwin-arm64@0.33.5": + '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: - "@img/sharp-libvips-darwin-arm64": 1.0.4 + '@img/sharp-libvips-darwin-arm64': 1.0.4 optional: true - "@img/sharp-darwin-x64@0.33.5": + '@img/sharp-darwin-x64@0.33.5': optionalDependencies: - "@img/sharp-libvips-darwin-x64": 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 optional: true - "@img/sharp-libvips-darwin-arm64@1.0.4": + '@img/sharp-libvips-darwin-arm64@1.0.4': optional: true - "@img/sharp-libvips-darwin-x64@1.0.4": + '@img/sharp-libvips-darwin-x64@1.0.4': optional: true - "@img/sharp-libvips-linux-arm64@1.0.4": + '@img/sharp-libvips-linux-arm64@1.0.4': optional: true - "@img/sharp-libvips-linux-arm@1.0.5": + '@img/sharp-libvips-linux-arm@1.0.5': optional: true - "@img/sharp-libvips-linux-s390x@1.0.4": + '@img/sharp-libvips-linux-s390x@1.0.4': optional: true - "@img/sharp-libvips-linux-x64@1.0.4": + '@img/sharp-libvips-linux-x64@1.0.4': optional: true - "@img/sharp-libvips-linuxmusl-arm64@1.0.4": + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': optional: true - "@img/sharp-libvips-linuxmusl-x64@1.0.4": + '@img/sharp-libvips-linuxmusl-x64@1.0.4': optional: true - "@img/sharp-linux-arm64@0.33.5": + '@img/sharp-linux-arm64@0.33.5': optionalDependencies: - "@img/sharp-libvips-linux-arm64": 1.0.4 + '@img/sharp-libvips-linux-arm64': 1.0.4 optional: true - "@img/sharp-linux-arm@0.33.5": + '@img/sharp-linux-arm@0.33.5': optionalDependencies: - "@img/sharp-libvips-linux-arm": 1.0.5 + '@img/sharp-libvips-linux-arm': 1.0.5 optional: true - "@img/sharp-linux-s390x@0.33.5": + '@img/sharp-linux-s390x@0.33.5': optionalDependencies: - "@img/sharp-libvips-linux-s390x": 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 optional: true - "@img/sharp-linux-x64@0.33.5": + '@img/sharp-linux-x64@0.33.5': optionalDependencies: - "@img/sharp-libvips-linux-x64": 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 optional: true - "@img/sharp-linuxmusl-arm64@0.33.5": + '@img/sharp-linuxmusl-arm64@0.33.5': optionalDependencies: - "@img/sharp-libvips-linuxmusl-arm64": 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 optional: true - "@img/sharp-linuxmusl-x64@0.33.5": + '@img/sharp-linuxmusl-x64@0.33.5': optionalDependencies: - "@img/sharp-libvips-linuxmusl-x64": 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 optional: true - "@img/sharp-wasm32@0.33.5": + '@img/sharp-wasm32@0.33.5': dependencies: - "@emnapi/runtime": 1.4.3 + '@emnapi/runtime': 1.4.3 optional: true - "@img/sharp-win32-ia32@0.33.5": + '@img/sharp-win32-ia32@0.33.5': optional: true - "@img/sharp-win32-x64@0.33.5": + '@img/sharp-win32-x64@0.33.5': optional: true - "@jridgewell/sourcemap-codec@1.5.0": {} + '@jridgewell/sourcemap-codec@1.5.0': {} - "@mdx-js/mdx@3.1.0(acorn@8.14.1)": + '@mdx-js/mdx@3.1.0(acorn@8.14.1)': dependencies: - "@types/estree": 1.0.7 - "@types/estree-jsx": 1.0.5 - "@types/hast": 3.0.4 - "@types/mdx": 2.0.13 + '@types/estree': 1.0.7 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdx': 2.0.13 collapse-white-space: 2.1.0 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 @@ -4032,234 +2567,238 @@ snapshots: - acorn - supports-color - "@oslojs/encoding@1.1.0": {} + '@oslojs/encoding@1.1.0': {} - "@pagefind/darwin-arm64@1.3.0": + '@pagefind/darwin-arm64@1.3.0': optional: true - "@pagefind/darwin-x64@1.3.0": + '@pagefind/darwin-x64@1.3.0': optional: true - "@pagefind/default-ui@1.3.0": {} + '@pagefind/default-ui@1.3.0': {} - "@pagefind/linux-arm64@1.3.0": + '@pagefind/linux-arm64@1.3.0': optional: true - "@pagefind/linux-x64@1.3.0": + '@pagefind/linux-x64@1.3.0': optional: true - "@pagefind/windows-x64@1.3.0": + '@pagefind/windows-x64@1.3.0': optional: true - "@rollup/pluginutils@5.1.4(rollup@4.40.0)": + '@rollup/pluginutils@5.1.4(rollup@4.40.0)': dependencies: - "@types/estree": 1.0.7 + '@types/estree': 1.0.7 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: rollup: 4.40.0 - "@rollup/rollup-android-arm-eabi@4.40.0": + '@rollup/rollup-android-arm-eabi@4.40.0': optional: true - "@rollup/rollup-android-arm64@4.40.0": + '@rollup/rollup-android-arm64@4.40.0': optional: true - "@rollup/rollup-darwin-arm64@4.40.0": + '@rollup/rollup-darwin-arm64@4.40.0': optional: true - "@rollup/rollup-darwin-x64@4.40.0": + '@rollup/rollup-darwin-x64@4.40.0': optional: true - "@rollup/rollup-freebsd-arm64@4.40.0": + '@rollup/rollup-freebsd-arm64@4.40.0': optional: true - "@rollup/rollup-freebsd-x64@4.40.0": + '@rollup/rollup-freebsd-x64@4.40.0': optional: true - "@rollup/rollup-linux-arm-gnueabihf@4.40.0": + '@rollup/rollup-linux-arm-gnueabihf@4.40.0': optional: true - "@rollup/rollup-linux-arm-musleabihf@4.40.0": + '@rollup/rollup-linux-arm-musleabihf@4.40.0': optional: true - "@rollup/rollup-linux-arm64-gnu@4.40.0": + '@rollup/rollup-linux-arm64-gnu@4.40.0': optional: true - "@rollup/rollup-linux-arm64-musl@4.40.0": + '@rollup/rollup-linux-arm64-musl@4.40.0': optional: true - "@rollup/rollup-linux-loongarch64-gnu@4.40.0": + '@rollup/rollup-linux-loongarch64-gnu@4.40.0': optional: true - "@rollup/rollup-linux-powerpc64le-gnu@4.40.0": + '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': optional: true - "@rollup/rollup-linux-riscv64-gnu@4.40.0": + '@rollup/rollup-linux-riscv64-gnu@4.40.0': optional: true - "@rollup/rollup-linux-riscv64-musl@4.40.0": + '@rollup/rollup-linux-riscv64-musl@4.40.0': optional: true - "@rollup/rollup-linux-s390x-gnu@4.40.0": + '@rollup/rollup-linux-s390x-gnu@4.40.0': optional: true - "@rollup/rollup-linux-x64-gnu@4.40.0": + '@rollup/rollup-linux-x64-gnu@4.40.0': optional: true - "@rollup/rollup-linux-x64-musl@4.40.0": + '@rollup/rollup-linux-x64-musl@4.40.0': optional: true - "@rollup/rollup-win32-arm64-msvc@4.40.0": + '@rollup/rollup-win32-arm64-msvc@4.40.0': optional: true - "@rollup/rollup-win32-ia32-msvc@4.40.0": + '@rollup/rollup-win32-ia32-msvc@4.40.0': optional: true - "@rollup/rollup-win32-x64-msvc@4.40.0": + '@rollup/rollup-win32-x64-msvc@4.40.0': optional: true - "@shikijs/core@3.2.2": + '@shikijs/core@3.2.2': dependencies: - "@shikijs/types": 3.2.2 - "@shikijs/vscode-textmate": 10.0.2 - "@types/hast": 3.0.4 + '@shikijs/types': 3.2.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - "@shikijs/engine-javascript@3.2.2": + '@shikijs/engine-javascript@3.2.2': dependencies: - "@shikijs/types": 3.2.2 - "@shikijs/vscode-textmate": 10.0.2 + '@shikijs/types': 3.2.2 + '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.2.0 - "@shikijs/engine-oniguruma@3.2.2": + '@shikijs/engine-oniguruma@3.2.2': dependencies: - "@shikijs/types": 3.2.2 - "@shikijs/vscode-textmate": 10.0.2 + '@shikijs/types': 3.2.2 + '@shikijs/vscode-textmate': 10.0.2 - "@shikijs/langs@3.2.2": + '@shikijs/langs@3.2.2': dependencies: - "@shikijs/types": 3.2.2 + '@shikijs/types': 3.2.2 - "@shikijs/themes@3.2.2": + '@shikijs/themes@3.2.2': dependencies: - "@shikijs/types": 3.2.2 + '@shikijs/types': 3.2.2 - "@shikijs/types@3.2.2": + '@shikijs/types@3.2.2': dependencies: - "@shikijs/vscode-textmate": 10.0.2 - "@types/hast": 3.0.4 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 - "@shikijs/vscode-textmate@10.0.2": {} + '@shikijs/vscode-textmate@10.0.2': {} - "@swc/helpers@0.5.17": + '@swc/helpers@0.5.17': dependencies: tslib: 2.8.1 - "@tailwindcss/node@4.1.4": + '@tailwindcss/node@4.1.4': dependencies: enhanced-resolve: 5.18.1 jiti: 2.4.2 lightningcss: 1.29.2 tailwindcss: 4.1.4 - "@tailwindcss/oxide-android-arm64@4.1.4": + '@tailwindcss/oxide-android-arm64@4.1.4': optional: true - "@tailwindcss/oxide-darwin-arm64@4.1.4": + '@tailwindcss/oxide-darwin-arm64@4.1.4': optional: true - "@tailwindcss/oxide-darwin-x64@4.1.4": + '@tailwindcss/oxide-darwin-x64@4.1.4': optional: true - "@tailwindcss/oxide-freebsd-x64@4.1.4": + '@tailwindcss/oxide-freebsd-x64@4.1.4': optional: true - "@tailwindcss/oxide-linux-arm-gnueabihf@4.1.4": + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.4': optional: true - "@tailwindcss/oxide-linux-arm64-gnu@4.1.4": + '@tailwindcss/oxide-linux-arm64-gnu@4.1.4': optional: true - "@tailwindcss/oxide-linux-arm64-musl@4.1.4": + '@tailwindcss/oxide-linux-arm64-musl@4.1.4': optional: true - "@tailwindcss/oxide-linux-x64-gnu@4.1.4": + '@tailwindcss/oxide-linux-x64-gnu@4.1.4': optional: true - "@tailwindcss/oxide-linux-x64-musl@4.1.4": + '@tailwindcss/oxide-linux-x64-musl@4.1.4': optional: true - "@tailwindcss/oxide-wasm32-wasi@4.1.4": + '@tailwindcss/oxide-wasm32-wasi@4.1.4': optional: true - "@tailwindcss/oxide-win32-arm64-msvc@4.1.4": + '@tailwindcss/oxide-win32-arm64-msvc@4.1.4': optional: true - "@tailwindcss/oxide-win32-x64-msvc@4.1.4": + '@tailwindcss/oxide-win32-x64-msvc@4.1.4': optional: true - "@tailwindcss/oxide@4.1.4": + '@tailwindcss/oxide@4.1.4': optionalDependencies: - "@tailwindcss/oxide-android-arm64": 4.1.4 - "@tailwindcss/oxide-darwin-arm64": 4.1.4 - "@tailwindcss/oxide-darwin-x64": 4.1.4 - "@tailwindcss/oxide-freebsd-x64": 4.1.4 - "@tailwindcss/oxide-linux-arm-gnueabihf": 4.1.4 - "@tailwindcss/oxide-linux-arm64-gnu": 4.1.4 - "@tailwindcss/oxide-linux-arm64-musl": 4.1.4 - "@tailwindcss/oxide-linux-x64-gnu": 4.1.4 - "@tailwindcss/oxide-linux-x64-musl": 4.1.4 - "@tailwindcss/oxide-wasm32-wasi": 4.1.4 - "@tailwindcss/oxide-win32-arm64-msvc": 4.1.4 - "@tailwindcss/oxide-win32-x64-msvc": 4.1.4 - - "@tailwindcss/vite@4.1.4(vite@6.2.6(jiti@2.4.2)(lightningcss@1.29.2))": - dependencies: - "@tailwindcss/node": 4.1.4 - "@tailwindcss/oxide": 4.1.4 + '@tailwindcss/oxide-android-arm64': 4.1.4 + '@tailwindcss/oxide-darwin-arm64': 4.1.4 + '@tailwindcss/oxide-darwin-x64': 4.1.4 + '@tailwindcss/oxide-freebsd-x64': 4.1.4 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.4 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.4 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.4 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.4 + '@tailwindcss/oxide-linux-x64-musl': 4.1.4 + '@tailwindcss/oxide-wasm32-wasi': 4.1.4 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.4 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.4 + + '@tailwindcss/vite@4.1.4(vite@6.2.6(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.20.5))': + dependencies: + '@tailwindcss/node': 4.1.4 + '@tailwindcss/oxide': 4.1.4 tailwindcss: 4.1.4 - vite: 6.2.6(jiti@2.4.2)(lightningcss@1.29.2) + vite: 6.2.6(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.20.5) - "@types/debug@4.1.12": + '@types/debug@4.1.12': dependencies: - "@types/ms": 2.1.0 + '@types/ms': 2.1.0 - "@types/estree-jsx@1.0.5": + '@types/estree-jsx@1.0.5': dependencies: - "@types/estree": 1.0.7 + '@types/estree': 1.0.7 - "@types/estree@1.0.7": {} + '@types/estree@1.0.7': {} - "@types/hast@3.0.4": + '@types/hast@3.0.4': dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 - "@types/js-yaml@4.0.9": {} + '@types/js-yaml@4.0.9': {} - "@types/mdast@4.0.4": + '@types/mdast@4.0.4': dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 - "@types/mdx@2.0.13": {} + '@types/mdx@2.0.13': {} - "@types/ms@2.1.0": {} + '@types/ms@2.1.0': {} - "@types/nlcst@2.0.3": + '@types/nlcst@2.0.3': dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 - "@types/node@17.0.45": {} + '@types/node@17.0.45': {} - "@types/sax@1.2.7": + '@types/node@22.18.1': dependencies: - "@types/node": 17.0.45 + undici-types: 6.21.0 - "@types/unist@2.0.11": {} + '@types/sax@1.2.7': + dependencies: + '@types/node': 22.18.1 + + '@types/unist@2.0.11': {} - "@types/unist@3.0.3": {} + '@types/unist@3.0.3': {} - "@ungap/structured-clone@1.3.0": {} + '@ungap/structured-clone@1.3.0': {} acorn-jsx@5.3.2(acorn@8.14.1): dependencies: @@ -4275,6 +2814,10 @@ snapshots: ansi-regex@6.1.0: {} + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + ansi-styles@6.2.1: {} anymatch@3.1.3: @@ -4292,21 +2835,21 @@ snapshots: astring@1.9.0: {} - astro-expressive-code@0.41.1(astro@5.7.0(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(typescript@5.8.3)): + astro-expressive-code@0.41.1(astro@5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3)): dependencies: - astro: 5.7.0(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(typescript@5.8.3) + astro: 5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3) rehype-expressive-code: 0.41.1 - astro@5.7.0(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(typescript@5.8.3): + astro@5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3): dependencies: - "@astrojs/compiler": 2.11.0 - "@astrojs/internal-helpers": 0.6.1 - "@astrojs/markdown-remark": 6.3.1 - "@astrojs/telemetry": 3.2.0 - "@capsizecss/metrics": 3.5.0 - "@capsizecss/unpack": 2.4.0 - "@oslojs/encoding": 1.1.0 - "@rollup/pluginutils": 5.1.4(rollup@4.40.0) + '@astrojs/compiler': 2.11.0 + '@astrojs/internal-helpers': 0.6.1 + '@astrojs/markdown-remark': 6.3.1 + '@astrojs/telemetry': 3.2.0 + '@capsizecss/metrics': 3.5.0 + '@capsizecss/unpack': 2.4.0 + '@oslojs/encoding': 1.1.0 + '@rollup/pluginutils': 5.1.4(rollup@4.40.0) acorn: 8.14.1 aria-query: 5.3.2 axobject-query: 4.1.0 @@ -4351,8 +2894,8 @@ snapshots: unist-util-visit: 5.0.0 unstorage: 1.15.0 vfile: 6.0.3 - vite: 6.2.6(jiti@2.4.2)(lightningcss@1.29.2) - vitefu: 1.0.6(vite@6.2.6(jiti@2.4.2)(lightningcss@1.29.2)) + vite: 6.2.6(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.20.5) + vitefu: 1.0.6(vite@6.2.6(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.20.5)) xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 yocto-spinner: 0.2.1 @@ -4362,20 +2905,20 @@ snapshots: optionalDependencies: sharp: 0.33.5 transitivePeerDependencies: - - "@azure/app-configuration" - - "@azure/cosmos" - - "@azure/data-tables" - - "@azure/identity" - - "@azure/keyvault-secrets" - - "@azure/storage-blob" - - "@capacitor/preferences" - - "@deno/kv" - - "@netlify/blobs" - - "@planetscale/database" - - "@types/node" - - "@upstash/redis" - - "@vercel/blob" - - "@vercel/kv" + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@types/node' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' - aws4fetch - db0 - encoding @@ -4473,6 +3016,11 @@ snapshots: ccount@2.0.1: {} + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + chalk@5.4.1: {} character-entities-html4@2.1.0: {} @@ -4493,6 +3041,12 @@ snapshots: cli-boxes@3.0.0: {} + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + clone@2.1.2: {} clsx@2.1.1: {} @@ -4519,6 +3073,15 @@ snapshots: common-ancestor-path@1.0.1: {} + concurrently@9.2.1: + dependencies: + chalk: 4.1.2 + rxjs: 7.8.2 + shell-quote: 1.8.3 + supports-color: 8.1.1 + tree-kill: 1.2.2 + yargs: 17.7.2 + cookie-es@1.2.2: {} cookie@1.0.2: {} @@ -4605,55 +3168,57 @@ snapshots: esast-util-from-estree@2.0.0: dependencies: - "@types/estree-jsx": 1.0.5 + '@types/estree-jsx': 1.0.5 devlop: 1.1.0 estree-util-visit: 2.0.0 unist-util-position-from-estree: 2.0.0 esast-util-from-js@2.0.1: dependencies: - "@types/estree-jsx": 1.0.5 + '@types/estree-jsx': 1.0.5 acorn: 8.14.1 esast-util-from-estree: 2.0.0 vfile-message: 4.0.2 esbuild@0.25.2: optionalDependencies: - "@esbuild/aix-ppc64": 0.25.2 - "@esbuild/android-arm": 0.25.2 - "@esbuild/android-arm64": 0.25.2 - "@esbuild/android-x64": 0.25.2 - "@esbuild/darwin-arm64": 0.25.2 - "@esbuild/darwin-x64": 0.25.2 - "@esbuild/freebsd-arm64": 0.25.2 - "@esbuild/freebsd-x64": 0.25.2 - "@esbuild/linux-arm": 0.25.2 - "@esbuild/linux-arm64": 0.25.2 - "@esbuild/linux-ia32": 0.25.2 - "@esbuild/linux-loong64": 0.25.2 - "@esbuild/linux-mips64el": 0.25.2 - "@esbuild/linux-ppc64": 0.25.2 - "@esbuild/linux-riscv64": 0.25.2 - "@esbuild/linux-s390x": 0.25.2 - "@esbuild/linux-x64": 0.25.2 - "@esbuild/netbsd-arm64": 0.25.2 - "@esbuild/netbsd-x64": 0.25.2 - "@esbuild/openbsd-arm64": 0.25.2 - "@esbuild/openbsd-x64": 0.25.2 - "@esbuild/sunos-x64": 0.25.2 - "@esbuild/win32-arm64": 0.25.2 - "@esbuild/win32-ia32": 0.25.2 - "@esbuild/win32-x64": 0.25.2 + '@esbuild/aix-ppc64': 0.25.2 + '@esbuild/android-arm': 0.25.2 + '@esbuild/android-arm64': 0.25.2 + '@esbuild/android-x64': 0.25.2 + '@esbuild/darwin-arm64': 0.25.2 + '@esbuild/darwin-x64': 0.25.2 + '@esbuild/freebsd-arm64': 0.25.2 + '@esbuild/freebsd-x64': 0.25.2 + '@esbuild/linux-arm': 0.25.2 + '@esbuild/linux-arm64': 0.25.2 + '@esbuild/linux-ia32': 0.25.2 + '@esbuild/linux-loong64': 0.25.2 + '@esbuild/linux-mips64el': 0.25.2 + '@esbuild/linux-ppc64': 0.25.2 + '@esbuild/linux-riscv64': 0.25.2 + '@esbuild/linux-s390x': 0.25.2 + '@esbuild/linux-x64': 0.25.2 + '@esbuild/netbsd-arm64': 0.25.2 + '@esbuild/netbsd-x64': 0.25.2 + '@esbuild/openbsd-arm64': 0.25.2 + '@esbuild/openbsd-x64': 0.25.2 + '@esbuild/sunos-x64': 0.25.2 + '@esbuild/win32-arm64': 0.25.2 + '@esbuild/win32-ia32': 0.25.2 + '@esbuild/win32-x64': 0.25.2 + + escalade@3.2.0: {} escape-string-regexp@5.0.0: {} estree-util-attach-comments@3.0.0: dependencies: - "@types/estree": 1.0.7 + '@types/estree': 1.0.7 estree-util-build-jsx@3.0.1: dependencies: - "@types/estree-jsx": 1.0.5 + '@types/estree-jsx': 1.0.5 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 estree-walker: 3.0.3 @@ -4662,25 +3227,25 @@ snapshots: estree-util-scope@1.0.0: dependencies: - "@types/estree": 1.0.7 + '@types/estree': 1.0.7 devlop: 1.1.0 estree-util-to-js@2.0.0: dependencies: - "@types/estree-jsx": 1.0.5 + '@types/estree-jsx': 1.0.5 astring: 1.9.0 source-map: 0.7.4 estree-util-visit@2.0.0: dependencies: - "@types/estree-jsx": 1.0.5 - "@types/unist": 3.0.3 + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.3 estree-walker@2.0.2: {} estree-walker@3.0.3: dependencies: - "@types/estree": 1.0.7 + '@types/estree': 1.0.7 eventemitter3@5.0.1: {} @@ -4688,10 +3253,10 @@ snapshots: expressive-code@0.41.1: dependencies: - "@expressive-code/core": 0.41.1 - "@expressive-code/plugin-frames": 0.41.1 - "@expressive-code/plugin-shiki": 0.41.1 - "@expressive-code/plugin-text-markers": 0.41.1 + '@expressive-code/core': 0.41.1 + '@expressive-code/plugin-frames': 0.41.1 + '@expressive-code/plugin-shiki': 0.41.1 + '@expressive-code/plugin-text-markers': 0.41.1 extend@3.0.2: {} @@ -4707,7 +3272,7 @@ snapshots: fontkit@2.0.4: dependencies: - "@swc/helpers": 0.5.17 + '@swc/helpers': 0.5.17 brotli: 1.3.3 clone: 2.1.2 dfa: 1.2.0 @@ -4722,8 +3287,14 @@ snapshots: fsevents@2.3.3: optional: true + get-caller-file@2.0.5: {} + get-east-asian-width@1.3.0: {} + get-tsconfig@4.10.1: + dependencies: + resolve-pkg-maps: 1.0.0 + github-from-package@0.0.0: {} github-slugger@2.0.0: {} @@ -4742,14 +3313,16 @@ snapshots: ufo: 1.6.1 uncrypto: 0.1.3 + has-flag@4.0.0: {} + hast-util-embedded@3.0.0: dependencies: - "@types/hast": 3.0.4 + '@types/hast': 3.0.4 hast-util-is-element: 3.0.0 hast-util-format@1.1.0: dependencies: - "@types/hast": 3.0.4 + '@types/hast': 3.0.4 hast-util-embedded: 3.0.0 hast-util-minify-whitespace: 1.0.1 hast-util-phrasing: 3.0.1 @@ -4759,7 +3332,7 @@ snapshots: hast-util-from-html@2.0.3: dependencies: - "@types/hast": 3.0.4 + '@types/hast': 3.0.4 devlop: 1.1.0 hast-util-from-parse5: 8.0.3 parse5: 7.2.1 @@ -4768,8 +3341,8 @@ snapshots: hast-util-from-parse5@8.0.3: dependencies: - "@types/hast": 3.0.4 - "@types/unist": 3.0.3 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 devlop: 1.1.0 hastscript: 9.0.1 property-information: 7.0.0 @@ -4779,19 +3352,19 @@ snapshots: hast-util-has-property@3.0.0: dependencies: - "@types/hast": 3.0.4 + '@types/hast': 3.0.4 hast-util-is-body-ok-link@3.0.1: dependencies: - "@types/hast": 3.0.4 + '@types/hast': 3.0.4 hast-util-is-element@3.0.0: dependencies: - "@types/hast": 3.0.4 + '@types/hast': 3.0.4 hast-util-minify-whitespace@1.0.1: dependencies: - "@types/hast": 3.0.4 + '@types/hast': 3.0.4 hast-util-embedded: 3.0.0 hast-util-is-element: 3.0.0 hast-util-whitespace: 3.0.0 @@ -4799,11 +3372,11 @@ snapshots: hast-util-parse-selector@4.0.0: dependencies: - "@types/hast": 3.0.4 + '@types/hast': 3.0.4 hast-util-phrasing@3.0.1: dependencies: - "@types/hast": 3.0.4 + '@types/hast': 3.0.4 hast-util-embedded: 3.0.0 hast-util-has-property: 3.0.0 hast-util-is-body-ok-link: 3.0.1 @@ -4811,9 +3384,9 @@ snapshots: hast-util-raw@9.1.0: dependencies: - "@types/hast": 3.0.4 - "@types/unist": 3.0.3 - "@ungap/structured-clone": 1.3.0 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + '@ungap/structured-clone': 1.3.0 hast-util-from-parse5: 8.0.3 hast-util-to-parse5: 8.0.0 html-void-elements: 3.0.0 @@ -4827,8 +3400,8 @@ snapshots: hast-util-select@6.0.4: dependencies: - "@types/hast": 3.0.4 - "@types/unist": 3.0.3 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 bcp-47-match: 2.0.3 comma-separated-tokens: 2.0.3 css-selector-parser: 3.1.2 @@ -4845,9 +3418,9 @@ snapshots: hast-util-to-estree@3.1.3: dependencies: - "@types/estree": 1.0.7 - "@types/estree-jsx": 1.0.5 - "@types/hast": 3.0.4 + '@types/estree': 1.0.7 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 devlop: 1.1.0 estree-util-attach-comments: 3.0.0 @@ -4866,8 +3439,8 @@ snapshots: hast-util-to-html@9.0.5: dependencies: - "@types/hast": 3.0.4 - "@types/unist": 3.0.3 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 ccount: 2.0.1 comma-separated-tokens: 2.0.3 hast-util-whitespace: 3.0.0 @@ -4880,9 +3453,9 @@ snapshots: hast-util-to-jsx-runtime@2.3.6: dependencies: - "@types/estree": 1.0.7 - "@types/hast": 3.0.4 - "@types/unist": 3.0.3 + '@types/estree': 1.0.7 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 comma-separated-tokens: 2.0.3 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 @@ -4900,7 +3473,7 @@ snapshots: hast-util-to-parse5@8.0.0: dependencies: - "@types/hast": 3.0.4 + '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 devlop: 1.1.0 property-information: 6.5.0 @@ -4910,22 +3483,22 @@ snapshots: hast-util-to-string@3.0.1: dependencies: - "@types/hast": 3.0.4 + '@types/hast': 3.0.4 hast-util-to-text@4.0.2: dependencies: - "@types/hast": 3.0.4 - "@types/unist": 3.0.3 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 hast-util-is-element: 3.0.0 unist-util-find-after: 5.0.0 hast-util-whitespace@3.0.0: dependencies: - "@types/hast": 3.0.4 + '@types/hast': 3.0.4 hastscript@9.0.1: dependencies: - "@types/hast": 3.0.4 + '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 property-information: 7.0.0 @@ -4941,7 +3514,7 @@ snapshots: i18next@23.16.8: dependencies: - "@babel/runtime": 7.27.0 + '@babel/runtime': 7.27.0 ieee754@1.2.1: {} @@ -5045,12 +3618,12 @@ snapshots: magic-string@0.30.17: dependencies: - "@jridgewell/sourcemap-codec": 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.0 magicast@0.3.5: dependencies: - "@babel/parser": 7.27.0 - "@babel/types": 7.27.0 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 source-map-js: 1.2.1 markdown-extensions@2.0.0: {} @@ -5059,14 +3632,14 @@ snapshots: mdast-util-definitions@6.0.0: dependencies: - "@types/mdast": 4.0.4 - "@types/unist": 3.0.3 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 unist-util-visit: 5.0.0 mdast-util-directive@3.1.0: dependencies: - "@types/mdast": 4.0.4 - "@types/unist": 3.0.3 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2 @@ -5079,15 +3652,15 @@ snapshots: mdast-util-find-and-replace@3.0.2: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 mdast-util-from-markdown@2.0.2: dependencies: - "@types/mdast": 4.0.4 - "@types/unist": 3.0.3 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 decode-named-character-reference: 1.1.0 devlop: 1.1.0 mdast-util-to-string: 4.0.0 @@ -5103,7 +3676,7 @@ snapshots: mdast-util-gfm-autolink-literal@2.0.1: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 ccount: 2.0.1 devlop: 1.1.0 mdast-util-find-and-replace: 3.0.2 @@ -5111,7 +3684,7 @@ snapshots: mdast-util-gfm-footnote@2.1.0: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2 mdast-util-to-markdown: 2.1.2 @@ -5121,7 +3694,7 @@ snapshots: mdast-util-gfm-strikethrough@2.0.0: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 mdast-util-from-markdown: 2.0.2 mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: @@ -5129,7 +3702,7 @@ snapshots: mdast-util-gfm-table@2.0.0: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 devlop: 1.1.0 markdown-table: 3.0.4 mdast-util-from-markdown: 2.0.2 @@ -5139,7 +3712,7 @@ snapshots: mdast-util-gfm-task-list-item@2.0.0: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2 mdast-util-to-markdown: 2.1.2 @@ -5160,9 +3733,9 @@ snapshots: mdast-util-mdx-expression@2.0.1: dependencies: - "@types/estree-jsx": 1.0.5 - "@types/hast": 3.0.4 - "@types/mdast": 4.0.4 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2 mdast-util-to-markdown: 2.1.2 @@ -5171,10 +3744,10 @@ snapshots: mdast-util-mdx-jsx@3.2.0: dependencies: - "@types/estree-jsx": 1.0.5 - "@types/hast": 3.0.4 - "@types/mdast": 4.0.4 - "@types/unist": 3.0.3 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2 @@ -5198,9 +3771,9 @@ snapshots: mdast-util-mdxjs-esm@2.0.1: dependencies: - "@types/estree-jsx": 1.0.5 - "@types/hast": 3.0.4 - "@types/mdast": 4.0.4 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2 mdast-util-to-markdown: 2.1.2 @@ -5209,14 +3782,14 @@ snapshots: mdast-util-phrasing@4.1.0: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 unist-util-is: 6.0.0 mdast-util-to-hast@13.2.0: dependencies: - "@types/hast": 3.0.4 - "@types/mdast": 4.0.4 - "@ungap/structured-clone": 1.3.0 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 @@ -5226,8 +3799,8 @@ snapshots: mdast-util-to-markdown@2.1.2: dependencies: - "@types/mdast": 4.0.4 - "@types/unist": 3.0.3 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 longest-streak: 3.1.0 mdast-util-phrasing: 4.1.0 mdast-util-to-string: 4.0.0 @@ -5238,7 +3811,7 @@ snapshots: mdast-util-to-string@4.0.0: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 mdn-data@2.12.2: {} @@ -5331,7 +3904,7 @@ snapshots: micromark-extension-mdx-expression@3.0.1: dependencies: - "@types/estree": 1.0.7 + '@types/estree': 1.0.7 devlop: 1.1.0 micromark-factory-mdx-expression: 2.0.3 micromark-factory-space: 2.0.1 @@ -5342,7 +3915,7 @@ snapshots: micromark-extension-mdx-jsx@3.0.2: dependencies: - "@types/estree": 1.0.7 + '@types/estree': 1.0.7 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 micromark-factory-mdx-expression: 2.0.3 @@ -5359,7 +3932,7 @@ snapshots: micromark-extension-mdxjs-esm@3.0.0: dependencies: - "@types/estree": 1.0.7 + '@types/estree': 1.0.7 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 micromark-util-character: 2.1.1 @@ -5395,7 +3968,7 @@ snapshots: micromark-factory-mdx-expression@2.0.3: dependencies: - "@types/estree": 1.0.7 + '@types/estree': 1.0.7 devlop: 1.1.0 micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 @@ -5459,8 +4032,8 @@ snapshots: micromark-util-events-to-acorn@2.0.3: dependencies: - "@types/estree": 1.0.7 - "@types/unist": 3.0.3 + '@types/estree': 1.0.7 + '@types/unist': 3.0.3 devlop: 1.1.0 estree-util-visit: 2.0.0 micromark-util-symbol: 2.0.1 @@ -5496,7 +4069,7 @@ snapshots: micromark@4.0.2: dependencies: - "@types/debug": 4.1.12 + '@types/debug': 4.1.12 debug: 4.4.0 decode-named-character-reference: 1.1.0 devlop: 1.1.0 @@ -5534,7 +4107,7 @@ snapshots: nlcst-to-string@4.0.0: dependencies: - "@types/nlcst": 2.0.3 + '@types/nlcst': 2.0.3 node-abi@3.74.0: dependencies: @@ -5592,17 +4165,17 @@ snapshots: pagefind@1.3.0: optionalDependencies: - "@pagefind/darwin-arm64": 1.3.0 - "@pagefind/darwin-x64": 1.3.0 - "@pagefind/linux-arm64": 1.3.0 - "@pagefind/linux-x64": 1.3.0 - "@pagefind/windows-x64": 1.3.0 + '@pagefind/darwin-arm64': 1.3.0 + '@pagefind/darwin-x64': 1.3.0 + '@pagefind/linux-arm64': 1.3.0 + '@pagefind/linux-x64': 1.3.0 + '@pagefind/windows-x64': 1.3.0 pako@0.2.9: {} parse-entities@4.0.2: dependencies: - "@types/unist": 2.0.11 + '@types/unist': 2.0.11 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 decode-named-character-reference: 1.1.0 @@ -5612,8 +4185,8 @@ snapshots: parse-latin@7.0.0: dependencies: - "@types/nlcst": 2.0.3 - "@types/unist": 3.0.3 + '@types/nlcst': 2.0.3 + '@types/unist': 3.0.3 nlcst-to-string: 4.0.0 unist-util-modify-children: 4.0.0 unist-util-visit-children: 3.0.0 @@ -5697,7 +4270,7 @@ snapshots: recma-build-jsx@1.0.0: dependencies: - "@types/estree": 1.0.7 + '@types/estree': 1.0.7 estree-util-build-jsx: 3.0.1 vfile: 6.0.3 @@ -5713,14 +4286,14 @@ snapshots: recma-parse@1.0.0: dependencies: - "@types/estree": 1.0.7 + '@types/estree': 1.0.7 esast-util-from-js: 2.0.1 unified: 11.0.5 vfile: 6.0.3 recma-stringify@1.0.0: dependencies: - "@types/estree": 1.0.7 + '@types/estree': 1.0.7 estree-util-to-js: 2.0.0 unified: 11.0.5 vfile: 6.0.3 @@ -5743,45 +4316,45 @@ snapshots: rehype-format@5.0.1: dependencies: - "@types/hast": 3.0.4 + '@types/hast': 3.0.4 hast-util-format: 1.1.0 rehype-parse@9.0.1: dependencies: - "@types/hast": 3.0.4 + '@types/hast': 3.0.4 hast-util-from-html: 2.0.3 unified: 11.0.5 rehype-raw@7.0.0: dependencies: - "@types/hast": 3.0.4 + '@types/hast': 3.0.4 hast-util-raw: 9.1.0 vfile: 6.0.3 rehype-recma@1.0.0: dependencies: - "@types/estree": 1.0.7 - "@types/hast": 3.0.4 + '@types/estree': 1.0.7 + '@types/hast': 3.0.4 hast-util-to-estree: 3.1.3 transitivePeerDependencies: - supports-color rehype-stringify@10.0.1: dependencies: - "@types/hast": 3.0.4 + '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 unified: 11.0.5 rehype@13.0.2: dependencies: - "@types/hast": 3.0.4 + '@types/hast': 3.0.4 rehype-parse: 9.0.1 rehype-stringify: 10.0.1 unified: 11.0.5 remark-directive@3.0.1: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 mdast-util-directive: 3.1.0 micromark-extension-directive: 3.0.2 unified: 11.0.5 @@ -5790,7 +4363,7 @@ snapshots: remark-gfm@4.0.1: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 mdast-util-gfm: 3.1.0 micromark-extension-gfm: 3.0.0 remark-parse: 11.0.0 @@ -5808,7 +4381,7 @@ snapshots: remark-parse@11.0.0: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 mdast-util-from-markdown: 2.0.2 micromark-util-types: 2.0.2 unified: 11.0.5 @@ -5817,8 +4390,8 @@ snapshots: remark-rehype@11.1.2: dependencies: - "@types/hast": 3.0.4 - "@types/mdast": 4.0.4 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 mdast-util-to-hast: 13.2.0 unified: 11.0.5 vfile: 6.0.3 @@ -5832,63 +4405,71 @@ snapshots: remark-stringify@11.0.0: dependencies: - "@types/mdast": 4.0.4 + '@types/mdast': 4.0.4 mdast-util-to-markdown: 2.1.2 unified: 11.0.5 + require-directory@2.1.1: {} + + resolve-pkg-maps@1.0.0: {} + restructure@3.0.2: {} retext-latin@4.0.0: dependencies: - "@types/nlcst": 2.0.3 + '@types/nlcst': 2.0.3 parse-latin: 7.0.0 unified: 11.0.5 retext-smartypants@6.2.0: dependencies: - "@types/nlcst": 2.0.3 + '@types/nlcst': 2.0.3 nlcst-to-string: 4.0.0 unist-util-visit: 5.0.0 retext-stringify@4.0.0: dependencies: - "@types/nlcst": 2.0.3 + '@types/nlcst': 2.0.3 nlcst-to-string: 4.0.0 unified: 11.0.5 retext@9.0.0: dependencies: - "@types/nlcst": 2.0.3 + '@types/nlcst': 2.0.3 retext-latin: 4.0.0 retext-stringify: 4.0.0 unified: 11.0.5 rollup@4.40.0: dependencies: - "@types/estree": 1.0.7 + '@types/estree': 1.0.7 optionalDependencies: - "@rollup/rollup-android-arm-eabi": 4.40.0 - "@rollup/rollup-android-arm64": 4.40.0 - "@rollup/rollup-darwin-arm64": 4.40.0 - "@rollup/rollup-darwin-x64": 4.40.0 - "@rollup/rollup-freebsd-arm64": 4.40.0 - "@rollup/rollup-freebsd-x64": 4.40.0 - "@rollup/rollup-linux-arm-gnueabihf": 4.40.0 - "@rollup/rollup-linux-arm-musleabihf": 4.40.0 - "@rollup/rollup-linux-arm64-gnu": 4.40.0 - "@rollup/rollup-linux-arm64-musl": 4.40.0 - "@rollup/rollup-linux-loongarch64-gnu": 4.40.0 - "@rollup/rollup-linux-powerpc64le-gnu": 4.40.0 - "@rollup/rollup-linux-riscv64-gnu": 4.40.0 - "@rollup/rollup-linux-riscv64-musl": 4.40.0 - "@rollup/rollup-linux-s390x-gnu": 4.40.0 - "@rollup/rollup-linux-x64-gnu": 4.40.0 - "@rollup/rollup-linux-x64-musl": 4.40.0 - "@rollup/rollup-win32-arm64-msvc": 4.40.0 - "@rollup/rollup-win32-ia32-msvc": 4.40.0 - "@rollup/rollup-win32-x64-msvc": 4.40.0 + '@rollup/rollup-android-arm-eabi': 4.40.0 + '@rollup/rollup-android-arm64': 4.40.0 + '@rollup/rollup-darwin-arm64': 4.40.0 + '@rollup/rollup-darwin-x64': 4.40.0 + '@rollup/rollup-freebsd-arm64': 4.40.0 + '@rollup/rollup-freebsd-x64': 4.40.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.0 + '@rollup/rollup-linux-arm-musleabihf': 4.40.0 + '@rollup/rollup-linux-arm64-gnu': 4.40.0 + '@rollup/rollup-linux-arm64-musl': 4.40.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.0 + '@rollup/rollup-linux-riscv64-gnu': 4.40.0 + '@rollup/rollup-linux-riscv64-musl': 4.40.0 + '@rollup/rollup-linux-s390x-gnu': 4.40.0 + '@rollup/rollup-linux-x64-gnu': 4.40.0 + '@rollup/rollup-linux-x64-musl': 4.40.0 + '@rollup/rollup-win32-arm64-msvc': 4.40.0 + '@rollup/rollup-win32-ia32-msvc': 4.40.0 + '@rollup/rollup-win32-x64-msvc': 4.40.0 fsevents: 2.3.3 + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + safe-buffer@5.2.1: {} sax@1.4.1: {} @@ -5914,37 +4495,39 @@ snapshots: detect-libc: 2.0.3 semver: 7.7.1 optionalDependencies: - "@img/sharp-darwin-arm64": 0.33.5 - "@img/sharp-darwin-x64": 0.33.5 - "@img/sharp-libvips-darwin-arm64": 1.0.4 - "@img/sharp-libvips-darwin-x64": 1.0.4 - "@img/sharp-libvips-linux-arm": 1.0.5 - "@img/sharp-libvips-linux-arm64": 1.0.4 - "@img/sharp-libvips-linux-s390x": 1.0.4 - "@img/sharp-libvips-linux-x64": 1.0.4 - "@img/sharp-libvips-linuxmusl-arm64": 1.0.4 - "@img/sharp-libvips-linuxmusl-x64": 1.0.4 - "@img/sharp-linux-arm": 0.33.5 - "@img/sharp-linux-arm64": 0.33.5 - "@img/sharp-linux-s390x": 0.33.5 - "@img/sharp-linux-x64": 0.33.5 - "@img/sharp-linuxmusl-arm64": 0.33.5 - "@img/sharp-linuxmusl-x64": 0.33.5 - "@img/sharp-wasm32": 0.33.5 - "@img/sharp-win32-ia32": 0.33.5 - "@img/sharp-win32-x64": 0.33.5 + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 optional: true + shell-quote@1.8.3: {} + shiki@3.2.2: dependencies: - "@shikijs/core": 3.2.2 - "@shikijs/engine-javascript": 3.2.2 - "@shikijs/engine-oniguruma": 3.2.2 - "@shikijs/langs": 3.2.2 - "@shikijs/themes": 3.2.2 - "@shikijs/types": 3.2.2 - "@shikijs/vscode-textmate": 10.0.2 - "@types/hast": 3.0.4 + '@shikijs/core': 3.2.2 + '@shikijs/engine-javascript': 3.2.2 + '@shikijs/engine-oniguruma': 3.2.2 + '@shikijs/langs': 3.2.2 + '@shikijs/themes': 3.2.2 + '@shikijs/types': 3.2.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 simple-concat@1.0.1: {} @@ -5962,8 +4545,8 @@ snapshots: sitemap@8.0.0: dependencies: - "@types/node": 17.0.45 - "@types/sax": 1.2.7 + '@types/node': 17.0.45 + '@types/sax': 1.2.7 arg: 5.0.2 sax: 1.4.1 @@ -6023,6 +4606,14 @@ snapshots: dependencies: inline-style-parser: 0.2.4 + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + tailwindcss@4.1.4: {} tapable@2.2.1: {} @@ -6073,6 +4664,8 @@ snapshots: tr46@0.0.3: {} + tree-kill@1.2.2: {} + trim-lines@3.0.1: {} trough@2.2.0: {} @@ -6083,6 +4676,13 @@ snapshots: tslib@2.8.1: {} + tsx@4.20.5: + dependencies: + esbuild: 0.25.2 + get-tsconfig: 4.10.1 + optionalDependencies: + fsevents: 2.3.3 + tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 @@ -6097,6 +4697,8 @@ snapshots: uncrypto@0.1.3: {} + undici-types@6.21.0: {} + unicode-properties@1.4.1: dependencies: base64-js: 1.5.1 @@ -6109,7 +4711,7 @@ snapshots: unified@11.0.5: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 bail: 2.0.2 devlop: 1.1.0 extend: 3.0.2 @@ -6124,47 +4726,47 @@ snapshots: unist-util-find-after@5.0.0: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 unist-util-is: 6.0.0 unist-util-is@6.0.0: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 unist-util-modify-children@4.0.0: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 array-iterate: 2.0.1 unist-util-position-from-estree@2.0.0: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 unist-util-position@5.0.0: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 unist-util-remove-position@5.0.0: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 unist-util-visit: 5.0.0 unist-util-stringify-position@4.0.0: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 unist-util-visit-children@3.0.0: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 unist-util-visit-parents@6.0.1: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 unist-util-is: 6.0.0 unist-util-visit@5.0.0: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 @@ -6183,32 +4785,34 @@ snapshots: vfile-location@5.0.3: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 vfile: 6.0.3 vfile-message@4.0.2: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 vfile@6.0.3: dependencies: - "@types/unist": 3.0.3 + '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite@6.2.6(jiti@2.4.2)(lightningcss@1.29.2): + vite@6.2.6(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.20.5): dependencies: esbuild: 0.25.2 postcss: 8.5.3 rollup: 4.40.0 optionalDependencies: + '@types/node': 22.18.1 fsevents: 2.3.3 jiti: 2.4.2 lightningcss: 1.29.2 + tsx: 4.20.5 - vitefu@1.0.6(vite@6.2.6(jiti@2.4.2)(lightningcss@1.29.2)): + vitefu@1.0.6(vite@6.2.6(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.20.5)): optionalDependencies: - vite: 6.2.6(jiti@2.4.2)(lightningcss@1.29.2) + vite: 6.2.6(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.20.5) web-namespaces@2.0.1: {} @@ -6225,6 +4829,12 @@ snapshots: dependencies: string-width: 7.2.0 + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi@9.0.0: dependencies: ansi-styles: 6.2.1 @@ -6235,8 +4845,20 @@ snapshots: xxhash-wasm@1.1.0: {} + y18n@5.0.8: {} + yargs-parser@21.1.1: {} + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + yocto-queue@1.2.1: {} yocto-spinner@0.2.1: diff --git a/docs/scripts/sync-embedded-docs.ts b/docs/scripts/sync-embedded-docs.ts new file mode 100644 index 0000000..9012e20 --- /dev/null +++ b/docs/scripts/sync-embedded-docs.ts @@ -0,0 +1,257 @@ +#!/usr/bin/env tsx + +import fs from 'fs'; +import path from 'path'; +import chokidar from 'chokidar'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +// Paths +const rootDir = path.resolve(__dirname, '../..'); +const commandsDir = path.join(rootDir, 'kicad_lib_manager', 'commands'); +const docsOutputDir = path.join(__dirname, '..', 'src', 'content', 'docs', 'reference', 'cli'); + +interface CommandDoc { + commandName: string; + embeddedPath: string; + outputPath: string; +} + +/** + * Get the CLI command name for a directory, either from .command file or directory name + */ +function getCommandName(commandDir: string, dirName: string): string { + const commandFile = path.join(commandDir, '.command'); + + if (fs.existsSync(commandFile)) { + try { + const commandName = fs.readFileSync(commandFile, 'utf-8').trim(); + if (commandName) { + return commandName; + } + } catch (error) { + console.warn(`Failed to read .command file for ${dirName}:`, error); + } + } + + // Fallback to directory name + return dirName; +} + +/** + * Find all command directories with embedded docs + */ +function findCommandDocs(): CommandDoc[] { + if (!fs.existsSync(commandsDir)) { + console.warn(`Commands directory not found: ${commandsDir}`); + return []; + } + + const commandDirs = fs.readdirSync(commandsDir, { withFileTypes: true }) + .filter(dirent => dirent.isDirectory()) + .map(dirent => dirent.name); + + const commandDocs: CommandDoc[] = []; + + for (const dirName of commandDirs) { + const commandDir = path.join(commandsDir, dirName); + + // Check for both .mdx and .md files + const mdxPath = path.join(commandDir, 'docs.mdx'); + const mdPath = path.join(commandDir, 'docs.md'); + + let docsPath: string | null = null; + if (fs.existsSync(mdxPath)) { + docsPath = mdxPath; + } else if (fs.existsSync(mdPath)) { + docsPath = mdPath; + } + + if (docsPath) { + // Get the CLI command name (from .command file or directory name) + const commandName = getCommandName(commandDir, dirName); + + // Preserve the original file extension + const extension = path.extname(docsPath); + commandDocs.push({ + commandName, + embeddedPath: docsPath, + outputPath: path.join(docsOutputDir, `${commandName}${extension}`) + }); + } + } + + return commandDocs; +} + +/** + * Process MDX content and add proper frontmatter if needed + */ +function processEmbeddedDoc(content: string, commandName: string): string { + // Check if content already has frontmatter + const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/); + + if (frontmatterMatch) { + // Content already has frontmatter, return as-is + return content; + } + + // No frontmatter, add it + // Extract title from first heading or use command name + const titleMatch = content.match(/^# (.+)$/m); + const title = titleMatch ? titleMatch[1] : commandName; + + // Extract description from content or use default + const descriptionMatch = content.match(/^(.+)$/m); + const firstLine = descriptionMatch ? descriptionMatch[1].replace(/^# /, '') : ''; + const description = firstLine || `${commandName} command documentation`; + + // Create frontmatter + const frontmatter = `--- +title: ${title} +description: ${description} +sidebar: + label: ${commandName} +--- + +`; + + // Remove the first heading since it's now in frontmatter + const contentWithoutTitle = content.replace(/^# .+$/m, '').trim(); + + return frontmatter + contentWithoutTitle; +} + +/** + * Sync a single embedded doc to the output directory + */ +function syncDoc(commandDoc: CommandDoc): void { + try { + const content = fs.readFileSync(commandDoc.embeddedPath, 'utf-8'); + const processedContent = processEmbeddedDoc(content, commandDoc.commandName); + + // Ensure output directory exists + const outputDir = path.dirname(commandDoc.outputPath); + if (!fs.existsSync(outputDir)) { + fs.mkdirSync(outputDir, { recursive: true }); + } + + fs.writeFileSync(commandDoc.outputPath, processedContent); + console.log(`Synced ${commandDoc.commandName}.mdx`); + } catch (error) { + console.error(`Failed to sync ${commandDoc.commandName}:`, error); + } +} + +/** + * Sync all embedded docs to the output directory + */ +function syncAllDocs(): void { + console.log('Syncing embedded documentation...'); + + const commandDocs = findCommandDocs(); + + if (commandDocs.length === 0) { + console.warn('No embedded docs found'); + return; + } + + // Ensure output directory exists + if (!fs.existsSync(docsOutputDir)) { + fs.mkdirSync(docsOutputDir, { recursive: true }); + } + + for (const commandDoc of commandDocs) { + syncDoc(commandDoc); + } + + console.log(`Synced ${commandDocs.length} embedded docs`); +} + +/** + * Watch embedded docs for changes and sync automatically + */ +function watchDocs(): void { + console.log('Watching embedded docs for changes...'); + + const commandDocs = findCommandDocs(); + const watchPaths = commandDocs.map(doc => doc.embeddedPath); + + if (watchPaths.length === 0) { + console.warn('No embedded docs to watch'); + return; + } + + // Initial sync + syncAllDocs(); + + // Watch for changes + const watcher = chokidar.watch(watchPaths, { + persistent: true, + ignoreInitial: true, + }); + + watcher + .on('change', (changedPath: string) => { + const commandDoc = commandDocs.find(doc => doc.embeddedPath === changedPath); + if (commandDoc) { + console.log(`${commandDoc.commandName} docs changed, syncing...`); + syncDoc(commandDoc); + } + }) + .on('error', (error: unknown) => { + console.error('Watch error:', error); + }); + + console.log(`Watching ${watchPaths.length} embedded docs files`); + + // Keep the process running + process.on('SIGINT', () => { + console.log('\nStopping watch mode...'); + watcher.close(); + process.exit(0); + }); +} + +/** + * Clean up generated docs (remove files that no longer have embedded sources) + */ +function cleanupDocs(): void { + if (!fs.existsSync(docsOutputDir)) { + return; + } + + const commandDocs = findCommandDocs(); + const expectedFiles = new Set(commandDocs.map(doc => path.basename(doc.outputPath))); + + const existingFiles = fs.readdirSync(docsOutputDir) + .filter(file => file.endsWith('.mdx') || file.endsWith('.md')); + + for (const file of existingFiles) { + if (!expectedFiles.has(file)) { + const filePath = path.join(docsOutputDir, file); + fs.unlinkSync(filePath); + console.log(`Removed orphaned doc: ${file}`); + } + } +} + +// CLI interface +const command = process.argv[2]; + +switch (command) { + case 'watch': + watchDocs(); + break; + case 'clean': + cleanupDocs(); + console.log('Cleaned up orphaned docs'); + break; + case 'sync': + default: + cleanupDocs(); + syncAllDocs(); + break; +} \ No newline at end of file diff --git a/docs/src/content/docs/reference/cli/.gitignore b/docs/src/content/docs/reference/cli/.gitignore new file mode 100644 index 0000000..716255d --- /dev/null +++ b/docs/src/content/docs/reference/cli/.gitignore @@ -0,0 +1,3 @@ +* +!.gitignore +!index.md \ No newline at end of file diff --git a/docs/src/content/docs/reference/cli/add-3d.md b/docs/src/content/docs/reference/cli/add-3d.md deleted file mode 100644 index d2dda41..0000000 --- a/docs/src/content/docs/reference/cli/add-3d.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: add-3d -description: Add a directory containing 3D models (e.g., STEP, WRL). ---- - -The `kilm add-3d` command registers a directory containing 3D models (like `.step` or `.wrl` files) with KiLM. This is typically used for libraries stored outside the main symbol/footprint Git repository, such as in cloud-synced folders. - -It performs the following main actions: - -1. Creates or updates a metadata file named `.kilm_cloud_metadata` within the target directory. This stores the library's name, description, associated environment variable, and a count of detected model files. -2. Adds an entry for this library (with its path and type `cloud`) to the main KiLM configuration file (`~/.config/kicad-lib-manager/config.yaml`). -3. Scans the directory for common 3D model file extensions and warns if none are found. - -## Usage - -```bash -kilm add-3d [OPTIONS] -``` - -## Options - -- `--directory DIRECTORY`: - Specifies the path to the directory containing the 3D models. - _Default:_ Uses the current working directory if not specified. - _Example:_ `kilm add-3d --directory ~/kicad/libraries/3d-models` - -- `--name TEXT`: - Sets a custom name for this 3D library entry. If not provided, a name is generated from the directory name. - _Example:_ `kilm add-3d --directory ... --name standard-3d-lib` - -- `--description TEXT`: - Adds an optional description for this 3D library to the metadata file. - _Example:_ `kilm add-3d --directory ... --name ... --description "My custom collection of STEP models"` - -- `--env-var TEXT`: - Specifies a custom KiCad environment variable name (e.g., `MY_CUSTOM_3D`) to associate with this library's path. If not provided (and `--no-env-var` isn't used), a name is automatically generated (e.g., `KICAD_3D_STANDARD_3D_LIB`). This variable will be set in KiCad when you run `kilm setup`. - _Example:_ `kilm add-3d --directory ... --name ... --env-var KICAD_USER_3DMOD` - -- `--no-env-var`: - Prevents an environment variable from being assigned to this library in the metadata. Default: `False`. - _Example:_ `kilm add-3d --no-env-var` - -- `--force`: - If `.kilm_cloud_metadata` already exists in the target directory, overwrite it with new metadata based on options or defaults. Without `--force`, existing metadata is updated only with explicitly provided options. Default: `False`. - _Example:_ `kilm add-3d --directory ... --force` - -- `--help`: - Show the help message and exit. - -## Behavior - -- **Target Directory:** Uses `--directory` path or current working directory. -- **Creates/Updates Metadata:** Creates or modifies `.kilm_cloud_metadata` in the target directory. -- **Updates Global Config:** Adds library entry (type `cloud`) to main `config.yaml`. -- **Verification:** Checks for the presence of files with extensions like `.step`, `.stp`, `.wrl` in the target directory. - -## Examples - -**Add a 3D library (using defaults where possible):** -Register the directory `/home/user/cad/my_3d_parts`. A name and environment variable will be generated automatically. - -```bash -kilm add-3d --directory /home/user/cad/my_3d_parts --description "Custom 3D mechanical parts" -``` - -**Add a 3D library with specific names:** -Register the directory `/opt/kicad/packages3d`, name it `kicad-official-3d`, and assign the environment variable `KICAD_OFFICIAL_3D`. - -```bash -kilm add-3d --directory /opt/kicad/packages3d --name kicad-official-3d --env-var KICAD_OFFICIAL_3D --description "KiCad Official 3D Models" -``` - -**Add 3D library in current directory without an environment variable:** - -```bash -cd ~/my_project_3d_models -kilm add-3d --name my-project-models --no-env-var -``` - -**Note:** After adding 3D libraries, you usually need to run [`kilm setup`](/reference/cli/setup/) to create or update the associated environment variables (like `KICAD_OFFICIAL_3D` in the example) in KiCad's configuration. diff --git a/docs/src/content/docs/reference/cli/add-hook.md b/docs/src/content/docs/reference/cli/add-hook.md deleted file mode 100644 index 1959427..0000000 --- a/docs/src/content/docs/reference/cli/add-hook.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: add-hook -description: Add a Git post-merge hook to automatically update libraries. ---- - -The `kilm add-hook` command creates or modifies a Git `post-merge` hook script in a specified repository. This hook is designed to automatically run `kilm update` after successful `git pull` or `git merge` operations. - -This helps keep your KiLM-managed libraries that are Git repositories synchronized with their remotes automatically. - -## Usage - -```bash -kilm add-hook [OPTIONS] -``` - -## Options - -- `--directory DIRECTORY`: - Specifies the path to the Git repository where the hook should be added. Defaults to the current directory. - _Example:_ `kilm add-hook --directory ~/my-kicad-libs-repo` - -- `--force / --no-force`: - If a `post-merge` hook already exists, overwrite it with the KiLM hook. Without `--force`, the command might fail if a hook already exists. - _Example:_ `kilm add-hook --force` - -- `--help`: - Show the help message and exit. - -## Behavior - -1. **Detects Active Hooks Directory:** - - Queries `git config core.hooksPath` for custom hooks directory - - Falls back to `.git/hooks` (standard location) - - Handles Git worktrees where hooks live in the linked location -2. **Checks Existing Hook:** Looks for an existing file named `post-merge`. -3. **Creates Safe Backup:** If a hook exists, creates a timestamped backup before modification. -4. **Intelligent Content Management:** - - If KiLM content already exists, updates the managed section - - If other content exists, merges KiLM content with clear markers - - Preserves existing user logic while adding KiLM functionality -5. **Writes Hook Script:** Creates or updates the hook file with content similar to this: - - ```bash - #!/bin/sh - # BEGIN KiLM-managed section - # KiCad Library Manager auto-update hook - # Added by kilm add-hook command - - echo "Running KiCad Library Manager update..." - kilm update - - # Uncomment to set up libraries automatically (use with caution) - # kilm setup - - echo "KiCad libraries update complete." - # END KiLM-managed section - ``` - -6. **Sets Permissions:** Ensures the hook has executable permissions (`chmod +x`). - -## Examples - -**Add hook to the current Git repository:** - -```bash -# Make sure you are in the root of your Git repository -kilm add-hook -``` - -**Add hook to a specific repository, overwriting if necessary:** - -```bash -kilm add-hook --directory /path/to/another/repo --force -``` - -## Advanced Features - -### Custom Hooks Directory - -If your repository uses `git config core.hooksPath` to specify a custom hooks directory, KiLM will automatically detect and use that location. - -### Git Worktree Support - -For repositories using Git worktrees, KiLM correctly identifies the main repository location and installs hooks in the appropriate hooks directory. - -### Safe Updates - -- **First Run:** Creates a new hook with KiLM content -- **Subsequent Runs:** Updates only the KiLM-managed section, preserving other customizations -- **Backup Protection:** Always creates timestamped backups before modifications -- **Idempotent:** Safe to run multiple times without duplicating content - -## Customization - -If you want the hook to do more, such as automatically running `kilm setup` after updating (which is potentially riskier as it modifies KiCad config automatically), you can manually edit the generated hook script. - -**Example (Manual Edit for Auto-Setup):** - -```bash -#!/bin/sh -# BEGIN KiLM-managed section -# KiCad Library Manager auto-update hook -# Added by kilm add-hook command - -echo "Running KiCad Library Manager update..." -kilm update - -# Uncomment to set up libraries automatically (use with caution) -kilm setup - -echo "KiCad libraries update complete." -# END KiLM-managed section -``` diff --git a/docs/src/content/docs/reference/cli/config.mdx b/docs/src/content/docs/reference/cli/config.mdx deleted file mode 100644 index 50d9197..0000000 --- a/docs/src/content/docs/reference/cli/config.mdx +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: config -description: View and manage KiLM configuration settings and libraries. ---- - -import { Tabs, TabItem } from "@astrojs/starlight/components"; - -The `kilm config` command group allows you to inspect and manage the libraries registered in your KiLM configuration (`config.yaml`) and control settings like the default library. - -## Subcommands - - - - -Lists the configured libraries. - -#### Usage - -```bash -kilm config list [OPTIONS] -``` - -#### Options - -- `--type [github|cloud|all]`: - Filters the libraries shown by type. - - `github`: Shows symbol/footprint/template libraries. - - `cloud`: Shows 3D model libraries. - - `all`: Shows all types (default). - _Example:_ `kilm config list --type github` - -- `-v, --verbose`: - Displays more detailed information about each library, reading from both `config.yaml` and the library's metadata file (`kilm.yaml` or `.kilm_cloud_metadata`). Shows path, description, version, environment variable, capabilities/model count, etc. - _Example:_ `kilm config list --verbose` - -- `--help`: - Show the help message and exit. - -#### Examples - -**List all configured libraries (basic view):** - -```bash -kilm config list -``` - -**List only symbol/footprint libraries:** - -```bash -kilm config list --type github -``` - -**List all libraries with detailed information:** - -```bash -kilm config list --verbose -``` - -**List only 3D model libraries with details:** - -```bash -kilm config list --type cloud --verbose -``` - - - - -Sets a specific registered library as the default ("current") library used by KiLM. - -The `current_library` setting in `config.yaml` determines which library path is used by default in commands like `status` or `setup` (when not using `--all-libraries` or specific library flags). - -#### Usage - -```bash -kilm config set-default [LIBRARY_NAME] [OPTIONS] -``` - -#### Arguments - -- `LIBRARY_NAME`: The name (as shown in `kilm config list`) of the library to set as default. If omitted, you will be prompted to choose from a list. - -#### Options - -- `--type [github|cloud]`: - Specifies the type of library to choose from when prompting (if `LIBRARY_NAME` is omitted) or to disambiguate if names clash. Default: `github`. - _Example:_ `kilm config set-default --type cloud` (prompts for a cloud library) - -- `--help`: - Show the help message and exit. - -#### Examples - -**Set a specific GitHub library as default:** - -```bash -kilm config set-default my-company-library -``` - -**Set a specific Cloud (3D) library as default:** - -```bash -kilm config set-default shared-3d-models --type cloud -``` - -**Interactively select a GitHub library to be default:** - -```bash -kilm config set-default -``` - -**Interactively select a Cloud library to be default:** - -```bash -kilm config set-default --type cloud -``` - - - - -Removes a registered library from the KiLM configuration (`config.yaml`). This does _not_ delete the library files or its metadata file, only the entry in KiLM's central config. - -#### Usage - -```bash -kilm config remove LIBRARY_NAME [OPTIONS] -``` - -#### Arguments - -- `LIBRARY_NAME`: **Required.** The name (as shown in `kilm config list`) of the library to remove from the configuration. - -#### Options - -- `--type [github|cloud|all]`: - Specifies the type of the library entry to remove. If a name exists for both types, this is needed for disambiguation. `all` removes entries with this name regardless of type. Default: `all`. - _Example:_ `kilm config remove obsolete-lib --type github` - -- `--force`: - Remove the library entry without asking for confirmation. Default: `False` (confirmation required). - _Example:_ `kilm config remove old-project-lib --force` - -- `--help`: - Show the help message and exit. - -#### Examples - -**Remove a library (will ask for confirmation):** - -```bash -kilm config remove temp-test-library -``` - -**Remove only the GitHub entry for a library:** - -```bash -kilm config remove shared-lib --type github -``` - -**Force removal without confirmation:** - -```bash -kilm config remove unused-3d-models --type cloud --force -``` - - - diff --git a/docs/src/content/docs/reference/cli/init.md b/docs/src/content/docs/reference/cli/init.md deleted file mode 100644 index de7d32b..0000000 --- a/docs/src/content/docs/reference/cli/init.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: init -description: Initialize the current directory as a KiCad library collection. ---- - -The `kilm init` command prepares the **current working directory** to be managed by KiLM as a library collection, primarily intended for symbol, footprint, and template libraries (often managed via Git, hence the internal type `github`). - -It performs several actions: - -1. Creates standard subdirectories (`symbols/`, `footprints/`, `templates/`) if they don't exist. -2. Creates a template `library_descriptions.yaml` file if it doesn't exist, used for richer descriptions in KiCad. -3. Creates or updates a metadata file named `kilm.yaml` within the current directory. This stores the library's name, description, associated environment variable, and detected capabilities (symbols, footprints, templates). -4. Adds an entry for this library (with its path and type `github`) to the main KiLM configuration file (`~/.config/kicad-lib-manager/config.yaml`). -5. Optionally sets this library as the `current_library` in the main configuration. - -## Usage - -Run this command from _within_ the directory you want to initialize: - -```bash -cd /path/to/your-library -kilm init [OPTIONS] -``` - -## Options - -- `--name TEXT`: - Sets a custom name for the library collection. If not provided, a name is generated from the current directory name. - _Example:_ `kilm init --name my-custom-library` - -- `--description TEXT`: - Adds a description to the library metadata (`kilm.yaml`). - _Example:_ `kilm init --description "My collection of custom components"` - -- `--env-var TEXT`: - Specifies a custom KiCad environment variable name (e.g., `MY_CUSTOM_LIB`) to associate with this library's path. If not provided (and `--no-env-var` isn't used), a name is automatically generated (e.g., `KICAD_LIB_MY_CUSTOM_LIBRARY`). This variable will be set in KiCad when you run `kilm setup`. - _Example:_ `kilm init --env-var MY_LIB_PATH` - -- `--no-env-var`: - Prevents an environment variable from being assigned to this library in the metadata. Default: `False`. - _Example:_ `kilm init --no-env-var` - -- `--set-current / --no-set-current`: - Controls whether this library should be set as the `current_library` in the main `config.yaml`. Default: `--set-current`. - _Example:_ `kilm init --no-set-current` - -- `--force`: - If `kilm.yaml` already exists, overwrite it with new metadata based on options or defaults. Without `--force`, existing metadata is updated only with explicitly provided options. Default: `False`. - _Example:_ `kilm init --force` - -- `--help`: - Show the help message and exit. - -## Behavior Summary - -- **Target:** Current working directory. -- **Creates/Updates:** `symbols/`, `footprints/`, `templates/` dirs, `library_descriptions.yaml`, `kilm.yaml`. -- **Modifies Global Config:** Adds library entry to main `config.yaml`, optionally sets `current_library`. -- **Library Type:** Registers the library with type `github` in `config.yaml`. - -## Examples - -**Basic Initialization:** -Initialize the current directory, creating folders and metadata, using default names/env vars, and setting it as current. - -```bash -cd /path/to/my-kicad-library -kilm init -``` - -**Initialization with Options:** -Initialize with a specific name, description, and environment variable, and _don't_ set it as the current library. - -```bash -cd /path/to/another-kicad-library -kilm init --name project-specific --description "Components for Project X" --env-var PROJECT_X_LIBS --no-set-current -``` - -**Re-initialize with Force:** -Overwrite existing `kilm.yaml` with default settings. - -```bash -cd /path/to/existing-library -kilm init --force -``` - -**Note:** Running `kilm init` registers the library with KiLM and prepares the directory. You still need to run [`kilm setup`](/reference/cli/setup/) afterwards to make KiCad aware of this library by updating KiCad's configuration files. diff --git a/docs/src/content/docs/reference/cli/list.md b/docs/src/content/docs/reference/cli/list.md deleted file mode 100644 index 31b4ca8..0000000 --- a/docs/src/content/docs/reference/cli/list.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: list -description: List symbol and footprint libraries found within a directory. ---- - -The `kilm list` command scans a specified directory (typically your main KiCad library directory) and lists the symbol (`.kicad_sym`) and footprint (`.pretty`) libraries it finds within it. - -This is useful for verifying the contents of a specific library directory, independent of KiLM's own configuration. - -## Usage - -```bash -kilm list [OPTIONS] -``` - -## Options - -- `--kicad-lib-dir TEXT`: - Specify the path to the KiCad library directory you want to scan. - If not provided, KiLM will look for the `KICAD_USER_LIB` environment variable and use its value. - _Default:_ Uses `KICAD_USER_LIB` environment variable. - _Example:_ `kilm list --kicad-lib-dir /path/to/my/libraries` - -- `--help`: - Show this help message and exit. - -## Behavior - -1. **Determines Target Directory:** Uses the path provided via `--kicad-lib-dir` or falls back to the `KICAD_USER_LIB` environment variable. -2. **Scans Directory:** Recursively scans the target directory. -3. **Identifies Libraries:** - - Looks for files ending in `.kicad_sym` to identify symbol libraries. - - Looks for directories ending in `.pretty` to identify footprint libraries. -4. **Prints Lists:** Outputs separate lists of the symbol and footprint library names found. - -## Examples - -**List Libraries in Default Directory:** -Scans the directory specified by the `KICAD_USER_LIB` environment variable. - -```bash -kilm list -``` - -_Expected Output (example):_ - -``` -Available Symbol Libraries: - - 74xx - - Connector - - Device - -Available Footprint Libraries: - - Capacitor_SMD - - Connector_PinHeader_2.54mm - - Resistor_SMD -``` - -**List Libraries in a Specific Directory:** -Scans the specified directory `/home/user/my-kicad-libs`. - -```bash -kilm list --kicad-lib-dir /home/user/my-kicad-libs -``` diff --git a/docs/src/content/docs/reference/cli/pin.md b/docs/src/content/docs/reference/cli/pin.md deleted file mode 100644 index b544438..0000000 --- a/docs/src/content/docs/reference/cli/pin.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: pin -description: Add libraries to KiCad's pinned (favorite) list. ---- - -The `kilm pin` command adds specified symbol and/or footprint libraries to KiCad's "Pinned Libraries" list, making them easily accessible in the symbol and footprint choosers. - -It operates by modifying the `pinned_symbol_libs` and `pinned_fp_libs` arrays within KiCad's `kicad_common.json` configuration file. - -**Note:** Changes require restarting KiCad. - -## Usage - -```bash -kilm pin [OPTIONS] -``` - -## Options - -- `--kicad-lib-dir TEXT`: - Specify the path to the KiCad library directory containing the libraries you want to pin. - If not provided, KiLM will look for the `KICAD_USER_LIB` environment variable. - This directory is scanned to find available libraries if `--all` is used or to validate specified library names. - _Default:_ Uses `KICAD_USER_LIB` environment variable. - _Example:_ `kilm pin --kicad-lib-dir /path/to/libs -s MyLib` - -- `-s, --symbols TEXT`: - Specify the name of a symbol library (`.kicad_sym` file, without extension) to pin. Use this option multiple times to pin several libraries. - _Example:_ `kilm pin -s Device -s MyCustomSymbols` - -- `-f, --footprints TEXT`: - Specify the name of a footprint library (`.pretty` directory, without extension) to pin. Use this option multiple times to pin several libraries. - _Example:_ `kilm pin -f Package_SO -f MyCustomFootprints` - -- `--all / --selected`: - Determines which libraries to pin. - - `--all` (Default): Pins _all_ symbol and footprint libraries found within the directory specified by `--kicad-lib-dir`. Cannot be used if `-s` or `-f` are specified. - - `--selected`: Pins only the libraries explicitly listed using `-s` or `-f`. This is implicitly active when `-s` or `-f` are used. - _Example (pin all):_ `kilm pin --all` - -- `--dry-run`: - Show which libraries would be added to the pinned list without actually modifying `kicad_common.json`. - _Example:_ `kilm pin --all --dry-run` - -- `--max-backups INTEGER`: - Maximum number of timestamped backups KiLM should keep for `kicad_common.json`. Default: `5`. - _Example:_ `kilm pin --max-backups 3` - -- `-v, --verbose`: - Show detailed output during the pinning process, including listing libraries found and pinned. - _Example:_ `kilm pin -s MyLib --verbose` - -- `--help`: - Show this help message and exit. - -## Behavior - -1. Locates the KiCad configuration directory and `kicad_common.json`. -2. Determines the target library directory using `--kicad-lib-dir` or `KICAD_USER_LIB`. -3. If `--all` is active (default and no `-s`/`-f`), lists all symbol/footprint libraries in the target directory. -4. If specific libraries are provided via `-s`/`-f`, validates they exist in the target directory (issues a warning if not found). -5. Creates a backup of `kicad_common.json` (unless `--dry-run`). -6. Reads the current pinned lists from `kicad_common.json`. -7. Adds the names of the determined libraries (all or selected) to the respective lists. -8. Writes the updated lists back to `kicad_common.json` (unless `--dry-run`). - -## Examples - -**Pin specific libraries:** - -```bash -kilm pin -s MySymbolLib -s AnotherLib -f MyFootprintLib -``` - -**Pin all libraries found in the default directory:** -(Assumes `KICAD_USER_LIB` is set) - -```bash -kilm pin --all -# Or simply: -kilm pin -``` - -**Pin all libraries in a specific directory:** - -```bash -kilm pin --kicad-lib-dir /path/to/company/libs --all -``` - -**Preview pinning all libraries:** - -```bash -kilm pin --all --dry-run -``` - -**Pin specific libraries with verbose output:** - -```bash -kilm pin -s Device -f Resistor_SMD -v -``` diff --git a/docs/src/content/docs/reference/cli/setup.md b/docs/src/content/docs/reference/cli/setup.md deleted file mode 100644 index 802f849..0000000 --- a/docs/src/content/docs/reference/cli/setup.md +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: setup -description: Configure KiCad to use the registered libraries. ---- - -The `kilm setup` command reads your KiLM configuration and modifies KiCad's configuration files to reflect the registered libraries and environment variables. - -It performs the following main actions: - -1. Finds KiCad configuration files (`sym-lib-table`, `fp-lib-table`, `kicad_common.json`). -2. Creates timestamped backups of these files (number controlled by `--max-backups`). -3. Determines which libraries (symbol/footprint and 3D) to configure based on options. -4. Reads library metadata (if available) to find associated environment variable names (e.g., `KICAD_USER_LIB`). -5. Updates KiCad's environment variables (`kicad_common.json`). -6. Updates KiCad's symbol and footprint library tables (`sym-lib-table`, `fp-lib-table`). -7. Optionally updates KiCad's pinned libraries list (`kicad_common.json`) via `--pin-libraries`. -8. Attempts to fix known invalid URI formats in library tables. - -**Important:** You usually need to restart KiCad after running `kilm setup` for all changes to take effect. - -## Usage - -```bash -kilm setup [OPTIONS] -``` - -## Options - -- `--kicad-lib-dir TEXT`: - Directly specify the path for the primary symbol/footprint library directory. This path might be used to set a default environment variable like `KICAD_USER_LIB` if not otherwise specified by library metadata. Overrides environment variables (`KICAD_USER_LIB`). - _Example:_ `kilm setup --kicad-lib-dir /path/to/my/symbols` - -- `--kicad-3d-dir TEXT`: - Directly specify the path for the primary 3D models directory. This path might be used to set a default environment variable like `KICAD_3D_LIB`. Overrides environment variables (`KICAD_3D_LIB`). - _Example:_ `kilm setup --kicad-3d-dir /path/to/my/3dmodels` - -- `--symbol-lib-dirs TEXT`: - Specify a comma-separated list of library _names_ (as defined in KiLM config) to set up. Only these specific symbol/footprint libraries will be configured. This takes precedence over the default behavior and `--all-libraries`. - _Example:_ `kilm setup --symbol-lib-dirs "main-lib,project-lib"` - -- `--threed-lib-dirs TEXT`: - Specify a comma-separated list of 3D library _names_ (as defined in KiLM config) to set up. Only the environment variables for these specific 3D libraries will be configured. This takes precedence over the default behavior and `--all-libraries`. - _Example:_ `kilm setup --threed-lib-dirs "my-3d-models,official-3d"` - -- `--all-libraries`: - Configure _all_ libraries (both symbol/footprint and 3D) registered in KiLM's `config.yaml`. Without this flag, only the _current_ symbol/footprint library and the _current_ 3D library (as defined in `config.yaml` or derived) are configured by default. - _Example:_ `kilm setup --all-libraries` - -- `--max-backups INTEGER`: - Maximum number of timestamped backups KiLM should keep for each KiCad configuration file it modifies. Default: `5`. - _Example:_ `kilm setup --max-backups 10` - -- `--pin-libraries / --no-pin-libraries`: - Default: `--pin-libraries`. - Controls whether the configured libraries should be added to KiCad's "Pinned Libraries" list for quick access in the managers. - _Example:_ `kilm setup --no-pin-libraries` - -- `--dry-run`: - Show the changes KiLM would make to KiCad's configuration files without actually modifying them. Output is printed to the terminal. - _Example:_ `kilm setup --dry-run` - -- `-v, --verbose`: - Show detailed output during the setup process, useful for debugging. - _Example:_ `kilm setup --verbose` - -- `--help`: - Show this help message and exit. - -## Behavior Details - -- **Library Selection:** By default (without `--all-libraries`), `setup` configures only the _current_ symbol/footprint library and the _current_ 3D model library registered in KiLM. Use `--all-libraries` to configure all registered libraries, or `--symbol-lib-dirs` / `--threed-lib-dirs` to configure specific named libraries. -- **Environment Variables:** KiLM attempts to read metadata (e.g., `kilm.yaml` or `.kilm_cloud_metadata`) to find the correct environment variable name (like `KICAD_COMPANY_LIB`) associated with each library path. If specific `--kicad-lib-dir` or `--kicad-3d-dir` options are given, they might influence default variables like `KICAD_USER_LIB` or `KICAD_3D_LIB`. -- **Backups:** Backups are crucial for recovery if KiCad's configuration gets corrupted. They are stored in the same directory as the KiCad configuration files and are named with a timestamp. - -## Examples - -**Setup Current Libraries (Default):** -Configure only the current symbol/footprint library and current 3D library. - -```bash -kilm setup -``` - -**Setup All Registered Libraries:** -Configure all libraries defined in `config.yaml`. - -```bash -kilm setup --all-libraries -``` - -**Setup Specific Libraries:** -Only configure the symbol/footprint libraries named `main-lib` and `project-lib`, and the 3D library named `my-3d-models`. - -```bash -kilm setup --symbol-lib-dirs "main-lib,project-lib" --threed-lib-dirs "my-3d-models" -``` - -**Setup with Specific Paths and No Pinning:** -Use specific paths for default libs (this might not be relevant if not configuring the default libs) and disable adding them to pinned libraries. - -```bash -kilm setup --kicad-lib-dir /srv/kicad/symbols --kicad-3d-dir /srv/kicad/3d --no-pin-libraries -``` - -**Preview Changes (Default - Current Libs):** -See what changes `kilm setup` would make for the current libraries without applying them. - -```bash -kilm setup --dry-run -``` - -**Preview Changes (All Libs):** -See what changes `kilm setup` would make for all libraries without applying them. - -```bash -kilm setup --all-libraries --dry-run -``` - -**Verbose Dry Run (Current Libs):** -Get detailed output about the planned changes for current libraries. - -```bash -kilm setup --dry-run --verbose -``` diff --git a/docs/src/content/docs/reference/cli/status.md b/docs/src/content/docs/reference/cli/status.md deleted file mode 100644 index 4552526..0000000 --- a/docs/src/content/docs/reference/cli/status.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: status -description: Check the current KiLM and KiCad configuration status. ---- - -The `kilm status` command provides a summary of the current KiLM setup and relevant KiCad configurations. - -## Usage - -```bash -kilm status [OPTIONS] -``` - -## Options - -- `--help`: - Show the help message and exit. - -## Behavior - -The command gathers and displays information about: - -- **KiLM Configuration:** Details from `config.yaml`, such as registered library names and potentially paths. -- **KiCad Configuration Directory:** The location KiLM detected for KiCad's configuration files. -- **KiCad Environment Variables:** Lists the environment variables currently set within KiCad's `kicad_common.json` file. -- **KiCad Pinned Libraries:** Shows the symbol and footprint libraries currently marked as favorites (pinned) in `kicad_common.json`. -- **KiCad Configured Libraries:** Lists the symbol and footprint libraries currently present in KiCad's `sym-lib-table` and `fp-lib-table`. - -## Example - -```bash -kilm status -``` - -_Expected Output (example structure):_ - -```text -KILM Configuration: - Configured Libraries: - GitHub Libraries (symbols/footprints): - - main-lib: /path/to/main-lib (current) - Metadata: Yes - - project-lib: /path/to/project-lib - Metadata: Yes - Cloud Libraries (3D models): - - shared-3d: /path/to/shared-3d (current) - Metadata: Yes - - kicad-official-3d: /path/to/kicad-official-3d - Current Library: /path/to/main-lib - Max Backups: 5 - ---- KiCad Configuration --- -KiCad configuration directory: /home/user/.config/kicad/7.0/ - -Environment Variables in KiCad: - KICAD_USER_LIB = /path/to/main-lib - PROJECT_LIB = /path/to/project-lib - SHARED_3D = /path/to/shared-3d - KICAD7_3DMODEL_DIR = /path/to/kicad-official-3d - -Pinned Libraries in KiCad: - Symbol Libraries: - - Device - - main-lib - Footprint Libraries: - - Package_SO - - main-lib - -Configured Symbol Libraries: - - Device: ${KICAD7_SYMBOL_DIR}/Device.kicad_sym - - main-lib: ${KICAD_USER_LIB}/main-lib.kicad_sym - - project-lib: ${PROJECT_LIB}/project-lib.kicad_sym - -Configured Footprint Libraries: - - Capacitor_SMD: ${KICAD7_FOOTPRINT_DIR}/Capacitor_SMD.pretty - - main-lib: ${KICAD_USER_LIB}/main-lib.pretty - - project-lib: ${PROJECT_LIB}/project-lib.pretty -``` - -This command is useful for verifying that your `kilm setup` commands have applied correctly and for understanding the current state recognised by both KiLM and KiCad. diff --git a/docs/src/content/docs/reference/cli/template.mdx b/docs/src/content/docs/reference/cli/template.mdx deleted file mode 100644 index 0f6d314..0000000 --- a/docs/src/content/docs/reference/cli/template.mdx +++ /dev/null @@ -1,291 +0,0 @@ ---- -title: template -description: Manage KiCad project templates. ---- - -import { Tabs, TabItem } from "@astrojs/starlight/components"; - -The `kilm template` command group provides tools for creating, managing, and using KiCad project templates. Templates allow you to standardize the starting structure for new projects. - -Templates are stored within a `templates` directory inside a KiLM-managed library. - -## Subcommands - - - - -Creates a new project template from an existing KiCad project directory. - -#### Usage - -```bash -kilm template make [project_path] [OPTIONS] -``` - -- ``: **Required.** The name for the new template. -- `[project_path]`: The path to the KiCad project directory to use as the source. Defaults to the current directory. - -#### Options - -- `--description TEXT`: A description for the template. -- `--use-case TEXT`: Describe the intended use case for this template. -- `--variable TEXT`: Define a variable for the template (key=value pair). Can be used multiple times. These variables can be used within template filenames using `%{variable}` syntax and within file content using Jinja2 `{{variable}}` syntax. -- `--exclude TEXT`: Glob pattern (like `.gitignore`) to exclude specific files or directories from the template. Can be used multiple times. -- `--output-directory DIRECTORY`: - Specifies the directory where the `templates/` structure will be created. Defaults to the `templates` directory within the KiLM library containing the current working directory. - _Example:_ `kilm template make my-tmpl --output-directory /path/to/central/templates/dir` -- `--non-interactive`: - Create the template without interactive prompts for configuration or variable detection. Default: `False` (interactive). -- `--dry-run`: - Preview template creation without actually creating files. -- `--force`: - Overwrite the template directory if it already exists. Default: `False`. -- `--help`: Show help message. - -#### Behavior - -1. **Scans Project:** Analyzes the source project directory. -2. **Determines Output:** Finds the target `templates/` directory (either default or via `--output-directory`). -3. **Creates Template Structure:** Creates `templates//`. -4. **Copies Files:** Copies project files into `templates//template/`, respecting `.gitignore` and `--exclude` patterns. -5. **Filename Templating:** Renames files using Windows-compatible syntax based on detected project names and provided/detected variables (e.g., `MyProject.kicad_pro` becomes `%{project_filename}.kicad_pro.jinja2`). -6. **Creates `metadata.yaml`:** Generates a `metadata.yaml` file containing the template name, description, use case, detected/defined variables, and exclusions. -7. **(Optional) Creates Hooks:** Can set up pre/post-creation hook scripts (e.g., `hooks/post_create.py`). - -#### Examples - -**Create template 'basic-mcu' from current directory (interactive):** - -```bash -cd /path/to/my-base-project -kilm template make basic-mcu -``` - -**Create template from specific path with variables, excluding backups:** - -```bash -kilm template make advanced-fpga path/to/fpga-project \ - --description "Advanced FPGA project setup" \ - --variable "board_rev=1.2" \ - --variable "default_author=Jane Doe" \ - --exclude "*.bak" \ - --exclude "build/" -``` - - - - -Creates a new KiCad project based on an existing template. - -#### Usage - -```bash -kilm template create [output_path] [OPTIONS] -``` - -- ``: **Required.** The name for the new KiCad project. If this contains path separators (e.g., `path/to/MyNewBoard`), the last component is used as the project name, and the preceding path is used as the default `output_path`. -- `[output_path]`: The directory where the new project will be created. If omitted, defaults to a directory named `` in the current location, or the path derived from ``. - -#### Options - -- `--template TEXT`: The name of the template to use. If not specified, KiLM will list available templates and prompt for selection. -- `--set-var TEXT`: Set a value for a template variable (key=value). Can be used multiple times. Overrides default values from `metadata.yaml`. -- `--library TEXT`: Specify the KiLM library containing the template (needed if multiple libraries have templates with the same name). -- `--skip-hooks`: Do not run any post-creation hook scripts defined in the template. Default: `False` (hooks run). -- `--dry-run`: Preview project creation without creating files. -- `--help`: Show help message. - -#### Behavior - -1. **Finds Template:** Locates the specified (or selected) template within the configured KiLM libraries. -2. **Reads Metadata:** Loads `metadata.yaml` to get variables and configuration. -3. **Determines Variables:** - - Combines default variables from `metadata.yaml` with any values provided via `--set-var`. - - **Interactively prompts** for any remaining variables sequentially. - - **Crucially:** When prompting for a variable, its default value is calculated _just-in-time_ using the values of variables already entered in the current session. This allows defaults to depend on previous inputs (e.g., the default `directory_name` can be based on the entered `project_name`). -4. **Copies and Renders:** Copies files from the template's `template/` directory to the output path. -5. **Processes Templates:** - - Renders filenames using Windows-compatible `%{variable}` syntax (with fallback support for legacy `{{variable}}` syntax) - - Renders file content using Jinja2 `{{variable}}` syntax for `.jinja2` files -6. **(Optional) Runs Hooks:** Executes the `hooks/post_create.py` script if it exists and `--skip-hooks` was not used. - -#### Examples - -**Create project 'MyNewBoard' using 'basic-mcu' template (will prompt for template selection if ambiguous):** - -```bash -kilm template create MyNewBoard -``` - -**Create project in specific dir, specifying template, setting variables:** - -```bash -kilm template create SensorModule projects/sensor --template advanced-fpga \ - --set-var board_rev=2.0 \ - --set-var default_author="My Name" -``` - -**Create project using a path:** - -```bash -# Creates project 'MyBoard' inside './new_projects/' -kilm template create new_projects/MyBoard --template basic-mcu -``` - - - - -Lists available project templates found in the configured KiLM libraries. - -#### Usage - -```bash -kilm template list [OPTIONS] -``` - -#### Options - -- `--library TEXT`: List templates only from the specified KiLM library name. -- `-v, --verbose`: Show detailed information, including template description, use case, and variables. -- `--json`: Output the list in JSON format. -- `--help`: Show help message. - -#### Examples - -**List all available templates:** - -```bash -kilm template list -``` - -**List templates with details:** - -```bash -kilm template list --verbose -``` - -**List templates from 'my-main-lib' in JSON:** - -```bash -kilm template list --library my-main-lib --json -``` - - - - -## Template Structure - -Templates reside within a `templates` directory inside a library initialized with `kilm init`: - -```plaintext -your-kilm-library/ -├── kilm.yaml -├── symbols/ -├── footprints/ -└── templates/ - └── template-name/ - ├── metadata.yaml # Template config (name, desc, vars) - ├── hooks/ - │ └── post_create.py # Optional post-creation script - └── template/ # Files to be copied and rendered - ├── %{project_filename}.kicad_pro.jinja2 - ├── %{project_filename}.kicad_sch.jinja2 - ├── %{project_filename}.kicad_pcb.jinja2 - ├── README.md.jinja2 - └── assets/ - └── logo-%{company_name|lower}.png.jinja2 -``` - -- **`metadata.yaml`**: Defines template variables and descriptions. -- **`hooks/`**: Contains optional Python scripts to run after project creation. -- **`template/`**: Holds the project files. - - Files ending in `.jinja2` will have their content processed by Jinja2. - - **Filenames containing `%{...}` will be renamed based on variable values during project creation** (Windows-compatible syntax). - - **Legacy support**: Filenames with `{{ ... }}` are still supported but may cause issues on Windows. - - The special variable `%{project_filename}` is automatically derived from the project name provided to `kilm template create` and should be used for the main KiCad project files (`.kicad_pro`, `.kicad_sch`, `.kicad_pcb`). - -### Filename Templating Syntax - -KiLM supports a Windows-compatible filename templating syntax using `%{variable}` instead of `{{variable}}`: - -**Basic usage:** - -- `%{project_name}.kicad_pro` → `MyProject.kicad_pro` -- `%{author}.md` → `JohnDoe.md` - -**With transformations:** - -- `%{project_name.lower}` → converts to lowercase -- `%{project_name.upper}` → converts to uppercase -- `%{project_name.replace(' ', '-')}` → replaces spaces with dashes -- `%{project_name.replace(' ', '_').lower}` → chain transformations - -**Examples:** - -- `%{project_name.lower}.kicad_sch` → `myproject.kicad_sch` -- `%{project_name.replace(' ', '-')}.kicad_pcb` → `my-project.kicad_pcb` -- `%{author.upper.replace(' ', '_')}.md` → `JOHN_DOE.md` - -:::note[Windows Compatibility] -The new `%{variable}` syntax is recommended for cross-platform compatibility. The old `{{variable}}` syntax still works but may cause filename issues on Windows systems due to character restrictions. -::: - -### Example: `metadata.yaml` - -This file defines the template's properties and the variables users will be prompted for. - -```yaml -description: "Standard 4-layer PCB projects" -name: default-4layer -use_case: "Standard 4-layer PCB projects" -variables: - project_name: - description: Main KiCad project name (with spaces, e.g., Power Supply) - subproject_name: - description: Subproject/Module name (with spaces, e.g., Controller Board) - directory_name_prefix: - default: Hardware - description: Top-level directory name (e.g., Hardware or Hardware_ProjectX) - directory_name: - default: "%{directory_name_prefix}_%{project_name.replace(' ', '')}_%{subproject_name.replace(' ', '')}" - description: Full directory name (e.g., Hardware_PowerSupply_ControllerBoard) - author: - default: YourCompanyName - description: Author/Company name (used in documentation and KiCad files) - author_position: - description: Author position (e.g., Hardware Engineer) - version: - default: V0.1 - description: Initial version number (e.g., V0.1) -version: 1.0.0 # Template version, distinct from project version variable -``` - -### Example: Using Variables in a Template File (`README.md.jinja2`) - -Template files within the `template/` directory can use Jinja2 syntax (`{{ variable_name }}`) to insert values provided by the user during `kilm template create`. - -```markdown -# {{ project_name }} {{ subproject_name }} - -## Overview - -This repository contains the PCB design files for the {{ project_name }} {{ subproject_name }} project. - -Created by: {{ author }} ({{ author_position }}) -Version: {{ version }} - -## Libraries and Footprints (KiLM) - -This project template relies on **KiLM** for managing common, shared KiCad libraries... - -[... rest of README content ...] -``` - -:::tip[Syntax Differences] - -- **File content** (inside `.jinja2` files): Use Jinja2 syntax `{{ variable_name }}` -- **Filenames**: Use Windows-compatible syntax `%{variable_name}` for new templates -- **Legacy filenames**: Old `{{ variable_name }}` syntax in filenames still works but may cause issues on Windows - ::: - -When a user runs `kilm template create MyProject Controller --template default-4layer` and provides values for `author`, `author_position`, and `version`, the resulting `README.md` in their new project directory will have the `{{ ... }}` placeholders replaced with the actual values. diff --git a/docs/src/content/docs/reference/cli/unpin.md b/docs/src/content/docs/reference/cli/unpin.md deleted file mode 100644 index 53cc9ae..0000000 --- a/docs/src/content/docs/reference/cli/unpin.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: unpin -description: Remove libraries from KiCad's pinned (favorite) list. ---- - -The `kilm unpin` command removes specified symbol and/or footprint libraries from KiCad's "Pinned Libraries" list. - -It operates by modifying the `pinned_symbol_libs` and `pinned_fp_libs` arrays within KiCad's `kicad_common.json` configuration file. - -**Note:** Changes require restarting KiCad. - -## Usage - -```bash -kilm unpin [OPTIONS] -``` - -## Options - -- `-s, --symbols TEXT`: - Specify the name of a symbol library currently in the pinned list to remove. Use this option multiple times to unpin several libraries. - _Example:_ `kilm unpin -s Device -s MyCustomSymbols` - -- `-f, --footprints TEXT`: - Specify the name of a footprint library currently in the pinned list to remove. Use this option multiple times to unpin several libraries. - _Example:_ `kilm unpin -f Package_SO -f MyCustomFootprints` - -- `--all`: - Unpin _all_ currently pinned symbol and footprint libraries. Cannot be used if `-s` or `-f` are specified. - _Example:_ `kilm unpin --all` - -- `--dry-run`: - Show which libraries would be removed from the pinned list without actually modifying `kicad_common.json`. - _Example:_ `kilm unpin --all --dry-run` - -- `--max-backups INTEGER`: - Maximum number of timestamped backups KiLM should keep for `kicad_common.json`. Default: `5`. - _Example:_ `kilm unpin --max-backups 3` - -- `-v, --verbose`: - Show detailed output during the unpinning process. - _Example:_ `kilm unpin -s MyLib --verbose` - -- `--help`: - Show this help message and exit. - -## Behavior - -1. Locates the KiCad configuration directory and `kicad_common.json`. -2. Creates a backup of `kicad_common.json` (unless `--dry-run`). -3. Reads the current pinned lists (`pinned_symbol_libs`, `pinned_fp_libs`) from `kicad_common.json`. -4. Determines the target libraries: - - If `--all`, targets all libraries found in the lists. - - Otherwise, targets libraries specified via `-s` and `-f`. -5. Removes the target library names from the respective lists. -6. Writes the updated lists back to `kicad_common.json` (unless `--dry-run`). - -## Examples - -**Unpin specific libraries:** - -```bash -kilm unpin -s ObsoleteSymLib -f OldFootprintLib -``` - -**Unpin all libraries:** - -```bash -kilm unpin --all -``` - -**Preview unpinning specific libraries:** - -```bash -kilm unpin -s Device -f Package_SO --dry-run -``` - -**Unpin all libraries with verbose output:** - -```bash -kilm unpin --all -v -``` diff --git a/docs/src/content/docs/reference/cli/update.md b/docs/src/content/docs/reference/cli/update.md deleted file mode 100644 index 25a1c23..0000000 --- a/docs/src/content/docs/reference/cli/update.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: update -description: Update configured Git-based libraries using `git pull`. ---- - -The `kilm update` command attempts to update all configured symbol, footprint, and template libraries (type `github`) that are identified as Git repositories by running `git pull` within their directories. - -This command helps keep your local copies of shared libraries synchronized with their remote Git repositories. - -## Usage - -```bash -kilm update [OPTIONS] -``` - -## Options - -- `--dry-run`: - Show which libraries are detected as Git repositories and would be updated, but do not actually run `git pull`. - _Example:_ `kilm update --dry-run` - -- `--verbose`: - Show detailed output during the update process, including the full output from the `git pull` commands. - _Example:_ `kilm update --verbose` - -- `--auto-setup`: - If the `git pull` operation results in changes that likely require updating KiCad's configuration (e.g., new symbol or footprint libraries detected), automatically run `kilm setup` after the updates are complete. Default: `False`. - _Example:_ `kilm update --auto-setup` - -- `--help`: - Show the help message and exit. - -## Behavior - -1. **Reads KiLM Config:** Loads library information from `config.yaml`. -2. **Identifies `github` Libraries:** Filters for libraries with type `github`. -3. **Checks for `.git`:** For each library path, checks if it exists and contains a `.git` directory. -4. **Runs `git pull`:** If it's a valid Git repository, navigates into the directory and executes `git pull` (unless `--dry-run`). -5. **Checks for Changes:** After a successful pull, analyzes the output and file system to detect if new symbol libraries (`.kicad_sym`), footprint libraries (`.pretty`), or templates (`templates/*/metadata.yaml`) were added. -6. **Reports & Optional Setup:** Summarizes the update results. If changes requiring configuration updates were detected, it recommends running `kilm setup` or runs it automatically if `--auto-setup` was specified. - -## Examples - -**Update all Git-based libraries:** - -```bash -kilm update -``` - -**Preview which libraries would be updated:** - -```bash -kilm update --dry-run -``` - -**Update libraries with detailed output:** - -```bash -kilm update --verbose -``` - -**Update libraries and automatically run setup if needed:** - -```bash -kilm update --auto-setup -``` - -**Note:** If `git pull` fails (e.g., due to local changes or merge conflicts), you will need to resolve the issues manually within the affected repository directory using standard Git commands before `kilm update` can succeed for that library. From fbe37a059ff675b008a93f1ea88df1085fac6e04 Mon Sep 17 00:00:00 2001 From: barisgit Date: Fri, 5 Sep 2025 00:06:06 +0200 Subject: [PATCH 4/6] Make all docs be mdx and update them to match implementation --- docs/README.md | 13 +- docs/astro.config.mjs | 4 +- docs/package.json | 9 +- docs/pnpm-lock.yaml | 782 ++++++++++++++++++ .../{contributing.md => contributing.mdx} | 0 .../src/content/docs/community/development.md | 75 -- .../content/docs/community/development.mdx | 153 ++++ .../community/{license.md => license.mdx} | 0 .../src/content/docs/guides/configuration.mdx | 113 ++- .../content/docs/guides/getting-started.mdx | 12 +- docs/src/content/docs/guides/installation.md | 70 -- docs/src/content/docs/guides/installation.mdx | 93 +++ ...troubleshooting.md => troubleshooting.mdx} | 0 docs/src/content/docs/index.mdx | 247 ++---- docs/src/content/docs/reference/cli/index.md | 24 - docs/src/styles/global.css | 70 +- kicad_lib_manager/commands/add_3d/docs.md | 80 -- kicad_lib_manager/commands/add_3d/docs.mdx | 159 ++++ kicad_lib_manager/commands/add_hook/docs.md | 113 --- kicad_lib_manager/commands/add_hook/docs.mdx | 183 ++++ kicad_lib_manager/commands/init/docs.md | 87 -- kicad_lib_manager/commands/init/docs.mdx | 189 +++++ .../commands/list_libraries/docs.md | 64 -- .../commands/list_libraries/docs.mdx | 165 ++++ .../commands/pin/{docs.md => docs.mdx} | 4 +- .../commands/setup/{docs.md => docs.mdx} | 4 +- .../commands/status/{docs.md => docs.mdx} | 2 + .../commands/unpin/{docs.md => docs.mdx} | 2 + .../commands/update/{docs.md => docs.mdx} | 4 +- 29 files changed, 1966 insertions(+), 755 deletions(-) rename docs/src/content/docs/community/{contributing.md => contributing.mdx} (100%) delete mode 100644 docs/src/content/docs/community/development.md create mode 100644 docs/src/content/docs/community/development.mdx rename docs/src/content/docs/community/{license.md => license.mdx} (100%) delete mode 100644 docs/src/content/docs/guides/installation.md create mode 100644 docs/src/content/docs/guides/installation.mdx rename docs/src/content/docs/guides/{troubleshooting.md => troubleshooting.mdx} (100%) delete mode 100644 docs/src/content/docs/reference/cli/index.md delete mode 100644 kicad_lib_manager/commands/add_3d/docs.md create mode 100644 kicad_lib_manager/commands/add_3d/docs.mdx delete mode 100644 kicad_lib_manager/commands/add_hook/docs.md create mode 100644 kicad_lib_manager/commands/add_hook/docs.mdx delete mode 100644 kicad_lib_manager/commands/init/docs.md create mode 100644 kicad_lib_manager/commands/init/docs.mdx delete mode 100644 kicad_lib_manager/commands/list_libraries/docs.md create mode 100644 kicad_lib_manager/commands/list_libraries/docs.mdx rename kicad_lib_manager/commands/pin/{docs.md => docs.mdx} (95%) rename kicad_lib_manager/commands/setup/{docs.md => docs.mdx} (97%) rename kicad_lib_manager/commands/status/{docs.md => docs.mdx} (97%) rename kicad_lib_manager/commands/unpin/{docs.md => docs.mdx} (97%) rename kicad_lib_manager/commands/update/{docs.md => docs.mdx} (94%) diff --git a/docs/README.md b/docs/README.md index 19e33b2..c05259a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -5,7 +5,7 @@ This repository contains the documentation for [KiLM (KiCad Library Manager)](https://github.com/barisgit/KiLM), a command-line tool for managing KiCad libraries across projects and workstations. -## 📚 Documentation Structure +## Documentation Structure The documentation is organized into the following sections: @@ -13,7 +13,7 @@ The documentation is organized into the following sections: - **Reference**: Detailed command and API references - **Community**: Information about contributing and development -## 🧞 Commands +## Commands All commands are run from the root of the project, from a terminal: @@ -24,10 +24,10 @@ All commands are run from the root of the project, from a terminal: | `pnpm build` | Build your production site to `./dist/` | | `pnpm preview` | Preview your build locally, before deploying | -## 🛠️ Project Structure +## Project Structure ``` -. +docs/ ├── public/ # Static assets ├── src/ │ ├── assets/ # Images and other assets @@ -38,10 +38,11 @@ All commands are run from the root of the project, from a terminal: │ │ │ └── community/ # Contributing guidelines │ └── content.config.ts # Content collection config ├── astro.config.mjs # Astro configuration -└── package.json +├── package.json +└── README.md # This file ``` -## 🔗 Links +## Links - [KiLM Documentation Website](https://kilm.aristovnik.me) - [Starlight Documentation](https://starlight.astro.build/) diff --git a/docs/astro.config.mjs b/docs/astro.config.mjs index f963ef4..7ce8c94 100644 --- a/docs/astro.config.mjs +++ b/docs/astro.config.mjs @@ -3,6 +3,7 @@ import { defineConfig, passthroughImageService } from "astro/config"; import starlight from "@astrojs/starlight"; import tailwindcss from "@tailwindcss/vite"; +import starlightSiteGraph from "starlight-site-graph"; // https://astro.build/config export default defineConfig({ @@ -14,6 +15,7 @@ export default defineConfig({ integrations: [ starlight({ + // plugins: [starlightSiteGraph()], title: "KiLM", customCss: [ // Path to your custom CSS file (relative to src) @@ -48,7 +50,7 @@ export default defineConfig({ { label: "Command Reference", items: [ - { label: "Overview", link: "/reference/cli/" }, // Optional: Add an overview page + { label: "Overview", link: "/reference/cli/" }, { label: "init", link: "/reference/cli/init/" }, { label: "add-3d", link: "/reference/cli/add-3d/" }, { label: "config", link: "/reference/cli/config/" }, diff --git a/docs/package.json b/docs/package.json index 2c6e1e2..6ee2917 100644 --- a/docs/package.json +++ b/docs/package.json @@ -18,13 +18,14 @@ "@tailwindcss/vite": "^4.1.4", "astro": "^5.6.1", "prettier": "^3.6.2", + "starlight-site-graph": "^0.5.0", "tailwindcss": "^4.1.4" }, "devDependencies": { - "sharp": "^0.32.6", - "tsx": "^4.19.3", - "chokidar": "^4.0.2", "@types/node": "^22.10.3", - "concurrently": "^9.1.0" + "chokidar": "^4.0.2", + "concurrently": "^9.1.0", + "sharp": "^0.32.6", + "tsx": "^4.19.3" } } diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index b64ee3a..42591db 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -23,6 +23,9 @@ importers: prettier: specifier: ^3.6.2 version: 3.6.2 + starlight-site-graph: + specifier: ^0.5.0 + version: 0.5.0(@astrojs/starlight@0.33.2(astro@5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3)))(astro@5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3)) tailwindcss: specifier: ^4.1.4 version: 4.1.4 @@ -643,6 +646,102 @@ packages: peerDependencies: vite: ^5.2.0 || ^6 + '@types/chroma-js@3.1.1': + resolution: {integrity: sha512-SFCr4edNkZ1bGaLzGz7rgR1bRzVX4MmMxwsIa3/Bh6ose8v+hRpneoizHv0KChdjxaXyjRtaMq7sCuZSzPomQA==} + + '@types/d3-array@3.2.1': + resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} + + '@types/d3-axis@3.0.6': + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} + + '@types/d3-brush@3.0.6': + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} + + '@types/d3-chord@3.0.6': + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-contour@3.0.6': + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} + + '@types/d3-delaunay@6.0.4': + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} + + '@types/d3-dispatch@3.0.7': + resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==} + + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + + '@types/d3-dsv@3.0.7': + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-fetch@3.0.7': + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} + + '@types/d3-force@3.0.10': + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} + + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + + '@types/d3-geo@3.1.0': + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-polygon@3.0.2': + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} + + '@types/d3-quadtree@3.0.6': + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} + + '@types/d3-random@3.0.3': + resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} + + '@types/d3-scale-chromatic@3.1.0': + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-selection@3.0.11': + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} + + '@types/d3-shape@3.1.7': + resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==} + + '@types/d3-time-format@4.0.3': + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + + '@types/d3-transition@3.0.9': + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} + + '@types/d3-zoom@3.0.8': + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + + '@types/d3@7.4.3': + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} + '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -652,6 +751,9 @@ packages: '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -724,6 +826,9 @@ packages: arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -734,6 +839,10 @@ packages: array-iterate@2.0.1: resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} + ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + astring@1.9.0: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true @@ -743,6 +852,11 @@ packages: peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 + astro-integration-kit@0.18.0: + resolution: {integrity: sha512-Z0QW5IQjosuKQDEGYYkvUX6EhEtrmE4/oViqWz23QveV8U7AuyFsTdg00WRNPevWZl/5a4lLUeDpv4bCRynRRg==} + peerDependencies: + astro: ^4.12.0 || ^5.0.0 + astro@5.7.0: resolution: {integrity: sha512-LxvWFlCQSxRLqvtCfZ/LFzlaHcvX++qtq0NrRmwtDmrZhAyHOoVfLkxEE0STKgn0wjLTuETyBrgCBWe2eb68/A==} engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} @@ -813,6 +927,10 @@ packages: resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} engines: {node: '>=18'} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + brotli@1.3.3: resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} @@ -853,6 +971,9 @@ packages: chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + chroma-js@3.1.2: + resolution: {integrity: sha512-IJnETTalXbsLx1eKEgx19d5L6SRM7cH4vINw/99p/M11HCuXGRWL+6YmCm7FWFGIo6dtWuQoQi1dc5yQ7ESIHg==} + ci-info@4.2.0: resolution: {integrity: sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==} engines: {node: '>=8'} @@ -893,6 +1014,10 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + common-ancestor-path@1.0.1: resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} @@ -926,6 +1051,133 @@ packages: engines: {node: '>=4'} hasBin: true + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} + + d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} + + d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} + + d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} + + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + + d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + + d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} + + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} + + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + + d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} + engines: {node: '>=12'} + debug@4.4.0: resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} @@ -949,6 +1201,9 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + delaunator@5.0.1: + resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -984,6 +1239,19 @@ packages: dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + dset@3.1.4: resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} engines: {node: '>=4'} @@ -1008,6 +1276,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + es-module-lexer@1.6.0: resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} @@ -1030,6 +1302,11 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + estree-util-attach-comments@3.0.0: resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} @@ -1064,6 +1341,10 @@ packages: expressive-code@0.41.1: resolution: {integrity: sha512-O3+bDWGw+y7b0L3Y3xc7LbPgRTvFy2tqXzYY24TBbDwnHbIwb0OFdS4v+1PpX6NEsF7XsVv9sqY5xo22yWe7Hw==} + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -1081,6 +1362,10 @@ packages: picomatch: optional: true + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + flattie@1.1.1: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} engines: {node: '>=8'} @@ -1116,6 +1401,10 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + h3@1.15.1: resolution: {integrity: sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==} @@ -1192,12 +1481,19 @@ packages: html-whitespace-sensitive-tag-names@3.0.1: resolution: {integrity: sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==} + htmlparser2@10.0.0: + resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} + http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} i18next@23.16.8: resolution: {integrity: sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -1213,6 +1509,10 @@ packages: inline-style-parser@0.2.4: resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + iron-webcrypto@1.2.1: resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} @@ -1233,6 +1533,10 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -1245,6 +1549,10 @@ packages: engines: {node: '>=14.16'} hasBin: true + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -1257,10 +1565,18 @@ packages: resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} hasBin: true + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} @@ -1521,6 +1837,10 @@ packages: micromark@4.0.2: resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} @@ -1628,6 +1948,9 @@ packages: parse5@7.2.1: resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -1695,6 +2018,10 @@ packages: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} + recast@0.23.11: + resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} + engines: {node: '>= 4'} + recma-build-jsx@1.0.0: resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} @@ -1784,20 +2111,33 @@ packages: retext@9.0.0: resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} + robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + rollup@4.40.0: resolution: {integrity: sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + semver@7.7.1: resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} engines: {node: '>=10'} @@ -1843,6 +2183,10 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} @@ -1850,6 +2194,21 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + starlight-site-graph@0.5.0: + resolution: {integrity: sha512-/FYCXDg+JwQGtxaDy1X/Lhhc5CYAF0ThOWvzBH3VmJSRlpAhqWgoUS/mGUNSy+QqGns+een+VDma+dkfBVWggA==} + peerDependencies: + '@astrojs/starlight': '>=0.33.0' + astro: '>=5.5.0' + pixi-stats: ^1.3.10 + peerDependenciesMeta: + '@astrojs/starlight': + optional: true + pixi-stats: + optional: true + stream-replace-string@2.0.0: resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} @@ -1878,6 +2237,10 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} + strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -1922,6 +2285,9 @@ packages: tiny-inflate@1.0.3: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} @@ -1929,6 +2295,10 @@ packages: resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} engines: {node: '>=12.0.0'} + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -2756,6 +3126,125 @@ snapshots: tailwindcss: 4.1.4 vite: 6.2.6(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.20.5) + '@types/chroma-js@3.1.1': {} + + '@types/d3-array@3.2.1': {} + + '@types/d3-axis@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-brush@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-chord@3.0.6': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-contour@3.0.6': + dependencies: + '@types/d3-array': 3.2.1 + '@types/geojson': 7946.0.16 + + '@types/d3-delaunay@6.0.4': {} + + '@types/d3-dispatch@3.0.7': {} + + '@types/d3-drag@3.0.7': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-dsv@3.0.7': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-fetch@3.0.7': + dependencies: + '@types/d3-dsv': 3.0.7 + + '@types/d3-force@3.0.10': {} + + '@types/d3-format@3.0.4': {} + + '@types/d3-geo@3.1.0': + dependencies: + '@types/geojson': 7946.0.16 + + '@types/d3-hierarchy@3.1.7': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.1': {} + + '@types/d3-polygon@3.0.2': {} + + '@types/d3-quadtree@3.0.6': {} + + '@types/d3-random@3.0.3': {} + + '@types/d3-scale-chromatic@3.1.0': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-selection@3.0.11': {} + + '@types/d3-shape@3.1.7': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time-format@4.0.3': {} + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + + '@types/d3-transition@3.0.9': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-zoom@3.0.8': + dependencies: + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.11 + + '@types/d3@7.4.3': + dependencies: + '@types/d3-array': 3.2.1 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.3 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.4 + '@types/d3-dispatch': 3.0.7 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.10 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.0 + '@types/d3-hierarchy': 3.1.7 + '@types/d3-interpolate': 3.0.4 + '@types/d3-path': 3.1.1 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.3 + '@types/d3-scale': 4.0.9 + '@types/d3-scale-chromatic': 3.1.0 + '@types/d3-selection': 3.0.11 + '@types/d3-shape': 3.1.7 + '@types/d3-time': 3.0.4 + '@types/d3-time-format': 4.0.3 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.9 + '@types/d3-zoom': 3.0.8 + '@types/debug@4.1.12': dependencies: '@types/ms': 2.1.0 @@ -2766,6 +3255,8 @@ snapshots: '@types/estree@1.0.7': {} + '@types/geojson@7946.0.16': {} + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 @@ -2827,12 +3318,20 @@ snapshots: arg@5.0.2: {} + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + argparse@2.0.1: {} aria-query@5.3.2: {} array-iterate@2.0.1: {} + ast-types@0.16.1: + dependencies: + tslib: 2.8.1 + astring@1.9.0: {} astro-expressive-code@0.41.1(astro@5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3)): @@ -2840,6 +3339,12 @@ snapshots: astro: 5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3) rehype-expressive-code: 0.41.1 + astro-integration-kit@0.18.0(astro@5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3)): + dependencies: + astro: 5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3) + pathe: 1.1.2 + recast: 0.23.11 + astro@5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3): dependencies: '@astrojs/compiler': 2.11.0 @@ -3003,6 +3508,10 @@ snapshots: widest-line: 5.0.0 wrap-ansi: 9.0.0 + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + brotli@1.3.3: dependencies: base64-js: 1.5.1 @@ -3037,6 +3546,8 @@ snapshots: chownr@1.1.4: {} + chroma-js@3.1.2: {} + ci-info@4.2.0: {} cli-boxes@3.0.0: {} @@ -3071,6 +3582,8 @@ snapshots: comma-separated-tokens@2.0.3: {} + commander@7.2.0: {} + common-ancestor-path@1.0.1: {} concurrently@9.2.1: @@ -3105,6 +3618,158 @@ snapshots: cssesc@3.0.0: {} + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-axis@3.0.0: {} + + d3-brush@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3-chord@3.0.1: + dependencies: + d3-path: 3.1.0 + + d3-color@3.1.0: {} + + d3-contour@4.0.2: + dependencies: + d3-array: 3.2.4 + + d3-delaunay@6.0.4: + dependencies: + delaunator: 5.0.1 + + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-dsv@3.0.1: + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + + d3-ease@3.0.1: {} + + d3-fetch@3.0.1: + dependencies: + d3-dsv: 3.0.1 + + d3-force@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + + d3-format@3.1.0: {} + + d3-geo@3.1.1: + dependencies: + d3-array: 3.2.4 + + d3-hierarchy@3.1.2: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@3.1.0: {} + + d3-polygon@3.0.1: {} + + d3-quadtree@3.0.1: {} + + d3-random@3.0.1: {} + + d3-scale-chromatic@3.1.0: + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-selection@3.0.0: {} + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3@7.9.0: + dependencies: + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.0 + d3-geo: 3.1.1 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + debug@4.4.0: dependencies: ms: 2.1.3 @@ -3121,6 +3786,10 @@ snapshots: defu@6.1.4: {} + delaunator@5.0.1: + dependencies: + robust-predicates: 3.0.2 + dequal@2.0.3: {} destr@2.0.5: {} @@ -3145,6 +3814,24 @@ snapshots: dlv@1.1.3: {} + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dset@3.1.4: {} emoji-regex-xs@1.0.0: {} @@ -3164,6 +3851,8 @@ snapshots: entities@4.5.0: {} + entities@6.0.1: {} + es-module-lexer@1.6.0: {} esast-util-from-estree@2.0.0: @@ -3212,6 +3901,8 @@ snapshots: escape-string-regexp@5.0.0: {} + esprima@4.0.1: {} + estree-util-attach-comments@3.0.0: dependencies: '@types/estree': 1.0.7 @@ -3258,6 +3949,10 @@ snapshots: '@expressive-code/plugin-shiki': 0.41.1 '@expressive-code/plugin-text-markers': 0.41.1 + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + extend@3.0.2: {} fast-deep-equal@3.1.3: {} @@ -3268,6 +3963,10 @@ snapshots: optionalDependencies: picomatch: 4.0.2 + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + flattie@1.1.1: {} fontkit@2.0.4: @@ -3301,6 +4000,13 @@ snapshots: graceful-fs@4.2.11: {} + gray-matter@4.0.3: + dependencies: + js-yaml: 3.14.1 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + h3@1.15.1: dependencies: cookie-es: 1.2.2 @@ -3510,12 +4216,23 @@ snapshots: html-whitespace-sensitive-tag-names@3.0.1: {} + htmlparser2@10.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 6.0.1 + http-cache-semantics@4.1.1: {} i18next@23.16.8: dependencies: '@babel/runtime': 7.27.0 + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + ieee754@1.2.1: {} import-meta-resolve@4.1.0: {} @@ -3526,6 +4243,8 @@ snapshots: inline-style-parser@0.2.4: {} + internmap@2.0.3: {} + iron-webcrypto@1.2.1: {} is-alphabetical@2.0.1: {} @@ -3541,6 +4260,8 @@ snapshots: is-docker@3.0.0: {} + is-extendable@0.1.1: {} + is-fullwidth-code-point@3.0.0: {} is-hexadecimal@2.0.1: {} @@ -3549,6 +4270,8 @@ snapshots: dependencies: is-docker: 3.0.0 + is-number@7.0.0: {} + is-plain-obj@4.1.0: {} is-wsl@3.1.0: @@ -3557,10 +4280,17 @@ snapshots: jiti@2.4.2: {} + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + js-yaml@4.1.0: dependencies: argparse: 2.0.1 + kind-of@6.0.3: {} + kleur@3.0.3: {} kleur@4.1.5: {} @@ -4089,6 +4819,11 @@ snapshots: transitivePeerDependencies: - supports-color + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + mimic-response@3.1.0: {} minimist@1.2.8: {} @@ -4196,6 +4931,8 @@ snapshots: dependencies: entities: 4.5.0 + pathe@1.1.2: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -4268,6 +5005,14 @@ snapshots: readdirp@4.1.2: {} + recast@0.23.11: + dependencies: + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.8.1 + recma-build-jsx@1.0.0: dependencies: '@types/estree': 1.0.7 @@ -4440,6 +5185,8 @@ snapshots: retext-stringify: 4.0.0 unified: 11.0.5 + robust-predicates@3.0.2: {} + rollup@4.40.0: dependencies: '@types/estree': 1.0.7 @@ -4466,14 +5213,23 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.40.0 fsevents: 2.3.3 + rw@1.3.3: {} + rxjs@7.8.2: dependencies: tslib: 2.8.1 safe-buffer@5.2.1: {} + safer-buffer@2.1.2: {} + sax@1.4.1: {} + section-matter@1.0.0: + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 + semver@7.7.1: {} sharp@0.32.6: @@ -4554,10 +5310,28 @@ snapshots: source-map-js@1.2.1: {} + source-map@0.6.1: {} + source-map@0.7.4: {} space-separated-tokens@2.0.2: {} + sprintf-js@1.0.3: {} + + starlight-site-graph@0.5.0(@astrojs/starlight@0.33.2(astro@5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3)))(astro@5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3)): + dependencies: + '@types/chroma-js': 3.1.1 + '@types/d3': 7.4.3 + astro: 5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3) + astro-integration-kit: 0.18.0(astro@5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3)) + chroma-js: 3.1.2 + d3: 7.9.0 + gray-matter: 4.0.3 + htmlparser2: 10.0.0 + micromatch: 4.0.8 + optionalDependencies: + '@astrojs/starlight': 0.33.2(astro@5.7.0(@types/node@22.18.1)(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(tsx@4.20.5)(typescript@5.8.3)) + stream-replace-string@2.0.0: {} streamx@2.22.0: @@ -4596,6 +5370,8 @@ snapshots: dependencies: ansi-regex: 6.1.0 + strip-bom-string@1.0.0: {} + strip-json-comments@2.0.1: {} style-to-js@1.1.16: @@ -4655,6 +5431,8 @@ snapshots: tiny-inflate@1.0.3: {} + tiny-invariant@1.3.3: {} + tinyexec@0.3.2: {} tinyglobby@0.2.12: @@ -4662,6 +5440,10 @@ snapshots: fdir: 6.4.3(picomatch@4.0.2) picomatch: 4.0.2 + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + tr46@0.0.3: {} tree-kill@1.2.2: {} diff --git a/docs/src/content/docs/community/contributing.md b/docs/src/content/docs/community/contributing.mdx similarity index 100% rename from docs/src/content/docs/community/contributing.md rename to docs/src/content/docs/community/contributing.mdx diff --git a/docs/src/content/docs/community/development.md b/docs/src/content/docs/community/development.md deleted file mode 100644 index 417b0e9..0000000 --- a/docs/src/content/docs/community/development.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Development Setup -description: How to set up a development environment for KiLM. ---- - -If you want to contribute to KiLM or work with the source code, follow these steps to set up a development environment. - -## 1. Clone the Repository - -First, clone the KiLM repository from GitHub: - -```bash -git clone https://github.com/barisgit/kilm.git -cd kilm -``` - -## 2. Create a Virtual Environment (Recommended) - -It's highly recommended to use a virtual environment to isolate development dependencies. - -```bash -# Using Python's built-in venv -python -m venv .venv -source .venv/bin/activate # On Windows use `.venv\Scripts\activate` -``` - -## 3. Install Dependencies - -Install KiLM in editable mode (`-e`) along with its development dependencies (`[dev]`): - -```bash -pip install -e ".[dev]" -``` - -This installs the package such that changes you make to the source code are immediately reflected when you run the `kilm` command (within the activated virtual environment). -The `[dev]` part installs extra packages needed for testing and formatting, such as `pytest` and `black`. - -## 4. Verify Installation - -You should now be able to run the development version: - -```bash -kilm --version -``` - -## Running Tests - -KiLM uses `pytest` for testing. - -```bash -# Run all tests -pytest - -# Run tests in a specific file -pytest tests/test_config_commands.py - -# Run tests with coverage reporting -pytest --cov=kicad_lib_manager --cov-report=term-missing -``` - -## Code Formatting - -KiLM uses [Black](https://github.com/psf/black) for code formatting. Ensure your code is formatted before committing: - -```bash -# Check formatting -black --check . - -# Apply formatting -black . -``` - -## Next Steps - -Now you're ready to start developing! See the [Contributing guide](/community/contributing/) for how to submit your changes. diff --git a/docs/src/content/docs/community/development.mdx b/docs/src/content/docs/community/development.mdx new file mode 100644 index 0000000..bc86fa9 --- /dev/null +++ b/docs/src/content/docs/community/development.mdx @@ -0,0 +1,153 @@ +--- +title: Development Setup +description: Complete guide for setting up a KiLM development environment with modern Python tooling. +--- + +import { Steps, Aside } from "@astrojs/starlight/components"; + +This guide covers setting up a professional development environment for KiLM with type safety, code quality tools, and testing infrastructure. + +## Prerequisites + +- **Python 3.7+**: Required for KiLM development +- **Git**: For version control and contribution workflow +- **KiCad 6.x+**: For testing KiLM integration (run at least once) + +## Development Workflow + + + +1. **Clone the Repository** + + ```bash + git clone https://github.com/barisgit/kilm.git + cd kilm + ``` + +2. **Create Virtual Environment** + + ```bash + # Using Python's built-in venv + python -m venv .venv + source .venv/bin/activate # On Windows: .venv\Scripts\activate + ``` + +3. **Install Development Dependencies** + + ```bash + # Install KiLM in editable mode with dev dependencies + pip install -e ".[dev]" + ``` + + This installs: + - KiLM in editable mode (changes reflect immediately) + - Development tools: pytest, black, ruff, pyrefly + - Pre-commit hooks and coverage tools + + + +## Verification + +Verify your development setup: + +```bash +# Check KiLM installation +kilm --version +kilm --help + +# Verify KiCad detection +kilm status +``` + +## Code Quality Standards + +KiLM follows strict code quality standards: + +### Type Safety (Required) +```bash +# Type checking with pyrefly (zero "Any" types allowed) +pyrefly + +# Check for type issues +pyrefly --check kicad_lib_manager/ +``` + +### Code Formatting +```bash +# Format code with Black +black . + +# Check formatting without applying changes +black --check . +``` + +### Linting and Analysis +```bash +# Run Ruff linting and analysis +ruff check . + +# Fix auto-fixable issues +ruff check --fix . + +# Format imports and code +ruff format . +``` + +### Testing +```bash +# Run all tests +pytest + +# Run with coverage reporting +pytest --cov=kicad_lib_manager --cov-report=html + +# Run specific test file +pytest tests/test_config_commands.py + +# Run tests with verbose output +pytest -v +``` + +## Development Tools + +### Pre-commit Hooks (Recommended) +```bash +# Install pre-commit hooks +pre-commit install + +# Run all hooks on all files +pre-commit run --all-files + +# Update hook repositories +pre-commit autoupdate +``` + +### Quality Pipeline +```bash +# Run complete quality check (to be implemented) +# This should include: pyrefly, black, ruff, pytest +make quality # or equivalent script +``` + + + +## Project Architecture + +### Core Modules +- **`cli.py`**: Click-based command interface +- **`commands/`**: Individual command implementations +- **`library_manager.py`**: Core library management logic +- **`config.py`**: KiCad configuration handling +- **`utils/`**: File operations, backups, metadata, templates + +### Development Principles +- **Professional code standards**: No emojis, no hardcoded values +- **Cross-platform compatibility**: Support Windows, macOS, Linux +- **SOLID principles**: Clean, maintainable architecture +- **CLI-focused**: Simple, reliable command-line interface + +## Next Steps + +Ready to contribute? See the [Contributing Guide](/community/contributing/) for submission guidelines and coding standards. diff --git a/docs/src/content/docs/community/license.md b/docs/src/content/docs/community/license.mdx similarity index 100% rename from docs/src/content/docs/community/license.md rename to docs/src/content/docs/community/license.mdx diff --git a/docs/src/content/docs/guides/configuration.mdx b/docs/src/content/docs/guides/configuration.mdx index 249e230..111024d 100644 --- a/docs/src/content/docs/guides/configuration.mdx +++ b/docs/src/content/docs/guides/configuration.mdx @@ -1,63 +1,102 @@ --- title: Configuration -description: Understanding KiLM configuration files. +description: Understanding KiLM configuration files and KiCad integration. --- import { Aside } from "@astrojs/starlight/components"; - +KiLM uses configuration files to manage library paths, environment variables, and KiCad integration settings. + +## Configuration File Locations + +### KiLM Configuration + +KiLM stores its main configuration in standard user directories: + +- **Linux/macOS**: `~/.config/kicad-lib-manager/config.yaml` +- **Windows**: `%USERPROFILE%\.config\kicad-lib-manager\config.yaml` -KiLM stores its main configuration file, `config.yaml`, in a standard user configuration directory: +### KiCad Configuration -- **Linux/macOS**: `~/.config/kicad-lib-manager/config.yaml` (following XDG Base Directory specification) -- **Windows**: Typically `C:\Users\\.config\kicad-lib-manager\config.yaml` (derived from `Path.home()`) +KiLM automatically detects and modifies KiCad's configuration files: -## Main Configuration File (`config.yaml`) +- **Library Tables**: `sym-lib-table` (symbols) and `fp-lib-table` (footprints) +- **Environment Variables**: `kicad_common.json` +- **Platform-specific paths**: + - Linux: `~/.config/kicad/` + - macOS: `~/Library/Preferences/kicad/` + - Windows: `%APPDATA%\kicad\` -The primary configuration file, `config.yaml`, is located within the configuration directory mentioned above. This file stores information about: +## KiLM Configuration (`config.yaml`) -- **Registered Libraries (`libraries`):** A list containing details about the libraries managed by KiLM. Each library entry includes: - - `name`: A unique identifier for the library. - - `path`: The absolute path to the library's directory. - - `type`: Specifies the kind of library. Common types include: - - `github`: Typically used for standard symbol and footprint libraries, often managed via Git. - - `cloud`: Used for 3D model libraries. -- **Current Library (`current_library`):** The path to the library currently considered "active" by KiLM. This path is used by commands like `status` and others. It can be set using the `kilm config set-default` command. -- **Maximum Backups (`max_backups`):** An integer defining the maximum number of timestamped backups KiLM should keep when modifying KiCad's native configuration files. +The `config.yaml` file manages KiLM's global settings and library registry: -This file is automatically managed by KiLM when you use commands like `init`, `add-3d`, `config set-default`, etc. Manual editing is usually not required but possible if needed. +### Configuration Structure -Example structure: +- **`libraries`**: Array of registered library entries + - `name`: Unique identifier for the library + - `path`: Absolute path to the library directory + - `type`: Library type (`github`, `cloud`, etc.) +- **`current_library`**: Path to the active library (used by `kilm status`) +- **`max_backups`**: Number of backup files to retain (default: 5) + +### Example Configuration ```yaml -current_library: /path/to/your/main-kicad-library +current_library: /home/user/kicad-libraries/company-lib libraries: - - name: my-company-kicad-library - path: /path/to/your/main-kicad-library + - name: company-symbols-footprints + path: /home/user/kicad-libraries/company-lib type: github - name: shared-3d-models - path: /path/to/shared/3d-models + path: /mnt/shared/kicad/3d-models type: cloud - - name: my-company-another-library - path: /path/to/your/other-kicad-library + - name: personal-components + path: /home/user/personal-kicad-lib type: github max_backups: 5 ``` -## KiCad Configuration Files + -KiLM interacts directly with KiCad's own configuration files to add libraries, set environment variables, and manage pinned libraries. KiLM automatically detects the location of these files (usually within KiCad's user settings directory). +## Library Metadata (`kilm.yaml`) -