diff --git a/.env.example b/.env.example index 2c9a2459a..79173356e 100644 --- a/.env.example +++ b/.env.example @@ -1,41 +1,85 @@ -# Local dev server configuration +## +# Local dev server configuration (development env only) +## + +# Environment variable DEV_SERVER_PORT="4321" -# For Docker Compose use with container mocks for E2E setup +## +# For Docker Compose use with container mocks for E2E setup (development env only) +## + +# Environment variable COMPOSE_PROJECT_NAME="wb-e2e" -# Mock ConvertKit API (WireMock container that backs E2E tests local -# and on GitHub Actions, production on Vercel) -CONVERTKIT_HTTP_PORT="9010" -CONVERTKIT_API_KEY="mock-convertkit-key" -CONVERTKIT_FORM_ID="100000" +## +# Astro DB - local file-backed dev database (token unused for file connections) +## + +# Environment variable +ASTRO_DB_REMOTE_URL="" +# Environment secret +ASTRO_DB_APP_TOKEN="" + +## +# Newsletter subscription manager +# Provided by Vercel to Function so no need to bundle with PUBLIC_ prefix +## + +# Environment variable +CONVERTKIT_HTTP_PORT="9010" # development env only for WireMock container +# Environment secret +CONVERTKIT_API_KEY="" +## # Vercel automatically sends the CRON_SECRET as an Authorization header # when it invokes your cron job. Your endpoint can then verify this secret # to ensure the request originated from Vercel. -CRON_SECRET="local-cron-secret" +## -# Like it says on the label -PUBLIC_GOOGLE_MAPS_API_KEY="" +# Environment secret +CRON_SECRET="" -# Mock Resend API (WireMock container that backs transactional email tests -# local and on GitHub Actions, production on Vercel) -RESEND_HTTP_PORT="9011" -RESEND_API_KEY="mock-resend-key" +## +# Bundled into client code so prefixed with PUBLIC_ +## +# Environment variable +PUBLIC_GOOGLE_MAPS_API_KEY="" + +## +# SMTP remailer +# Provided by Vercel to Function so no need to bundle with PUBLIC_ prefix +## + +# Environment variable +RESEND_HTTP_PORT="9011" # development env only for WireMock container +# Environment secret +RESEND_API_KEY="" + +## # Observability / external services -SENTRY_AUTH_TOKEN="dev-placeholder-sentry-token" -SENTRY_DSN="https://examplePublicKey@o0.ingest.sentry.io/0" +## +# Environment variable +PUBLIC_SENTRY_DSN="https://examplePublicKey@o0.ingest.sentry.io/0" +# Environment secret +SENTRY_AUTH_TOKEN="" + +## # Vercel deployment vars -VERCEL_TOKEN="p1vT5d4M1H2q0NjEtR9bJVxu" -VERCEL_PROJECT_ID="prj_d24xWkR5sY8pMn2qBcLe8F0Z" -VERCEL_ORG_ID="team_C7kQw5vXn0PfH3sJt2Gb9LrY" +## + +# Environment secret +VERCEL_TOKEN="" +# Environment variable +VERCEL_ORG_ID="" +# Environment variable +VERCEL_PROJECT_ID="" +## # Used for social shares on Mastodon -WEBMENTION_IO_TOKEN="dev-webmention-token" +## -# Astro DB - local file-backed dev database (token unused for file connections) -ASTRO_DB_REMOTE_URL="file:./.astro/content.db" -ASTRO_DB_APP_TOKEN="" -# ASTRO_DATABASE_FILE must be exported in the shell (see README) +# Environment secrets +WEBMENTION_IO_TOKEN="" diff --git a/.github/actions/check-prerequisites-and-locate-build-artifact/__tests__/test_main.py b/.github/actions/check-prerequisites-and-locate-build-artifact/__tests__/test_main.py new file mode 100644 index 000000000..40dc3676b --- /dev/null +++ b/.github/actions/check-prerequisites-and-locate-build-artifact/__tests__/test_main.py @@ -0,0 +1,114 @@ +from __future__ import annotations + +from pathlib import Path +from types import ModuleType +from typing import Any + +import pytest + + +def load_action_module() -> ModuleType: + action_root = Path(__file__).resolve().parents[1] + module_path = action_root / "src" / "main.py" + + import importlib.util + import sys + + spec = importlib.util.spec_from_file_location("check_prereqs", module_path) + assert spec and spec.loader + module = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = module + spec.loader.exec_module(module) + return module + + +class MockResponse: + def __init__(self, *, ok: bool, status_code: int, json_data: Any | None = None): + self.ok = ok + self.status_code = status_code + self._json_data = json_data + + def json(self) -> Any: + return self._json_data + + +def test_sets_should_deploy_false_when_missing_required_runs(monkeypatch: pytest.MonkeyPatch) -> None: + module = load_action_module() + + inputs = { + "github-token": "ghs_test", + "sha": "abc", + "required-workflows-json": '[{"id":"lint.yml","label":"Lint"}]', + "build-workflow-file": "build-preview.yml", + "artifact-name": "vercel-build-preview", + "skip-hotfix": "false", + "skip-forks": "false", + } + + monkeypatch.setenv("GITHUB_REPOSITORY", "webstackdev/astro.webstackbuilders.com") + monkeypatch.setenv("GITHUB_API_URL", "https://api.github.com") + + outputs: dict[str, str] = {} + notices: list[str] = [] + failures: list[str] = [] + + monkeypatch.setattr(module.core, "get_input", lambda name, required=False: inputs.get(name, "")) + monkeypatch.setattr(module.core, "set_output", lambda k, v: outputs.__setitem__(k, v)) + monkeypatch.setattr(module.core, "notice", lambda m: notices.append(m)) + monkeypatch.setattr(module.core, "set_failed", lambda m: failures.append(m)) + + def fake_get(url: str, **kwargs: Any) -> MockResponse: + if "/actions/workflows/lint.yml/runs" in url: + return MockResponse(ok=True, status_code=200, json_data={"workflow_runs": []}) + return MockResponse(ok=False, status_code=404) + + monkeypatch.setattr(module.requests, "get", fake_get) + + module.run() + + assert failures == [] + assert outputs["should_deploy"] == "false" + assert any("prerequisites not met" in n for n in notices) + + +def test_outputs_artifact_download_url_when_all_prereqs_succeed(monkeypatch: pytest.MonkeyPatch) -> None: + module = load_action_module() + + inputs = { + "github-token": "ghs_test", + "sha": "abc", + "required-workflows-json": '[{"id":"build-preview.yml","label":"Build Preview"}]', + "build-workflow-file": "build-preview.yml", + "artifact-name": "vercel-build-preview", + "skip-hotfix": "false", + "skip-forks": "false", + } + + monkeypatch.setenv("GITHUB_REPOSITORY", "webstackdev/astro.webstackbuilders.com") + monkeypatch.setenv("GITHUB_API_URL", "https://api.github.com") + + outputs: dict[str, str] = {} + failures: list[str] = [] + + monkeypatch.setattr(module.core, "get_input", lambda name, required=False: inputs.get(name, "")) + monkeypatch.setattr(module.core, "set_output", lambda k, v: outputs.__setitem__(k, v)) + monkeypatch.setattr(module.core, "set_failed", lambda m: failures.append(m)) + + def fake_get(url: str, **kwargs: Any) -> MockResponse: + if "/actions/workflows/build-preview.yml/runs" in url: + return MockResponse(ok=True, status_code=200, json_data={"workflow_runs": [{"id": 123, "conclusion": "success"}]}) + if "/actions/runs/123/artifacts" in url: + return MockResponse( + ok=True, + status_code=200, + json_data={"artifacts": [{"name": "vercel-build-preview", "archive_download_url": "https://api.github.com/a.zip"}]}, + ) + return MockResponse(ok=False, status_code=404) + + monkeypatch.setattr(module.requests, "get", fake_get) + + module.run() + + assert failures == [] + assert outputs["should_deploy"] == "true" + assert outputs["artifact_download_url"] == "https://api.github.com/a.zip" diff --git a/.github/actions/check-prerequisites-and-locate-build-artifact/action.yml b/.github/actions/check-prerequisites-and-locate-build-artifact/action.yml new file mode 100644 index 000000000..382b736a4 --- /dev/null +++ b/.github/actions/check-prerequisites-and-locate-build-artifact/action.yml @@ -0,0 +1,60 @@ +name: Check Prerequisites and Locate Build Artifact +description: Verifies required workflow runs succeeded for a SHA and returns the build artifact download URL. + +inputs: + github-token: + description: GitHub token used to query workflow runs and artifacts. + required: true + sha: + description: Commit SHA to verify. + required: true + trigger-event: + description: workflow_run.event (or current event) for additional gating. + required: false + default: "" + head-branch: + description: Head branch (for hotfix gating). + required: false + default: "" + is-fork: + description: "'true' if PR head repo is a fork." + required: false + default: "false" + skip-hotfix: + description: "'true' to skip when head branch starts with hotfix/." + required: false + default: "false" + skip-forks: + description: "'true' to skip when is-fork is true." + required: false + default: "false" + require-trigger-event: + description: If set, only deploy when trigger-event matches. + required: false + default: "" + build-workflow-file: + description: Workflow file name that produced the artifact (e.g. build-preview.yml). + required: true + artifact-name: + description: Artifact name to download. + required: true + required-workflows-json: + description: JSON array of {id,label} workflow descriptors that must have a successful run for the SHA. + required: true + +outputs: + should_deploy: + description: "'true' if all prerequisites succeeded and artifact exists." + value: ${{ steps.run.outputs.should_deploy }} + artifact_download_url: + description: Artifact archive download URL. + value: ${{ steps.run.outputs.artifact_download_url }} + +runs: + using: composite + steps: + - id: run + name: Verify prerequisites + working-directory: ${{ github.action_path }} + run: python3 src/main.py + shell: bash diff --git a/.github/actions/check-prerequisites-and-locate-build-artifact/src/main.py b/.github/actions/check-prerequisites-and-locate-build-artifact/src/main.py new file mode 100644 index 000000000..0efc8f0fa --- /dev/null +++ b/.github/actions/check-prerequisites-and-locate-build-artifact/src/main.py @@ -0,0 +1,200 @@ +from __future__ import annotations + +import json +import os +from dataclasses import dataclass +from typing import Any +from urllib.parse import urlparse + +import requests +from actions_toolkit import core + + +@dataclass(frozen=True) +class WorkflowDescriptor: + id: str + label: str + + +def get_github_api_base_url() -> str: + raw = (os.environ.get("GITHUB_API_URL") or "https://api.github.com").strip() + parsed = urlparse(raw) + if parsed.scheme != "https": + raise ValueError(f"Unsupported GITHUB_API_URL protocol: {parsed.scheme}") + return raw if raw.endswith("/") else f"{raw}/" + + +def create_headers(token: str, user_agent: str) -> dict[str, str]: + return { + "Authorization": f"Bearer {token}", + "Accept": "application/vnd.github+json", + "X-GitHub-Api-Version": "2022-11-28", + "User-Agent": user_agent, + } + + +def is_allowed_fetch_url(url: str, allowed_hosts: set[str]) -> bool: + parsed = urlparse(url) + return parsed.scheme == "https" and parsed.hostname in allowed_hosts + + +def fetch_json(url: str, *, token: str, allowed_hosts: set[str], user_agent: str) -> tuple[bool, int, Any | None]: + if not is_allowed_fetch_url(url, allowed_hosts): + raise ValueError(f"Blocked outbound request to untrusted URL: {url}") + + response = requests.get(url, headers=create_headers(token, user_agent), timeout=30) + if not response.ok: + return False, response.status_code, None + return True, response.status_code, response.json() + + +def parse_required_workflows(raw: str) -> list[WorkflowDescriptor]: + data = json.loads(raw) + if not isinstance(data, list): + raise ValueError("required-workflows-json must be a JSON array") + + workflows: list[WorkflowDescriptor] = [] + for entry in data: + if not isinstance(entry, dict): + raise ValueError("required-workflows-json entries must be objects") + wf_id = (entry.get("id") or "").strip() + label = (entry.get("label") or wf_id).strip() + if not wf_id: + raise ValueError("required-workflows-json entry missing id") + workflows.append(WorkflowDescriptor(id=wf_id, label=label)) + + return workflows + + +def list_successful_run_id_for_workflow( + *, owner: str, repo: str, workflow_id: str, sha: str, token: str, allowed_hosts: set[str] +) -> int | None: + base = get_github_api_base_url() + url = f"{base}repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs?head_sha={sha}&status=completed&per_page=10" + ok, status, data = fetch_json( + url, + token=token, + allowed_hosts=allowed_hosts, + user_agent="webstackbuilders-check-prerequisites-and-locate-build-artifact-action", + ) + if not ok: + raise RuntimeError(f"Unable to list workflow runs for {workflow_id} (status {status}).") + + runs = (data or {}).get("workflow_runs") or [] + for workflow_run in runs: + if (workflow_run or {}).get("conclusion") == "success": + run_id = (workflow_run or {}).get("id") + return int(run_id) if isinstance(run_id, int) else None + + return None + + +def find_artifact_download_url( + *, owner: str, repo: str, run_id: int, artifact_name: str, token: str, allowed_hosts: set[str] +) -> str | None: + base = get_github_api_base_url() + url = f"{base}repos/{owner}/{repo}/actions/runs/{run_id}/artifacts?per_page=100" + ok, status, data = fetch_json( + url, + token=token, + allowed_hosts=allowed_hosts, + user_agent="webstackbuilders-check-prerequisites-and-locate-build-artifact-action", + ) + if not ok: + raise RuntimeError(f"Unable to list artifacts for workflow run (status {status}).") + + artifacts = (data or {}).get("artifacts") or [] + for artifact in artifacts: + if (artifact or {}).get("name") == artifact_name: + url = (artifact or {}).get("archive_download_url") + return str(url) if url else None + + return None + + +def run() -> None: + try: + token = core.get_input("github-token", required=True) + sha = core.get_input("sha", required=True).strip() + trigger_event = core.get_input("trigger-event") + head_branch = core.get_input("head-branch") + is_fork = (core.get_input("is-fork") or "false").strip().lower() == "true" + skip_hotfix = (core.get_input("skip-hotfix") or "false").strip().lower() == "true" + skip_forks = (core.get_input("skip-forks") or "false").strip().lower() == "true" + require_trigger_event = (core.get_input("require-trigger-event") or "").strip() + build_workflow_file = core.get_input("build-workflow-file", required=True).strip() + artifact_name = core.get_input("artifact-name", required=True).strip() + required_workflows = parse_required_workflows(core.get_input("required-workflows-json", required=True)) + + if require_trigger_event and trigger_event and trigger_event != require_trigger_event: + core.notice( + f"Skipping deploy; trigger event {trigger_event!r} does not match required {require_trigger_event!r}." + ) + core.set_output("should_deploy", "false") + return + + if skip_hotfix and head_branch.startswith("hotfix/"): + core.notice("Skipping deploy for hotfix/* branch.") + core.set_output("should_deploy", "false") + return + + if skip_forks and is_fork: + core.notice("Skipping deploy for forked pull request.") + core.set_output("should_deploy", "false") + return + + repo_full = (os.environ.get("GITHUB_REPOSITORY") or "").strip() + if "/" not in repo_full: + raise ValueError("Missing GITHUB_REPOSITORY.") + owner, repo = repo_full.split("/", 1) + + allowed_hosts = {urlparse(get_github_api_base_url()).hostname} + + missing_or_failed: list[str] = [] + successful_runs: dict[str, int] = {} + for wf in required_workflows: + run_id = list_successful_run_id_for_workflow( + owner=owner, + repo=repo, + workflow_id=wf.id, + sha=sha, + token=token, + allowed_hosts=allowed_hosts, + ) + if not run_id: + missing_or_failed.append(wf.label) + else: + successful_runs[wf.id] = run_id + + if missing_or_failed: + core.notice(f"Skipping deploy; prerequisites not met for {sha}: {', '.join(missing_or_failed)}") + core.set_output("should_deploy", "false") + return + + build_run_id = successful_runs.get(build_workflow_file) + if not build_run_id: + core.notice(f"Skipping deploy; missing build run for {build_workflow_file} ({sha}).") + core.set_output("should_deploy", "false") + return + + artifact_download_url = find_artifact_download_url( + owner=owner, + repo=repo, + run_id=build_run_id, + artifact_name=artifact_name, + token=token, + allowed_hosts=allowed_hosts, + ) + if not artifact_download_url: + core.notice(f"Skipping deploy; missing artifact {artifact_name} for run {build_run_id}.") + core.set_output("should_deploy", "false") + return + + core.set_output("should_deploy", "true") + core.set_output("artifact_download_url", artifact_download_url) + except Exception as exc: # noqa: BLE001 + core.set_failed(str(exc)) + + +if __name__ == "__main__": + run() diff --git a/.github/actions/create-github-deployment-preview/__tests__/test_main.py b/.github/actions/create-github-deployment-preview/__tests__/test_main.py new file mode 100644 index 000000000..4497cb77e --- /dev/null +++ b/.github/actions/create-github-deployment-preview/__tests__/test_main.py @@ -0,0 +1,60 @@ +from __future__ import annotations + +from pathlib import Path +from types import ModuleType +from typing import Any + +import pytest + + +def load_action_module() -> ModuleType: + action_root = Path(__file__).resolve().parents[1] + module_path = action_root / "src" / "main.py" + + import importlib.util + import sys + + spec = importlib.util.spec_from_file_location("create_deploy_preview", module_path) + assert spec and spec.loader + module = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = module + spec.loader.exec_module(module) + return module + + +class MockResponse: + def __init__(self, *, ok: bool, status_code: int, json_data: Any): + self.ok = ok + self.status_code = status_code + self._json_data = json_data + + def json(self) -> Any: + return self._json_data + + +def test_creates_preview_deployment(monkeypatch: pytest.MonkeyPatch) -> None: + module = load_action_module() + + monkeypatch.setenv("GITHUB_REPOSITORY", "webstackdev/astro.webstackbuilders.com") + monkeypatch.setenv("GITHUB_API_URL", "https://api.github.com") + + inputs = {"github-token": "ghs_test", "sha": "abc"} + monkeypatch.setattr(module.core, "get_input", lambda name, required=False: inputs.get(name, "")) + + captured: dict[str, Any] = {} + + def fake_post(url: str, headers: dict[str, str], json: dict[str, Any], timeout: int) -> MockResponse: + captured["url"] = url + captured["json"] = json + return MockResponse(ok=True, status_code=201, json_data={"id": 55}) + + monkeypatch.setattr(module.requests, "post", fake_post) + + outputs: dict[str, str] = {} + monkeypatch.setattr(module.core, "set_output", lambda k, v: outputs.__setitem__(k, v)) + monkeypatch.setattr(module.core, "set_failed", lambda m: (_ for _ in ()).throw(AssertionError(m))) + + module.run() + + assert captured["json"]["environment"] == "preview" + assert outputs["deployment_id"] == "55" diff --git a/.github/actions/create-github-deployment-preview/action.yml b/.github/actions/create-github-deployment-preview/action.yml new file mode 100644 index 000000000..0db5423b9 --- /dev/null +++ b/.github/actions/create-github-deployment-preview/action.yml @@ -0,0 +1,24 @@ +name: Create GitHub Deployment (Preview) +description: Creates a GitHub Deployment for preview environment. + +inputs: + github-token: + description: GitHub token used to create the deployment. + required: true + sha: + description: Commit SHA to deploy. + required: true + +outputs: + deployment_id: + description: Created deployment id. + value: ${{ steps.run.outputs.deployment_id }} + +runs: + using: composite + steps: + - id: run + name: Create deployment + working-directory: ${{ github.action_path }} + run: python3 src/main.py + shell: bash diff --git a/.github/actions/create-github-deployment-preview/src/main.py b/.github/actions/create-github-deployment-preview/src/main.py new file mode 100644 index 000000000..785d64d39 --- /dev/null +++ b/.github/actions/create-github-deployment-preview/src/main.py @@ -0,0 +1,61 @@ +from __future__ import annotations + +import os +from urllib.parse import urlparse + +import requests +from actions_toolkit import core + + +def get_github_api_base_url() -> str: + raw = (os.environ.get("GITHUB_API_URL") or "https://api.github.com").strip() + parsed = urlparse(raw) + if parsed.scheme != "https": + raise ValueError(f"Unsupported GITHUB_API_URL protocol: {parsed.scheme}") + return raw if raw.endswith("/") else f"{raw}/" + + +def run() -> None: + try: + token = core.get_input("github-token", required=True) + sha = core.get_input("sha", required=True).strip() + + repo_full = (os.environ.get("GITHUB_REPOSITORY") or "").strip() + if "/" not in repo_full: + raise ValueError("Missing GITHUB_REPOSITORY") + owner, repo = repo_full.split("/", 1) + + base = get_github_api_base_url() + url = f"{base}repos/{owner}/{repo}/deployments" + + headers = { + "Authorization": f"Bearer {token}", + "Accept": "application/vnd.github+json", + "X-GitHub-Api-Version": "2022-11-28", + "User-Agent": "webstackbuilders-create-github-deployment-preview-action", + } + body = { + "ref": sha, + "environment": "preview", + "auto_merge": False, + "required_contexts": [], + "transient_environment": True, + "production_environment": False, + "description": "Deploying to Vercel (preview)", + } + + response = requests.post(url, headers=headers, json=body, timeout=30) + if not response.ok: + raise RuntimeError(f"Failed to create deployment (status {response.status_code}).") + + deployment_id = (response.json() or {}).get("id") + if not isinstance(deployment_id, int): + raise RuntimeError("Deployment id missing from response") + + core.set_output("deployment_id", str(deployment_id)) + except Exception as exc: # noqa: BLE001 + core.set_failed(str(exc)) + + +if __name__ == "__main__": + run() diff --git a/.github/actions/create-github-deployment-production/__tests__/test_main.py b/.github/actions/create-github-deployment-production/__tests__/test_main.py new file mode 100644 index 000000000..ef5c44f28 --- /dev/null +++ b/.github/actions/create-github-deployment-production/__tests__/test_main.py @@ -0,0 +1,59 @@ +from __future__ import annotations + +from pathlib import Path +from types import ModuleType +from typing import Any + +import pytest + + +def load_action_module() -> ModuleType: + action_root = Path(__file__).resolve().parents[1] + module_path = action_root / "src" / "main.py" + + import importlib.util + import sys + + spec = importlib.util.spec_from_file_location("create_deploy_production", module_path) + assert spec and spec.loader + module = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = module + spec.loader.exec_module(module) + return module + + +class MockResponse: + def __init__(self, *, ok: bool, status_code: int, json_data: Any): + self.ok = ok + self.status_code = status_code + self._json_data = json_data + + def json(self) -> Any: + return self._json_data + + +def test_creates_production_deployment(monkeypatch: pytest.MonkeyPatch) -> None: + module = load_action_module() + + monkeypatch.setenv("GITHUB_REPOSITORY", "webstackdev/astro.webstackbuilders.com") + monkeypatch.setenv("GITHUB_API_URL", "https://api.github.com") + + inputs = {"github-token": "ghs_test", "sha": "abc"} + monkeypatch.setattr(module.core, "get_input", lambda name, required=False: inputs.get(name, "")) + + captured: dict[str, Any] = {} + + def fake_post(url: str, headers: dict[str, str], json: dict[str, Any], timeout: int) -> MockResponse: + captured["json"] = json + return MockResponse(ok=True, status_code=201, json_data={"id": 99}) + + monkeypatch.setattr(module.requests, "post", fake_post) + + outputs: dict[str, str] = {} + monkeypatch.setattr(module.core, "set_output", lambda k, v: outputs.__setitem__(k, v)) + monkeypatch.setattr(module.core, "set_failed", lambda m: (_ for _ in ()).throw(AssertionError(m))) + + module.run() + + assert captured["json"]["environment"] == "production" + assert outputs["deployment_id"] == "99" diff --git a/.github/actions/create-github-deployment-production/action.yml b/.github/actions/create-github-deployment-production/action.yml new file mode 100644 index 000000000..182e7abd0 --- /dev/null +++ b/.github/actions/create-github-deployment-production/action.yml @@ -0,0 +1,24 @@ +name: Create GitHub Deployment (Production) +description: Creates a GitHub Deployment for production environment. + +inputs: + github-token: + description: GitHub token used to create the deployment. + required: true + sha: + description: Commit SHA to deploy. + required: true + +outputs: + deployment_id: + description: Created deployment id. + value: ${{ steps.run.outputs.deployment_id }} + +runs: + using: composite + steps: + - id: run + name: Create deployment + working-directory: ${{ github.action_path }} + run: python3 src/main.py + shell: bash diff --git a/.github/actions/create-github-deployment-production/src/main.py b/.github/actions/create-github-deployment-production/src/main.py new file mode 100644 index 000000000..453bf4216 --- /dev/null +++ b/.github/actions/create-github-deployment-production/src/main.py @@ -0,0 +1,61 @@ +from __future__ import annotations + +import os +from urllib.parse import urlparse + +import requests +from actions_toolkit import core + + +def get_github_api_base_url() -> str: + raw = (os.environ.get("GITHUB_API_URL") or "https://api.github.com").strip() + parsed = urlparse(raw) + if parsed.scheme != "https": + raise ValueError(f"Unsupported GITHUB_API_URL protocol: {parsed.scheme}") + return raw if raw.endswith("/") else f"{raw}/" + + +def run() -> None: + try: + token = core.get_input("github-token", required=True) + sha = core.get_input("sha", required=True).strip() + + repo_full = (os.environ.get("GITHUB_REPOSITORY") or "").strip() + if "/" not in repo_full: + raise ValueError("Missing GITHUB_REPOSITORY") + owner, repo = repo_full.split("/", 1) + + base = get_github_api_base_url() + url = f"{base}repos/{owner}/{repo}/deployments" + + headers = { + "Authorization": f"Bearer {token}", + "Accept": "application/vnd.github+json", + "X-GitHub-Api-Version": "2022-11-28", + "User-Agent": "webstackbuilders-create-github-deployment-production-action", + } + body = { + "ref": sha, + "environment": "production", + "auto_merge": False, + "required_contexts": [], + "transient_environment": False, + "production_environment": True, + "description": "Deploying to Vercel (production)", + } + + response = requests.post(url, headers=headers, json=body, timeout=30) + if not response.ok: + raise RuntimeError(f"Failed to create deployment (status {response.status_code}).") + + deployment_id = (response.json() or {}).get("id") + if not isinstance(deployment_id, int): + raise RuntimeError("Deployment id missing from response") + + core.set_output("deployment_id", str(deployment_id)) + except Exception as exc: # noqa: BLE001 + core.set_failed(str(exc)) + + +if __name__ == "__main__": + run() diff --git a/.github/actions/deploy-to-vercel-preview/__tests__/test_main.py b/.github/actions/deploy-to-vercel-preview/__tests__/test_main.py new file mode 100644 index 000000000..df3ffe98f --- /dev/null +++ b/.github/actions/deploy-to-vercel-preview/__tests__/test_main.py @@ -0,0 +1,49 @@ +from __future__ import annotations + +from pathlib import Path +from types import ModuleType + +import pytest + + +def load_action_module() -> ModuleType: + action_root = Path(__file__).resolve().parents[1] + module_path = action_root / "src" / "main.py" + + import importlib.util + import sys + + spec = importlib.util.spec_from_file_location("deploy_to_vercel_preview", module_path) + assert spec and spec.loader + module = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = module + spec.loader.exec_module(module) + return module + + +class Completed: + def __init__(self, returncode: int, stdout: str, stderr: str): + self.returncode = returncode + self.stdout = stdout + self.stderr = stderr + + +def test_parses_preview_url(monkeypatch: pytest.MonkeyPatch) -> None: + module = load_action_module() + + inputs = {"vercel-token": "t", "vercel-org-id": "o", "vercel-project-id": "p"} + monkeypatch.setattr(module.core, "get_input", lambda name, required=False: inputs.get(name, "")) + + def fake_run(cmd: list[str], check: bool, capture_output: bool, text: bool, env: dict[str, str]): + return Completed(0, "✅ Preview: https://example.vercel.app\n", "") + + monkeypatch.setattr(module.subprocess, "run", fake_run) + + outputs: dict[str, str] = {} + monkeypatch.setattr(module.core, "set_output", lambda k, v: outputs.__setitem__(k, v)) + monkeypatch.setattr(module.core, "set_failed", lambda m: (_ for _ in ()).throw(AssertionError(m))) + + module.run() + + assert outputs["exit_code"] == "0" + assert outputs["deploy_url"] == "https://example.vercel.app" diff --git a/.github/actions/deploy-to-vercel-preview/action.yml b/.github/actions/deploy-to-vercel-preview/action.yml new file mode 100644 index 000000000..faa7907e9 --- /dev/null +++ b/.github/actions/deploy-to-vercel-preview/action.yml @@ -0,0 +1,30 @@ +name: Deploy to Vercel (Preview) +description: Deploys a prebuilt preview artifact to Vercel and outputs the deployment URL. + +inputs: + vercel-token: + description: Vercel token. + required: true + vercel-org-id: + description: Vercel org id. + required: true + vercel-project-id: + description: Vercel project id. + required: true + +outputs: + exit_code: + description: Exit code from vercel deploy. + value: ${{ steps.run.outputs.exit_code }} + deploy_url: + description: Parsed deployment URL. + value: ${{ steps.run.outputs.deploy_url }} + +runs: + using: composite + steps: + - id: run + name: Deploy + working-directory: ${{ github.action_path }} + run: python3 src/main.py + shell: bash diff --git a/.github/actions/deploy-to-vercel-preview/src/main.py b/.github/actions/deploy-to-vercel-preview/src/main.py new file mode 100644 index 000000000..bc6b62aa4 --- /dev/null +++ b/.github/actions/deploy-to-vercel-preview/src/main.py @@ -0,0 +1,60 @@ +from __future__ import annotations + +import os +import re +import subprocess + +from actions_toolkit import core + + +DEPLOY_URL_PATTERN = re.compile(r"^(?:✅\s+)?(?:Preview|Production):\s+(https://\S+)", re.MULTILINE) + + +def run() -> None: + try: + vercel_token = core.get_input("vercel-token", required=True) + vercel_org_id = core.get_input("vercel-org-id", required=True) + vercel_project_id = core.get_input("vercel-project-id", required=True) + + env = { + "VERCEL_ORG_ID": vercel_org_id, + "VERCEL_PROJECT_ID": vercel_project_id, + } + + cmd = [ + "vercel", + "deploy", + "--prebuilt", + "--target=preview", + "--archive=tgz", + "--token", + vercel_token, + "--yes", + ] + + completed = subprocess.run( + cmd, + check=False, + capture_output=True, + text=True, + env={ + **os.environ, + **env, + }, + ) + output = (completed.stdout or "") + (completed.stderr or "") + + match = DEPLOY_URL_PATTERN.search(output) + deploy_url = match.group(1) if match else "" + + core.set_output("exit_code", str(completed.returncode)) + core.set_output("deploy_url", deploy_url) + + if completed.returncode != 0: + core.warning("Vercel deploy failed (preview).") + except Exception as exc: # noqa: BLE001 + core.set_failed(str(exc)) + + +if __name__ == "__main__": + run() diff --git a/.github/actions/deploy-to-vercel-production/__tests__/test_main.py b/.github/actions/deploy-to-vercel-production/__tests__/test_main.py new file mode 100644 index 000000000..015fa49f8 --- /dev/null +++ b/.github/actions/deploy-to-vercel-production/__tests__/test_main.py @@ -0,0 +1,49 @@ +from __future__ import annotations + +from pathlib import Path +from types import ModuleType + +import pytest + + +def load_action_module() -> ModuleType: + action_root = Path(__file__).resolve().parents[1] + module_path = action_root / "src" / "main.py" + + import importlib.util + import sys + + spec = importlib.util.spec_from_file_location("deploy_to_vercel_production", module_path) + assert spec and spec.loader + module = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = module + spec.loader.exec_module(module) + return module + + +class Completed: + def __init__(self, returncode: int, stdout: str, stderr: str): + self.returncode = returncode + self.stdout = stdout + self.stderr = stderr + + +def test_parses_production_url(monkeypatch: pytest.MonkeyPatch) -> None: + module = load_action_module() + + inputs = {"vercel-token": "t", "vercel-org-id": "o", "vercel-project-id": "p"} + monkeypatch.setattr(module.core, "get_input", lambda name, required=False: inputs.get(name, "")) + + def fake_run(cmd: list[str], check: bool, capture_output: bool, text: bool, env: dict[str, str]): + return Completed(0, "✅ Production: https://prod.vercel.app\n", "") + + monkeypatch.setattr(module.subprocess, "run", fake_run) + + outputs: dict[str, str] = {} + monkeypatch.setattr(module.core, "set_output", lambda k, v: outputs.__setitem__(k, v)) + monkeypatch.setattr(module.core, "set_failed", lambda m: (_ for _ in ()).throw(AssertionError(m))) + + module.run() + + assert outputs["exit_code"] == "0" + assert outputs["deploy_url"] == "https://prod.vercel.app" diff --git a/.github/actions/deploy-to-vercel-production/action.yml b/.github/actions/deploy-to-vercel-production/action.yml new file mode 100644 index 000000000..67f515307 --- /dev/null +++ b/.github/actions/deploy-to-vercel-production/action.yml @@ -0,0 +1,30 @@ +name: Deploy to Vercel (Production) +description: Deploys a prebuilt production artifact to Vercel and outputs the deployment URL. + +inputs: + vercel-token: + description: Vercel token. + required: true + vercel-org-id: + description: Vercel org id. + required: true + vercel-project-id: + description: Vercel project id. + required: true + +outputs: + exit_code: + description: Exit code from vercel deploy. + value: ${{ steps.run.outputs.exit_code }} + deploy_url: + description: Parsed deployment URL. + value: ${{ steps.run.outputs.deploy_url }} + +runs: + using: composite + steps: + - id: run + name: Deploy + working-directory: ${{ github.action_path }} + run: python3 src/main.py + shell: bash diff --git a/.github/actions/deploy-to-vercel-production/src/main.py b/.github/actions/deploy-to-vercel-production/src/main.py new file mode 100644 index 000000000..b9ec7e3e8 --- /dev/null +++ b/.github/actions/deploy-to-vercel-production/src/main.py @@ -0,0 +1,60 @@ +from __future__ import annotations + +import os +import re +import subprocess + +from actions_toolkit import core + + +DEPLOY_URL_PATTERN = re.compile(r"^(?:✅\s+)?(?:Preview|Production):\s+(https://\S+)", re.MULTILINE) + + +def run() -> None: + try: + vercel_token = core.get_input("vercel-token", required=True) + vercel_org_id = core.get_input("vercel-org-id", required=True) + vercel_project_id = core.get_input("vercel-project-id", required=True) + + env = { + "VERCEL_ORG_ID": vercel_org_id, + "VERCEL_PROJECT_ID": vercel_project_id, + } + + cmd = [ + "vercel", + "deploy", + "--prebuilt", + "--target=production", + "--archive=tgz", + "--token", + vercel_token, + "--yes", + ] + + completed = subprocess.run( + cmd, + check=False, + capture_output=True, + text=True, + env={ + **os.environ, + **env, + }, + ) + output = (completed.stdout or "") + (completed.stderr or "") + + match = DEPLOY_URL_PATTERN.search(output) + deploy_url = match.group(1) if match else "" + + core.set_output("exit_code", str(completed.returncode)) + core.set_output("deploy_url", deploy_url) + + if completed.returncode != 0: + core.warning("Vercel deploy failed (production).") + except Exception as exc: # noqa: BLE001 + core.set_failed(str(exc)) + + +if __name__ == "__main__": + run() diff --git a/.github/actions/download-build-artifact/__tests__/test_main.py b/.github/actions/download-build-artifact/__tests__/test_main.py new file mode 100644 index 000000000..8fe5db117 --- /dev/null +++ b/.github/actions/download-build-artifact/__tests__/test_main.py @@ -0,0 +1,66 @@ +from __future__ import annotations + +import io +import zipfile +from pathlib import Path +from types import ModuleType +from typing import Any + +import pytest + + +def load_action_module() -> ModuleType: + action_root = Path(__file__).resolve().parents[1] + module_path = action_root / "src" / "main.py" + + import importlib.util + import sys + + spec = importlib.util.spec_from_file_location("download_build_artifact", module_path) + assert spec and spec.loader + module = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = module + spec.loader.exec_module(module) + return module + + +class MockResponse: + def __init__(self, *, ok: bool, status_code: int, content: bytes): + self.ok = ok + self.status_code = status_code + self.content = content + + +def make_zip_bytes() -> bytes: + mem = io.BytesIO() + with zipfile.ZipFile(mem, "w") as z: + z.writestr(".vercel/output/config.json", "{}") + return mem.getvalue() + + +def test_extracts_vercel_output(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None: + module = load_action_module() + + inputs = {"github-token": "ghs_test", "artifact-download-url": "https://api.github.com/art.zip"} + monkeypatch.setattr(module.core, "get_input", lambda name, required=False: inputs.get(name, "")) + + monkeypatch.setenv("GITHUB_API_URL", "https://api.github.com") + + zip_bytes = make_zip_bytes() + + def fake_get(url: str, **kwargs: Any) -> MockResponse: + return MockResponse(ok=True, status_code=200, content=zip_bytes) + + monkeypatch.setattr(module.requests, "get", fake_get) + + cwd = Path.cwd() + monkeypatch.chdir(tmp_path) + + failures: list[str] = [] + monkeypatch.setattr(module.core, "set_failed", lambda m: failures.append(m)) + + module.run() + + assert failures == [] + assert (tmp_path / ".vercel" / "output" / "config.json").exists() + monkeypatch.chdir(cwd) diff --git a/.github/actions/download-build-artifact/action.yml b/.github/actions/download-build-artifact/action.yml new file mode 100644 index 000000000..758fe37f2 --- /dev/null +++ b/.github/actions/download-build-artifact/action.yml @@ -0,0 +1,18 @@ +name: Download Build Artifact +description: Downloads a workflow artifact zip and restores it to .vercel/output. + +inputs: + github-token: + description: GitHub token used to download the artifact. + required: true + artifact-download-url: + description: GitHub artifact archive download URL. + required: true + +runs: + using: composite + steps: + - name: Download and extract + working-directory: ${{ github.action_path }} + run: python3 src/main.py + shell: bash diff --git a/.github/actions/download-build-artifact/src/main.py b/.github/actions/download-build-artifact/src/main.py new file mode 100644 index 000000000..328de076e --- /dev/null +++ b/.github/actions/download-build-artifact/src/main.py @@ -0,0 +1,76 @@ +from __future__ import annotations + +import io +import os +import shutil +import tempfile +import zipfile +from pathlib import Path +from urllib.parse import urlparse + +import requests +from actions_toolkit import core + + +def get_github_api_base_url() -> str: + raw = (os.environ.get("GITHUB_API_URL") or "https://api.github.com").strip() + parsed = urlparse(raw) + if parsed.scheme != "https": + raise ValueError(f"Unsupported GITHUB_API_URL protocol: {parsed.scheme}") + return raw if raw.endswith("/") else f"{raw}/" + + +def is_allowed_fetch_url(url: str, allowed_hosts: set[str]) -> bool: + parsed = urlparse(url) + return parsed.scheme == "https" and parsed.hostname in allowed_hosts + + +def run() -> None: + try: + token = core.get_input("github-token", required=True) + download_url = core.get_input("artifact-download-url", required=True).strip() + + allowed_hosts = {urlparse(get_github_api_base_url()).hostname} + if not is_allowed_fetch_url(download_url, allowed_hosts): + raise ValueError(f"Blocked outbound request to untrusted URL: {download_url}") + + headers = { + "Authorization": f"Bearer {token}", + "Accept": "application/vnd.github+json", + "X-GitHub-Api-Version": "2022-11-28", + "User-Agent": "webstackbuilders-download-build-artifact-action", + } + + response = requests.get(download_url, headers=headers, timeout=60) + if not response.ok: + raise RuntimeError(f"Failed to download artifact (status {response.status_code}).") + + with tempfile.TemporaryDirectory() as temp_dir: + temp_path = Path(temp_dir) + zip_path = temp_path / "artifact.zip" + zip_path.write_bytes(response.content) + + extract_dir = temp_path / "extract" + extract_dir.mkdir(parents=True, exist_ok=True) + + with zipfile.ZipFile(io.BytesIO(response.content)) as zip_ref: + zip_ref.extractall(extract_dir) + + candidates = [extract_dir / ".vercel" / "output", extract_dir / "output"] + source = next((p for p in candidates if p.is_dir()), None) + if not source: + raise RuntimeError("Downloaded artifact did not contain expected output directory.") + + target = Path(".vercel") / "output" + if target.exists(): + shutil.rmtree(target) + target.parent.mkdir(parents=True, exist_ok=True) + shutil.copytree(source, target) + + core.info(f"Restored Vercel output to {target}") + except Exception as exc: # noqa: BLE001 + core.set_failed(str(exc)) + + +if __name__ == "__main__": + run() diff --git a/.github/actions/fail-workflow-if-deploy-failed/__tests__/test_main.py b/.github/actions/fail-workflow-if-deploy-failed/__tests__/test_main.py new file mode 100644 index 000000000..b95c58522 --- /dev/null +++ b/.github/actions/fail-workflow-if-deploy-failed/__tests__/test_main.py @@ -0,0 +1,45 @@ +from __future__ import annotations + +from pathlib import Path +from types import ModuleType + +import pytest + + +def load_action_module() -> ModuleType: + action_root = Path(__file__).resolve().parents[1] + module_path = action_root / "src" / "main.py" + + import importlib.util + import sys + + spec = importlib.util.spec_from_file_location("fail_workflow_if_deploy_failed", module_path) + assert spec and spec.loader + module = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = module + spec.loader.exec_module(module) + return module + + +def test_fails_for_nonzero_exit_code(monkeypatch: pytest.MonkeyPatch) -> None: + module = load_action_module() + + monkeypatch.setattr(module.core, "get_input", lambda name, required=False: "2") + failures: list[str] = [] + monkeypatch.setattr(module.core, "set_failed", lambda m: failures.append(m)) + + module.run() + + assert failures == ["Deploy failed with exit code 2"] + + +def test_passes_for_zero_exit_code(monkeypatch: pytest.MonkeyPatch) -> None: + module = load_action_module() + + monkeypatch.setattr(module.core, "get_input", lambda name, required=False: "0") + failures: list[str] = [] + monkeypatch.setattr(module.core, "set_failed", lambda m: failures.append(m)) + + module.run() + + assert failures == [] diff --git a/.github/actions/fail-workflow-if-deploy-failed/action.yml b/.github/actions/fail-workflow-if-deploy-failed/action.yml new file mode 100644 index 000000000..1a40cb5f7 --- /dev/null +++ b/.github/actions/fail-workflow-if-deploy-failed/action.yml @@ -0,0 +1,15 @@ +name: Fail Workflow if Deploy Failed +description: Fails the workflow if exit-code is non-zero. + +inputs: + exit-code: + description: Exit code from deploy step. + required: true + +runs: + using: composite + steps: + - name: Fail if non-zero + working-directory: ${{ github.action_path }} + run: python3 src/main.py + shell: bash diff --git a/.github/actions/fail-workflow-if-deploy-failed/src/main.py b/.github/actions/fail-workflow-if-deploy-failed/src/main.py new file mode 100644 index 000000000..ceabdeb25 --- /dev/null +++ b/.github/actions/fail-workflow-if-deploy-failed/src/main.py @@ -0,0 +1,16 @@ +from __future__ import annotations + +from actions_toolkit import core + + +def run() -> None: + try: + exit_code = int(core.get_input("exit-code", required=True).strip() or "1") + if exit_code != 0: + raise RuntimeError(f"Deploy failed with exit code {exit_code}") + except Exception as exc: # noqa: BLE001 + core.set_failed(str(exc)) + + +if __name__ == "__main__": + run() diff --git a/.github/actions/install-vercel-cli-pinned/__tests__/test_main.py b/.github/actions/install-vercel-cli-pinned/__tests__/test_main.py new file mode 100644 index 000000000..3eb87b2d4 --- /dev/null +++ b/.github/actions/install-vercel-cli-pinned/__tests__/test_main.py @@ -0,0 +1,40 @@ +from __future__ import annotations + +from pathlib import Path +from types import ModuleType + +import pytest + + +def load_action_module() -> ModuleType: + action_root = Path(__file__).resolve().parents[1] + module_path = action_root / "src" / "main.py" + + import importlib.util + import sys + + spec = importlib.util.spec_from_file_location("install_vercel_cli_pinned", module_path) + assert spec and spec.loader + module = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = module + spec.loader.exec_module(module) + return module + + +def test_installs_pinned_vercel_cli(monkeypatch: pytest.MonkeyPatch) -> None: + module = load_action_module() + + monkeypatch.setattr(module.core, "get_input", lambda name, required=False: "50.1.3") + + called: list[list[str]] = [] + + def fake_run(cmd: list[str], check: bool) -> None: + assert check is True + called.append(cmd) + + monkeypatch.setattr(module.subprocess, "run", fake_run) + monkeypatch.setattr(module.core, "set_failed", lambda m: (_ for _ in ()).throw(AssertionError(m))) + + module.run() + + assert called == [["npm", "install", "-g", "vercel@50.1.3"]] diff --git a/.github/actions/install-vercel-cli-pinned/action.yml b/.github/actions/install-vercel-cli-pinned/action.yml new file mode 100644 index 000000000..677f0592c --- /dev/null +++ b/.github/actions/install-vercel-cli-pinned/action.yml @@ -0,0 +1,15 @@ +name: Install Vercel CLI (Pinned) +description: Installs a pinned version of the Vercel CLI globally. + +inputs: + version: + description: Vercel CLI version. + required: true + +runs: + using: composite + steps: + - name: Install CLI + working-directory: ${{ github.action_path }} + run: python3 src/main.py + shell: bash diff --git a/.github/actions/install-vercel-cli-pinned/src/main.py b/.github/actions/install-vercel-cli-pinned/src/main.py new file mode 100644 index 000000000..a7bccb438 --- /dev/null +++ b/.github/actions/install-vercel-cli-pinned/src/main.py @@ -0,0 +1,20 @@ +from __future__ import annotations + +import subprocess + +from actions_toolkit import core + + +def run() -> None: + try: + version = core.get_input("version", required=True).strip() + if not version: + raise ValueError("Missing version") + + subprocess.run(["npm", "install", "-g", f"vercel@{version}"], check=True) + except Exception as exc: # noqa: BLE001 + core.set_failed(str(exc)) + + +if __name__ == "__main__": + run() diff --git a/.github/actions/keep-alive/__tests__/test_main.py b/.github/actions/keep-alive/__tests__/test_main.py new file mode 100644 index 000000000..2bc48ac68 --- /dev/null +++ b/.github/actions/keep-alive/__tests__/test_main.py @@ -0,0 +1,127 @@ +from __future__ import annotations + +from pathlib import Path +from types import ModuleType + +import pytest + + +def load_action_module() -> ModuleType: + action_root = Path(__file__).resolve().parents[1] + module_path = action_root / "src" / "main.py" + + import importlib.util + import sys + + spec = importlib.util.spec_from_file_location("keep_alive", module_path) + assert spec and spec.loader + module = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = module + spec.loader.exec_module(module) + return module + + +@pytest.fixture(autouse=True) +def clear_env(monkeypatch: pytest.MonkeyPatch) -> None: + monkeypatch.delenv("ASTRO_DB_REMOTE_URL", raising=False) + monkeypatch.delenv("ASTRO_DB_APP_TOKEN", raising=False) + + +def test_fails_when_env_vars_missing(monkeypatch: pytest.MonkeyPatch) -> None: + module = load_action_module() + + monkeypatch.setattr(module.core, "get_input", lambda name, required=False: "") + + failures: list[str] = [] + monkeypatch.setattr(module.core, "set_failed", lambda message: failures.append(message)) + + called = {"execute": 0, "close": 0} + + class MockClient: + def execute(self, sql: str) -> None: + called["execute"] += 1 + + def close(self) -> None: + called["close"] += 1 + + def fake_create_client_sync(**kwargs): + return MockClient() + + monkeypatch.setattr(module, "create_client_sync", fake_create_client_sync) + + module.run() + + assert failures + assert called["execute"] == 0 + assert called["close"] == 0 + + +def test_executes_select_1_and_closes_client(monkeypatch: pytest.MonkeyPatch) -> None: + module = load_action_module() + + monkeypatch.setenv("ASTRO_DB_REMOTE_URL", "libsql://example.turso.io") + monkeypatch.setenv("ASTRO_DB_APP_TOKEN", "token") + monkeypatch.setattr(module.core, "get_input", lambda name, required=False: "") + + infos: list[str] = [] + failures: list[str] = [] + monkeypatch.setattr(module.core, "info", lambda message: infos.append(message)) + monkeypatch.setattr(module.core, "set_failed", lambda message: failures.append(message)) + + called = {"execute": 0, "close": 0, "sql": None} + + class MockClient: + def execute(self, sql: str) -> None: + called["execute"] += 1 + called["sql"] = sql + + def close(self) -> None: + called["close"] += 1 + + def fake_create_client_sync(**kwargs): + return MockClient() + + monkeypatch.setattr(module, "create_client_sync", fake_create_client_sync) + + module.run() + + assert called["sql"] == "SELECT 1" + assert called["close"] == 1 + assert infos == ["[keep-alive] OK"] + assert failures == [] + + +def test_prefers_inputs_over_env_vars(monkeypatch: pytest.MonkeyPatch) -> None: + module = load_action_module() + + monkeypatch.setenv("ASTRO_DB_REMOTE_URL", "libsql://env.turso.io") + monkeypatch.setenv("ASTRO_DB_APP_TOKEN", "env_token") + + def fake_get_input(name: str, required: bool = False) -> str: + if name == "astro-db-remote-url": + return "libsql://input.turso.io" + if name == "astro-db-app-token": + return "input_token" + return "" + + monkeypatch.setattr(module.core, "get_input", fake_get_input) + + captured: dict[str, str] = {} + + class MockClient: + def execute(self, sql: str) -> None: + pass + + def close(self) -> None: + pass + + def fake_create_client_sync(**kwargs): + captured.update({"url": kwargs.get("url"), "auth_token": kwargs.get("auth_token")}) + return MockClient() + + monkeypatch.setattr(module, "create_client_sync", fake_create_client_sync) + + module.run() + + assert captured["url"] == "libsql://input.turso.io" + assert captured["auth_token"] == "input_token" diff --git a/.github/actions/keep-alive/action.yml b/.github/actions/keep-alive/action.yml new file mode 100644 index 000000000..8c622242c --- /dev/null +++ b/.github/actions/keep-alive/action.yml @@ -0,0 +1,20 @@ +name: Keep Alive +description: Executes a keep-alive query (SELECT 1) against the Turso DB. + +inputs: + astro-db-remote-url: + description: Turso DB URL (falls back to ASTRO_DB_REMOTE_URL env var). + required: false + default: "" + astro-db-app-token: + description: Turso auth token (falls back to ASTRO_DB_APP_TOKEN env var). + required: false + default: "" + +runs: + using: composite + steps: + - name: Execute keep-alive query + working-directory: ${{ github.action_path }} + run: python3 src/main.py + shell: bash diff --git a/.github/actions/keep-alive/src/main.py b/.github/actions/keep-alive/src/main.py new file mode 100644 index 000000000..9f0893e34 --- /dev/null +++ b/.github/actions/keep-alive/src/main.py @@ -0,0 +1,42 @@ +from __future__ import annotations + +import os + +from actions_toolkit import core +from libsql_client import create_client_sync + + +def get_optional_input_or_env(input_name: str, env_name: str) -> str: + value = core.get_input(input_name).strip() + if value: + return value + return (os.environ.get(env_name) or "").strip() + + +def get_required_value(value: str, label: str) -> str: + trimmed = value.strip() + if not trimmed: + raise ValueError(f"Missing {label}") + return trimmed + + +def run() -> None: + try: + url = get_optional_input_or_env("astro-db-remote-url", "ASTRO_DB_REMOTE_URL") + auth_token = get_optional_input_or_env("astro-db-app-token", "ASTRO_DB_APP_TOKEN") + + required_url = get_required_value(url, "ASTRO_DB_REMOTE_URL") + required_auth_token = get_required_value(auth_token, "ASTRO_DB_APP_TOKEN") + + client = create_client_sync(url=required_url, auth_token=required_auth_token) + try: + client.execute("SELECT 1") + core.info("[keep-alive] OK") + finally: + client.close() + except Exception as exc: # noqa: BLE001 + core.set_failed(str(exc)) + + +if __name__ == "__main__": + run() diff --git a/.github/actions/mark-deployment-in-progress/__tests__/test_main.py b/.github/actions/mark-deployment-in-progress/__tests__/test_main.py new file mode 100644 index 000000000..4487790b3 --- /dev/null +++ b/.github/actions/mark-deployment-in-progress/__tests__/test_main.py @@ -0,0 +1,54 @@ +from __future__ import annotations + +from pathlib import Path +from types import ModuleType +from typing import Any + +import pytest + + +def load_action_module() -> ModuleType: + action_root = Path(__file__).resolve().parents[1] + module_path = action_root / "src" / "main.py" + + import importlib.util + import sys + + spec = importlib.util.spec_from_file_location("mark_deploy_in_progress", module_path) + assert spec and spec.loader + module = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = module + spec.loader.exec_module(module) + return module + + +class MockResponse: + def __init__(self, *, ok: bool, status_code: int): + self.ok = ok + self.status_code = status_code + + +def test_posts_in_progress_status(monkeypatch: pytest.MonkeyPatch) -> None: + module = load_action_module() + + monkeypatch.setenv("GITHUB_REPOSITORY", "webstackdev/astro.webstackbuilders.com") + monkeypatch.setenv("GITHUB_API_URL", "https://api.github.com") + monkeypatch.setenv("GITHUB_RUN_ID", "123") + monkeypatch.setenv("GITHUB_SERVER_URL", "https://github.com") + + inputs = {"github-token": "ghs_test", "deployment-id": "42", "description": "Deploying"} + monkeypatch.setattr(module.core, "get_input", lambda name, required=False: inputs.get(name, "")) + + captured: dict[str, Any] = {} + + def fake_post(url: str, headers: dict[str, str], json: dict[str, Any], timeout: int) -> MockResponse: + captured["json"] = json + return MockResponse(ok=True, status_code=201) + + monkeypatch.setattr(module.requests, "post", fake_post) + monkeypatch.setattr(module.core, "set_failed", lambda m: (_ for _ in ()).throw(AssertionError(m))) + + module.run() + + assert captured["json"]["state"] == "in_progress" + assert "log_url" in captured["json"] diff --git a/.github/actions/mark-deployment-in-progress/action.yml b/.github/actions/mark-deployment-in-progress/action.yml new file mode 100644 index 000000000..5a7a97cb2 --- /dev/null +++ b/.github/actions/mark-deployment-in-progress/action.yml @@ -0,0 +1,21 @@ +name: Mark Deployment in Progress +description: Sets deployment status to in_progress for a deployment id. + +inputs: + github-token: + description: GitHub token used to create deployment statuses. + required: true + deployment-id: + description: Deployment id. + required: true + description: + description: Status description. + required: true + +runs: + using: composite + steps: + - name: Mark in progress + working-directory: ${{ github.action_path }} + run: python3 src/main.py + shell: bash diff --git a/.github/actions/mark-deployment-in-progress/src/main.py b/.github/actions/mark-deployment-in-progress/src/main.py new file mode 100644 index 000000000..8674f1545 --- /dev/null +++ b/.github/actions/mark-deployment-in-progress/src/main.py @@ -0,0 +1,57 @@ +from __future__ import annotations + +import os +from urllib.parse import urlparse + +import requests +from actions_toolkit import core + + +def get_github_api_base_url() -> str: + raw = (os.environ.get("GITHUB_API_URL") or "https://api.github.com").strip() + parsed = urlparse(raw) + if parsed.scheme != "https": + raise ValueError(f"Unsupported GITHUB_API_URL protocol: {parsed.scheme}") + return raw if raw.endswith("/") else f"{raw}/" + + +def run() -> None: + try: + token = core.get_input("github-token", required=True) + deployment_id = core.get_input("deployment-id", required=True).strip() + description = core.get_input("description", required=True).strip() + + repo_full = (os.environ.get("GITHUB_REPOSITORY") or "").strip() + if "/" not in repo_full: + raise ValueError("Missing GITHUB_REPOSITORY") + owner, repo = repo_full.split("/", 1) + + run_id = (os.environ.get("GITHUB_RUN_ID") or "").strip() + server_url = (os.environ.get("GITHUB_SERVER_URL") or "https://github.com").strip() + log_url = f"{server_url}/{owner}/{repo}/actions/runs/{run_id}" if run_id else None + + base = get_github_api_base_url() + url = f"{base}repos/{owner}/{repo}/deployments/{deployment_id}/statuses" + + headers = { + "Authorization": f"Bearer {token}", + "Accept": "application/vnd.github+json", + "X-GitHub-Api-Version": "2022-11-28", + "User-Agent": "webstackbuilders-mark-deployment-in-progress-action", + } + body = { + "state": "in_progress", + "description": description, + } + if log_url: + body["log_url"] = log_url + + response = requests.post(url, headers=headers, json=body, timeout=30) + if not response.ok: + raise RuntimeError(f"Failed to create deployment status (status {response.status_code}).") + except Exception as exc: # noqa: BLE001 + core.set_failed(str(exc)) + + +if __name__ == "__main__": + run() diff --git a/.github/actions/resolve-deploy-sha/__tests__/test_main.py b/.github/actions/resolve-deploy-sha/__tests__/test_main.py new file mode 100644 index 000000000..0676ce73c --- /dev/null +++ b/.github/actions/resolve-deploy-sha/__tests__/test_main.py @@ -0,0 +1,80 @@ +from __future__ import annotations + +import json +from pathlib import Path +from types import ModuleType +from typing import Any + +import pytest + + +def load_action_module() -> ModuleType: + action_root = Path(__file__).resolve().parents[1] + module_path = action_root / "src" / "main.py" + + import importlib.util + import sys + + spec = importlib.util.spec_from_file_location("resolve_deploy_sha", module_path) + assert spec and spec.loader + module = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = module + spec.loader.exec_module(module) + return module + + +def create_temp_event_file(tmp_path: Path, payload: dict[str, Any]) -> str: + event_path = tmp_path / "event.json" + event_path.write_text(json.dumps(payload), encoding="utf-8") + return str(event_path) + + +def test_resolves_sha_from_workflow_run(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None: + module = load_action_module() + + event_path = create_temp_event_file( + tmp_path, + { + "workflow_run": { + "head_sha": "abc123", + "event": "pull_request", + "head_branch": "feature/test", + "pull_requests": [{"head": {"repo": {"fork": False}}}], + } + }, + ) + + monkeypatch.setenv("GITHUB_EVENT_NAME", "workflow_run") + monkeypatch.setenv("GITHUB_EVENT_PATH", event_path) + + outputs: dict[str, str] = {} + monkeypatch.setattr(module.core, "set_output", lambda k, v: outputs.__setitem__(k, v)) + monkeypatch.setattr(module.core, "set_failed", lambda m: (_ for _ in ()).throw(AssertionError(m))) + + module.run() + + assert outputs["sha"] == "abc123" + assert outputs["trigger_event"] == "pull_request" + assert outputs["head_branch"] == "feature/test" + assert outputs["is_fork"] == "false" + + +def test_resolves_sha_from_env_for_workflow_dispatch(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None: + module = load_action_module() + + event_path = create_temp_event_file(tmp_path, {"inputs": {}}) + monkeypatch.setenv("GITHUB_EVENT_NAME", "workflow_dispatch") + monkeypatch.setenv("GITHUB_EVENT_PATH", event_path) + monkeypatch.setenv("GITHUB_SHA", "def456") + monkeypatch.setenv("GITHUB_REF_NAME", "main") + + outputs: dict[str, str] = {} + monkeypatch.setattr(module.core, "set_output", lambda k, v: outputs.__setitem__(k, v)) + monkeypatch.setattr(module.core, "set_failed", lambda m: (_ for _ in ()).throw(AssertionError(m))) + + module.run() + + assert outputs["sha"] == "def456" + assert outputs["trigger_event"] == "workflow_dispatch" + assert outputs["head_branch"] == "main" + assert outputs["is_fork"] == "false" diff --git a/.github/actions/resolve-deploy-sha/action.yml b/.github/actions/resolve-deploy-sha/action.yml new file mode 100644 index 000000000..9722163c5 --- /dev/null +++ b/.github/actions/resolve-deploy-sha/action.yml @@ -0,0 +1,25 @@ +name: Resolve Deploy SHA +description: Resolves the SHA and basic context for workflow_run or workflow_dispatch triggered deploy workflows. + +outputs: + sha: + description: Commit SHA to deploy. + value: ${{ steps.run.outputs.sha }} + trigger_event: + description: Triggering event for the source workflow (workflow_run.event) or current event. + value: ${{ steps.run.outputs.trigger_event }} + head_branch: + description: Head branch for workflow_run or current ref name. + value: ${{ steps.run.outputs.head_branch }} + is_fork: + description: Whether the PR head repo is a fork (workflow_run only). + value: ${{ steps.run.outputs.is_fork }} + +runs: + using: composite + steps: + - id: run + name: Resolve context + working-directory: ${{ github.action_path }} + run: python3 src/main.py + shell: bash diff --git a/.github/actions/resolve-deploy-sha/src/main.py b/.github/actions/resolve-deploy-sha/src/main.py new file mode 100644 index 000000000..f8ef96184 --- /dev/null +++ b/.github/actions/resolve-deploy-sha/src/main.py @@ -0,0 +1,67 @@ +from __future__ import annotations + +import json +import os +from typing import Any + +from actions_toolkit import core + + +def get_required_env(name: str) -> str: + value = (os.environ.get(name) or "").strip() + if not value: + raise ValueError(f"Missing required environment variable: {name}") + return value + + +def read_event_payload() -> Any: + path = get_required_env("GITHUB_EVENT_PATH") + with open(path, "r", encoding="utf-8") as file: + return json.load(file) + + +def resolve_from_workflow_run(payload: Any) -> tuple[str, str, str, str]: + workflow_run = (payload or {}).get("workflow_run") or {} + sha = (workflow_run.get("head_sha") or "").strip() + trigger_event = (workflow_run.get("event") or "").strip() + head_branch = (workflow_run.get("head_branch") or "").strip() + + prs = workflow_run.get("pull_requests") or [] + is_fork = False + if prs: + pr = prs[0] or {} + is_fork = bool((((pr.get("head") or {}).get("repo") or {}).get("fork"))) + + if not sha: + raise ValueError("Missing workflow_run.head_sha in event payload.") + + return sha, trigger_event, head_branch, "true" if is_fork else "false" + + +def resolve_from_environment() -> tuple[str, str, str, str]: + sha = get_required_env("GITHUB_SHA") + trigger_event = (os.environ.get("GITHUB_EVENT_NAME") or "").strip() + head_branch = (os.environ.get("GITHUB_REF_NAME") or "").strip() + return sha, trigger_event, head_branch, "false" + + +def run() -> None: + try: + event_name = (os.environ.get("GITHUB_EVENT_NAME") or "").strip() + payload = read_event_payload() + + if event_name == "workflow_run": + sha, trigger_event, head_branch, is_fork = resolve_from_workflow_run(payload) + else: + sha, trigger_event, head_branch, is_fork = resolve_from_environment() + + core.set_output("sha", sha) + core.set_output("trigger_event", trigger_event) + core.set_output("head_branch", head_branch) + core.set_output("is_fork", is_fork) + except Exception as exc: # noqa: BLE001 + core.set_failed(str(exc)) + + +if __name__ == "__main__": + run() diff --git a/.github/actions/update-deployment-status/__tests__/test_main.py b/.github/actions/update-deployment-status/__tests__/test_main.py new file mode 100644 index 000000000..d947243d9 --- /dev/null +++ b/.github/actions/update-deployment-status/__tests__/test_main.py @@ -0,0 +1,61 @@ +from __future__ import annotations + +from pathlib import Path +from types import ModuleType +from typing import Any + +import pytest + + +def load_action_module() -> ModuleType: + action_root = Path(__file__).resolve().parents[1] + module_path = action_root / "src" / "main.py" + + import importlib.util + import sys + + spec = importlib.util.spec_from_file_location("update_deploy_status", module_path) + assert spec and spec.loader + module = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = module + spec.loader.exec_module(module) + return module + + +class MockResponse: + def __init__(self, *, ok: bool, status_code: int): + self.ok = ok + self.status_code = status_code + + +def test_sets_success_status(monkeypatch: pytest.MonkeyPatch) -> None: + module = load_action_module() + + monkeypatch.setenv("GITHUB_REPOSITORY", "webstackdev/astro.webstackbuilders.com") + monkeypatch.setenv("GITHUB_API_URL", "https://api.github.com") + monkeypatch.setenv("GITHUB_RUN_ID", "123") + monkeypatch.setenv("GITHUB_SERVER_URL", "https://github.com") + + inputs = { + "github-token": "ghs_test", + "deployment-id": "7", + "exit-code": "0", + "environment-url": "https://example", + "success-description": "ok", + "failure-description": "bad", + } + monkeypatch.setattr(module.core, "get_input", lambda name, required=False: inputs.get(name, "")) + + captured: dict[str, Any] = {} + + def fake_post(url: str, headers: dict[str, str], json: dict[str, Any], timeout: int) -> MockResponse: + captured["json"] = json + return MockResponse(ok=True, status_code=201) + + monkeypatch.setattr(module.requests, "post", fake_post) + monkeypatch.setattr(module.core, "set_failed", lambda m: (_ for _ in ()).throw(AssertionError(m))) + + module.run() + + assert captured["json"]["state"] == "success" + assert captured["json"]["environment_url"] == "https://example" diff --git a/.github/actions/update-deployment-status/action.yml b/.github/actions/update-deployment-status/action.yml new file mode 100644 index 000000000..7806d1af3 --- /dev/null +++ b/.github/actions/update-deployment-status/action.yml @@ -0,0 +1,31 @@ +name: Update Deployment Status +description: Updates a GitHub Deployment status to success or failure, optionally setting environment_url. + +inputs: + github-token: + description: GitHub token used to create deployment statuses. + required: true + deployment-id: + description: Deployment id. + required: true + exit-code: + description: Exit code from deploy step. + required: true + environment-url: + description: URL to set as the environment_url. + required: false + default: "" + success-description: + description: Description for success status. + required: true + failure-description: + description: Description for failure status. + required: true + +runs: + using: composite + steps: + - name: Update status + working-directory: ${{ github.action_path }} + run: python3 src/main.py + shell: bash diff --git a/.github/actions/update-deployment-status/src/main.py b/.github/actions/update-deployment-status/src/main.py new file mode 100644 index 000000000..77a79787f --- /dev/null +++ b/.github/actions/update-deployment-status/src/main.py @@ -0,0 +1,64 @@ +from __future__ import annotations + +import os +from urllib.parse import urlparse + +import requests +from actions_toolkit import core + + +def get_github_api_base_url() -> str: + raw = (os.environ.get("GITHUB_API_URL") or "https://api.github.com").strip() + parsed = urlparse(raw) + if parsed.scheme != "https": + raise ValueError(f"Unsupported GITHUB_API_URL protocol: {parsed.scheme}") + return raw if raw.endswith("/") else f"{raw}/" + + +def run() -> None: + try: + token = core.get_input("github-token", required=True) + deployment_id = core.get_input("deployment-id", required=True).strip() + exit_code = int(core.get_input("exit-code", required=True).strip() or "1") + environment_url = (core.get_input("environment-url") or "").strip() + success_description = core.get_input("success-description", required=True).strip() + failure_description = core.get_input("failure-description", required=True).strip() + + repo_full = (os.environ.get("GITHUB_REPOSITORY") or "").strip() + if "/" not in repo_full: + raise ValueError("Missing GITHUB_REPOSITORY") + owner, repo = repo_full.split("/", 1) + + run_id = (os.environ.get("GITHUB_RUN_ID") or "").strip() + server_url = (os.environ.get("GITHUB_SERVER_URL") or "https://github.com").strip() + log_url = f"{server_url}/{owner}/{repo}/actions/runs/{run_id}" if run_id else None + + base = get_github_api_base_url() + url = f"{base}repos/{owner}/{repo}/deployments/{deployment_id}/statuses" + + headers = { + "Authorization": f"Bearer {token}", + "Accept": "application/vnd.github+json", + "X-GitHub-Api-Version": "2022-11-28", + "User-Agent": "webstackbuilders-update-deployment-status-action", + } + + is_success = exit_code == 0 + body: dict[str, object] = { + "state": "success" if is_success else "failure", + "description": success_description if is_success else failure_description, + } + if environment_url: + body["environment_url"] = environment_url + if log_url: + body["log_url"] = log_url + + response = requests.post(url, headers=headers, json=body, timeout=30) + if not response.ok: + raise RuntimeError(f"Failed to create deployment status (status {response.status_code}).") + except Exception as exc: # noqa: BLE001 + core.set_failed(str(exc)) + + +if __name__ == "__main__": + run() diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml new file mode 100644 index 000000000..71047b321 --- /dev/null +++ b/.github/codeql/codeql-config.yml @@ -0,0 +1,7 @@ +name: CodeQL config + +# Unavoidable checkoutin untrusted environment to use +# "astro db verify" and "astro db push --remote" commands +paths-ignore: + - .github/workflows/deployment-preview.yml + - .github/workflows/deployment-production.yml diff --git a/.github/helpers/build-actions.sh b/.github/helpers/build-actions.sh new file mode 100755 index 000000000..ec1dcdf86 --- /dev/null +++ b/.github/helpers/build-actions.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +set -euo pipefail + +script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +repo_root="$(cd "${script_dir}/../.." && pwd)" + +actions_root="${repo_root}/.github/actions" +vite_config="${repo_root}/.github/helpers/vite.config.ts" + +if [[ ! -d "${actions_root}" ]]; then + echo "No actions directory found at ${actions_root}" >&2 + exit 0 +fi + +built_any=false + +for dir in "${actions_root}"/*; do + [[ -d "${dir}" ]] || continue + [[ -f "${dir}/action.yml" ]] || continue + [[ -f "${dir}/src/index.ts" ]] || continue + + built_any=true + echo "Building ${dir}" + ACTION_DIR="${dir}" npm exec vite -- build -c "${vite_config}" +done + +if [[ "${built_any}" == "false" ]]; then + echo "No buildable actions found under ${actions_root}" >&2 +fi diff --git a/.github/helpers/vite.config.ts b/.github/helpers/vite.config.ts new file mode 100644 index 000000000..53f3927fd --- /dev/null +++ b/.github/helpers/vite.config.ts @@ -0,0 +1,44 @@ +import { defineConfig } from 'vite' +import { existsSync } from 'fs' +import { resolve } from 'path' + +const getRequiredEnv = (name: string): string => { + const value = (process.env[name] ?? '').trim() + if (!value) { + throw new Error(`Missing required environment variable: ${name}`) + } + return value +} + +export default defineConfig(() => { + const actionDir = resolve(getRequiredEnv('ACTION_DIR')) + const entryFile = resolve(actionDir, 'src/index.ts') + + if (!existsSync(entryFile)) { + throw new Error(`Missing action entrypoint: ${entryFile}`) + } + + return { + root: actionDir, + ssr: { + target: 'node', + noExternal: true, + }, + build: { + outDir: resolve(actionDir, 'dist'), + emptyOutDir: true, + sourcemap: false, + minify: false, + target: 'node20', + rollupOptions: { + output: { + format: 'es', + entryFileNames: 'index.mjs', + chunkFileNames: 'chunks/[name]-[hash].mjs', + inlineDynamicImports: true, + }, + }, + ssr: entryFile, + }, + } +}) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 5749fbd2f..3250aa3b9 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -16,6 +16,3 @@ - [ ] 🎨 Style/UI change - [ ] ♻️ Code refactoring -## Changes Made - - diff --git a/.github/workflows/build-preview.yml b/.github/workflows/build-preview.yml new file mode 100644 index 000000000..de48e5ebc --- /dev/null +++ b/.github/workflows/build-preview.yml @@ -0,0 +1,57 @@ +# Builds Vercel preview output artifacts for later deploy workflows +name: Build Preview + +on: + push: + branches: + - main + pull_request: + branches: + - main + workflow_dispatch: + +permissions: {} + +jobs: + build-preview: + name: Build Preview + runs-on: ubuntu-latest + environment: preview + + permissions: + actions: write + contents: read + + env: + PUBLIC_GOOGLE_MAPS_API_KEY: ${{ vars.PUBLIC_GOOGLE_MAPS_API_KEY }} + PUBLIC_SENTRY_DSN: ${{ vars.PUBLIC_SENTRY_DSN }} + + steps: + - name: Checkout repository + uses: actions/checkout@v6.0.1 + + - name: Setup Node.js + uses: actions/setup-node@v6.1.0 + with: + node-version: '22.x' + cache: 'npm' + + - name: Install dependencies + run: npm ci --force + + - name: Install Vercel CLI (pinned) + run: npm install -g vercel@50.1.3 + + - name: Build (preview) + env: + VERCEL_ORG_ID: ${{ vars.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ vars.VERCEL_PROJECT_ID }} + run: NODE_ENV=preview vercel build --target=preview --token "${{ secrets.VERCEL_TOKEN }}" --yes + + - name: Upload Vercel build output + if: always() + uses: actions/upload-artifact@v6 + with: + name: vercel-build-preview + path: .vercel/output + retention-days: 30 diff --git a/.github/workflows/build-production.yml b/.github/workflows/build-production.yml new file mode 100644 index 000000000..16cb7d171 --- /dev/null +++ b/.github/workflows/build-production.yml @@ -0,0 +1,54 @@ +# Builds Vercel production output artifacts for later deploy workflows +name: Build Production + +on: + merge_group: + branches: + - main + workflow_dispatch: + +permissions: {} + +jobs: + build-production: + name: Build Production + runs-on: ubuntu-latest + environment: production + + permissions: + actions: write + contents: read + + env: + PUBLIC_GOOGLE_MAPS_API_KEY: ${{ vars.PUBLIC_GOOGLE_MAPS_API_KEY }} + PUBLIC_SENTRY_DSN: ${{ vars.PUBLIC_SENTRY_DSN }} + + steps: + - name: Checkout repository + uses: actions/checkout@v6.0.1 + + - name: Setup Node.js + uses: actions/setup-node@v6.1.0 + with: + node-version: '22.x' + cache: 'npm' + + - name: Install dependencies + run: npm ci --force + + - name: Install Vercel CLI (pinned) + run: npm install -g vercel@50.1.3 + + - name: Build (production) + env: + VERCEL_ORG_ID: ${{ vars.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ vars.VERCEL_PROJECT_ID }} + run: NODE_ENV=production vercel build --target=production --token "${{ secrets.VERCEL_TOKEN }}" --yes + + - name: Upload Vercel build output + if: always() + uses: actions/upload-artifact@v6 + with: + name: vercel-build-production + path: .vercel/output + retention-days: 30 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index f6947468e..000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,72 +0,0 @@ -name: Build - -on: - workflow_run: - workflows: - - Test - types: - - completed - -permissions: - contents: read - -jobs: - verify-ci: - name: Verify CI Results - runs-on: ubuntu-latest - permissions: - actions: read - steps: - - name: Ensure lint and unit tests succeeded - uses: actions/github-script@v8 - with: - script: | - const runId = context.payload.workflow_run.id; - const requiredJobs = ['Lint', 'Unit Tests']; - const { data } = await github.rest.actions.listJobsForWorkflowRun({ - owner: context.repo.owner, - repo: context.repo.repo, - run_id: runId, - per_page: 100 - }); - - const jobs = data.jobs || []; - const missing = requiredJobs.filter((jobName) => { - const job = jobs.find((entry) => entry.name === jobName); - return !job || job.conclusion !== 'success'; - }); - - if (missing.length > 0) { - core.setFailed(`Required CI jobs missing or failed: ${missing.join(', ')}`); - } - - push-turso-migrations: - name: Push Turso Production Migrations - runs-on: ubuntu-latest - needs: verify-ci - if: >- - needs.verify-ci.result == 'success' && - github.event.workflow_run.conclusion == 'success' && - github.event.workflow_run.event == 'push' && - github.event.workflow_run.head_branch == 'main' - - steps: - - name: Checkout repository - uses: actions/checkout@v6 - with: - ref: ${{ github.event.workflow_run.head_sha }} - - - name: Setup Node.js - uses: actions/setup-node@v6 - with: - node-version: '22.x' - cache: 'npm' - - - name: Install dependencies - run: npm ci --legacy-peer-deps - - - name: Push Astro DB migrations to Turso - run: npx astro db push --remote - env: - ASTRO_DB_REMOTE_URL: ${{ secrets.ASTRO_DB_REMOTE_URL }} - ASTRO_DB_APP_TOKEN: ${{ secrets.ASTRO_DB_APP_TOKEN }} diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 81c2d7e0a..4656a1a0c 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -1,13 +1,12 @@ # Security policy for GitHub Security Advisories -name: CodeQL Advanced Security Scanning +name: CodeQL Security Scanning on: push: - branches: - - main + branches-ignore: + - 'hotfix/**' pull_request: - branches: - - main + workflow_dispatch: jobs: analyze: @@ -22,19 +21,21 @@ jobs: strategy: fail-fast: false matrix: - language: ['javascript'] + language: ['javascript', 'actions'] steps: - name: Checkout repository - uses: actions/checkout@v6 + uses: actions/checkout@v6.0.1 - name: Initialize CodeQL uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} queries: +security-and-quality + config-file: ./.github/codeql/codeql-config.yml - name: Autobuild + if: matrix.language == 'javascript' uses: github/codeql-action/autobuild@v4 - name: Perform CodeQL Analysis diff --git a/.github/workflows/cron.yml b/.github/workflows/cron.yml new file mode 100644 index 000000000..608d476ef --- /dev/null +++ b/.github/workflows/cron.yml @@ -0,0 +1,37 @@ +name: Cron + +on: + schedule: + - cron: '*/30 * * * *' + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: ping-turso + cancel-in-progress: true + +jobs: + ping: + name: Ping Turso Production DB + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v6.0.1 + + - name: Setup Python + uses: actions/setup-python@v6.1.0 + with: + python-version: '3.13' + cache: 'pip' + + - name: Install Python dependencies + run: python3 -m pip install -r requirements.txt + + - name: Execute keep-alive query + uses: './.github/actions/keep-alive' + with: + astro-db-remote-url: ${{ secrets.ASTRO_DB_REMOTE_URL }} + astro-db-app-token: ${{ secrets.ASTRO_DB_APP_TOKEN }} diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 135b2252a..cd829317e 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -15,10 +15,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v6 + uses: actions/checkout@v6.0.1 - name: Dependency Review - uses: actions/dependency-review-action@v4 + uses: actions/dependency-review-action@v4.8.2 with: - fail-on-severity: moderate + fail-on-severity: critical comment-summary-in-pr: always diff --git a/.github/workflows/deployment-preview.yml b/.github/workflows/deployment-preview.yml new file mode 100644 index 000000000..4c6101f34 --- /dev/null +++ b/.github/workflows/deployment-preview.yml @@ -0,0 +1,124 @@ +name: Deploy Preview + +on: + workflow_run: + workflows: + - Build Preview + - Lint + - Test + - Dependency Review + - CodeQL Security Scanning + types: + - completed + workflow_dispatch: + +permissions: {} + +jobs: + deploy-preview: + name: Deploy Preview + runs-on: ubuntu-latest + environment: preview + + permissions: + actions: read + contents: read + deployments: write + + steps: + - name: Checkout repository + uses: actions/checkout@v6.0.1 + with: + ref: main + + - name: Setup Python + uses: actions/setup-python@v6.1.0 + with: + python-version: '3.13' + cache: 'pip' + + - name: Install Python dependencies + run: python3 -m pip install -r requirements.txt + + - name: Setup Node.js + uses: actions/setup-node@v6.1.0 + with: + node-version: '22.x' + cache: 'npm' + + - name: Resolve deploy SHA + id: context + uses: './.github/actions/resolve-deploy-sha' + + - name: Check prerequisites and locate build artifact + id: verify + uses: './.github/actions/check-prerequisites-and-locate-build-artifact' + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + sha: ${{ steps.context.outputs.sha }} + trigger-event: ${{ steps.context.outputs.trigger_event }} + head-branch: ${{ steps.context.outputs.head_branch }} + is-fork: ${{ steps.context.outputs.is_fork }} + skip-hotfix: 'true' + skip-forks: 'true' + require-trigger-event: pull_request + build-workflow-file: build-preview.yml + artifact-name: vercel-build-preview + required-workflows-json: >- + [{"id":"build-preview.yml","label":"Build Preview"},{"id":"lint.yml","label":"Lint"},{"id":"test.yml","label":"Test"},{"id":"dependency-review.yml","label":"Dependency Review"},{"id":"codeql.yml","label":"CodeQL Security Scanning"}] + + - name: Download build artifact + if: steps.verify.outputs.should_deploy == 'true' + uses: './.github/actions/download-build-artifact' + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + artifact-download-url: ${{ steps.verify.outputs.artifact_download_url }} + + - name: Create GitHub deployment (preview) + if: steps.verify.outputs.should_deploy == 'true' + id: gh_deploy + uses: './.github/actions/create-github-deployment-preview' + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + sha: ${{ steps.context.outputs.sha }} + + - name: Mark deployment in progress + if: steps.verify.outputs.should_deploy == 'true' + uses: './.github/actions/mark-deployment-in-progress' + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + deployment-id: ${{ steps.gh_deploy.outputs.deployment_id }} + description: Deploying to Vercel (preview) + + - name: Install Vercel CLI (pinned) + if: steps.verify.outputs.should_deploy == 'true' + uses: './.github/actions/install-vercel-cli-pinned' + with: + version: 50.1.3 + + - name: Deploy to Vercel (preview) + if: steps.verify.outputs.should_deploy == 'true' + id: vercel + uses: './.github/actions/deploy-to-vercel-preview' + with: + vercel-token: ${{ secrets.VERCEL_TOKEN }} + vercel-org-id: ${{ vars.VERCEL_ORG_ID }} + vercel-project-id: ${{ vars.VERCEL_PROJECT_ID }} + + - name: Update deployment status + if: steps.verify.outputs.should_deploy == 'true' + uses: './.github/actions/update-deployment-status' + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + deployment-id: ${{ steps.gh_deploy.outputs.deployment_id }} + exit-code: ${{ steps.vercel.outputs.exit_code }} + environment-url: ${{ steps.vercel.outputs.deploy_url }} + success-description: Deployed to Vercel (preview) + failure-description: Vercel deploy failed (preview) + + - name: Fail workflow if deploy failed + if: steps.verify.outputs.should_deploy == 'true' && steps.vercel.outputs.exit_code != '0' + uses: './.github/actions/fail-workflow-if-deploy-failed' + with: + exit-code: ${{ steps.vercel.outputs.exit_code }} + diff --git a/.github/workflows/deployment-production.yml b/.github/workflows/deployment-production.yml new file mode 100644 index 000000000..e19cbe103 --- /dev/null +++ b/.github/workflows/deployment-production.yml @@ -0,0 +1,120 @@ +name: Deploy Production + +on: + workflow_run: + workflows: + - Build Production + - Playwright + types: + - completed + workflow_dispatch: + +permissions: {} + +jobs: + deploy-production: + name: Deploy Production + runs-on: ubuntu-latest + environment: production + + permissions: + actions: read + contents: read + deployments: write + + steps: + - name: Checkout repository + uses: actions/checkout@v6.0.1 + with: + ref: main + + - name: Setup Python + uses: actions/setup-python@v6.1.0 + with: + python-version: '3.13' + cache: 'pip' + + - name: Install Python dependencies + run: python3 -m pip install -r requirements.txt + + - name: Setup Node.js + uses: actions/setup-node@v6.1.0 + with: + node-version: '22.x' + cache: 'npm' + + - name: Resolve deploy SHA + id: context + uses: './.github/actions/resolve-deploy-sha' + + - name: Check prerequisites and locate build artifact + id: verify + uses: './.github/actions/check-prerequisites-and-locate-build-artifact' + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + sha: ${{ steps.context.outputs.sha }} + trigger-event: ${{ steps.context.outputs.trigger_event }} + head-branch: ${{ steps.context.outputs.head_branch }} + is-fork: ${{ steps.context.outputs.is_fork }} + skip-hotfix: 'true' + skip-forks: 'true' + build-workflow-file: build-production.yml + artifact-name: vercel-build-production + required-workflows-json: >- + [{"id":"build-production.yml","label":"Build Production"},{"id":"playwright.yml","label":"Playwright"}] + + - name: Download build artifact + if: steps.verify.outputs.should_deploy == 'true' + uses: './.github/actions/download-build-artifact' + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + artifact-download-url: ${{ steps.verify.outputs.artifact_download_url }} + + - name: Create GitHub deployment (production) + if: steps.verify.outputs.should_deploy == 'true' + id: gh_deploy + uses: './.github/actions/create-github-deployment-production' + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + sha: ${{ steps.context.outputs.sha }} + + - name: Mark deployment in progress + if: steps.verify.outputs.should_deploy == 'true' + uses: './.github/actions/mark-deployment-in-progress' + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + deployment-id: ${{ steps.gh_deploy.outputs.deployment_id }} + description: Deploying to Vercel (production) + + - name: Install Vercel CLI (pinned) + if: steps.verify.outputs.should_deploy == 'true' + uses: './.github/actions/install-vercel-cli-pinned' + with: + version: 50.1.3 + + - name: Deploy to Vercel (production) + if: steps.verify.outputs.should_deploy == 'true' + id: vercel + uses: './.github/actions/deploy-to-vercel-production' + with: + vercel-token: ${{ secrets.VERCEL_TOKEN }} + vercel-org-id: ${{ vars.VERCEL_ORG_ID }} + vercel-project-id: ${{ vars.VERCEL_PROJECT_ID }} + + - name: Update deployment status + if: steps.verify.outputs.should_deploy == 'true' + uses: './.github/actions/update-deployment-status' + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + deployment-id: ${{ steps.gh_deploy.outputs.deployment_id }} + exit-code: ${{ steps.vercel.outputs.exit_code }} + environment-url: ${{ steps.vercel.outputs.deploy_url }} + success-description: Deployed to Vercel (production) + failure-description: Vercel deploy failed (production) + + - name: Fail workflow if deploy failed + if: steps.verify.outputs.should_deploy == 'true' && steps.vercel.outputs.exit_code != '0' + uses: './.github/actions/fail-workflow-if-deploy-failed' + with: + exit-code: ${{ steps.vercel.outputs.exit_code }} + diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml deleted file mode 100644 index 16f5602ac..000000000 --- a/.github/workflows/deployment.yml +++ /dev/null @@ -1,413 +0,0 @@ -name: Deployment - -on: - workflow_run: - workflows: - - Test - types: - - completed - -permissions: - contents: write - pull-requests: write - issues: write - deployments: write - checks: write - -jobs: - verify-ci: - name: Verify CI Results - runs-on: ubuntu-latest - permissions: - actions: read - steps: - - name: Ensure lint and unit tests succeeded - uses: actions/github-script@v8 - with: - script: | - const runId = context.payload.workflow_run.id; - const workflowRun = context.payload.workflow_run; - const branch = workflowRun?.head_branch ?? ''; - const isHotfix = branch.startsWith('hotfix/'); - if (workflowRun?.event === 'pull_request' && isHotfix) { - core.notice('Hotfix branch: skipping CI verification requirements.'); - return; - } - - const requiredJobs = ['Lint', 'Unit Tests']; - const { data } = await github.rest.actions.listJobsForWorkflowRun({ - owner: context.repo.owner, - repo: context.repo.repo, - run_id: runId, - per_page: 100 - }); - - const jobs = data.jobs || []; - const missing = requiredJobs.filter((jobName) => { - const job = jobs.find((entry) => entry.name === jobName); - return !job || job.conclusion !== 'success'; - }); - - if (missing.length > 0) { - core.setFailed(`Required CI jobs missing or failed: ${missing.join(', ')}`); - } - - deploy-preview: - name: Deploy Preview to Vercel - runs-on: ubuntu-latest - needs: verify-ci - if: >- - needs.verify-ci.result == 'success' && - github.event.workflow_run.conclusion == 'success' && - github.event.workflow_run.event == 'pull_request' && - !startsWith(github.event.workflow_run.head_branch, 'hotfix/') - - outputs: - previewUrl: ${{ steps.vercel-preview.outputs.preview-url }} - - steps: - - name: Checkout repository - uses: actions/checkout@v6 - with: - ref: ${{ github.event.workflow_run.head_sha }} - - - name: Deploy to Vercel (Preview) - uses: amondnet/vercel-action@v41.1.4 - id: vercel-preview - with: - vercel-token: ${{ secrets.VERCEL_TOKEN }} - vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }} - vercel-org-id: ${{ secrets.VERCEL_ORG_ID }} - github-comment: false - env: - VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} - - - name: Comment preview URL on PR - if: always() && steps.vercel-preview.outcome == 'success' - uses: actions/github-script@v8 - env: - VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} - VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} - VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} - with: - script: | - const workflowRun = context.payload.workflow_run; - const pr = workflowRun?.pull_requests?.[0]; - if (!pr) { - core.warning('Missing pull request metadata; skipping preview success comment.'); - return; - } - - const rawPreviewUrl = '${{ steps.vercel-preview.outputs.preview-url }}'.trim(); - const isVercelUrl = (url) => typeof url === 'string' && /vercel\.(app|com)/.test(url); - const fetchDeploymentUrl = async () => { - if (!process.env.VERCEL_TOKEN || !process.env.VERCEL_PROJECT_ID) { - core.info('Missing Vercel credentials; cannot query deployment API.'); - return null; - } - if (typeof fetch !== 'function') { - core.info('Fetch API unavailable in this runtime.'); - return null; - } - const query = new URLSearchParams({ - projectId: process.env.VERCEL_PROJECT_ID, - 'meta-githubCommitSha': workflowRun?.head_sha ?? '', - limit: '1' - }); - if (process.env.VERCEL_ORG_ID) { - query.set('teamId', process.env.VERCEL_ORG_ID); - } - const response = await fetch(`https://api.vercel.com/v6/deployments?${query.toString()}`, { - headers: { - Authorization: `Bearer ${process.env.VERCEL_TOKEN}` - } - }); - if (!response.ok) { - core.warning(`Unable to fetch deployment info (status ${response.status}).`); - return null; - } - const data = await response.json(); - const deployment = data?.deployments?.[0]; - if (deployment?.url) { - return `https://${deployment.url}`; - } - if (deployment?.inspectorUrl) { - return deployment.inspectorUrl.startsWith('http') - ? deployment.inspectorUrl - : `https://${deployment.inspectorUrl}`; - } - return null; - }; - - let previewUrl = isVercelUrl(rawPreviewUrl) ? rawPreviewUrl : await fetchDeploymentUrl(); - if (!isVercelUrl(previewUrl)) { - core.warning('Unable to resolve Vercel preview URL; skipping preview success comment.'); - return; - } - - const commentTag = ''; - const branch = workflowRun.head_branch ?? 'unknown-branch'; - const sha = workflowRun.head_sha ?? ''; - const shortSha = sha ? sha.slice(0, 7) : 'unknown'; - const commitUrl = sha - ? `https://github.com/${context.repo.owner}/${context.repo.repo}/commit/${sha}` - : `https://github.com/${context.repo.owner}/${context.repo.repo}`; - const actorLogin = typeof workflowRun.actor === 'string' - ? workflowRun.actor - : workflowRun.actor?.login; - const actor = actorLogin ?? context.actor ?? 'workflow_run'; - const actorLink = workflowRun.actor?.html_url || (actorLogin ? `https://github.com/${actorLogin}` : null); - const actorDisplay = actor.startsWith('@') ? actor : `@${actor}`; - const triggeredBy = actorLink ? `[${actorDisplay}](${actorLink})` : actorDisplay; - - const body = [ - commentTag, - '✅ **Preview deployment ready**', - '', - '| Field | Value |', - '| --- | --- |', - `| Branch | \`${branch}\` |`, - `| Commit | [${shortSha}](${commitUrl}) |`, - `| Preview | Open preview |`, - '', - `_Triggered by ${triggeredBy}_` - ].join('\n'); - - const comments = await github.paginate(github.rest.issues.listComments, { - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: pr.number, - per_page: 100 - }); - const existingComment = comments.find((comment) => comment.body?.includes(commentTag)); - - if (existingComment) { - await github.rest.issues.updateComment({ - owner: context.repo.owner, - repo: context.repo.repo, - comment_id: existingComment.id, - body - }); - } else { - await github.rest.issues.createComment({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: pr.number, - body - }); - } - - - name: Comment preview failure on PR - if: always() && steps.vercel-preview.outcome != 'success' - uses: actions/github-script@v8 - env: - VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} - VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} - VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} - with: - script: | - const previewUrl = '${{ steps.vercel-preview.outputs.preview-url }}'; - const workflowRun = context.payload.workflow_run; - const pr = workflowRun?.pull_requests?.[0]; - if (!pr) { - core.warning('No pull request metadata available; skipping preview failure comment.'); - return; - } - - const fallbackRunUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`; - const fetchDeploymentUrl = async () => { - if (!process.env.VERCEL_TOKEN || !process.env.VERCEL_PROJECT_ID) { - core.info('Missing Vercel credentials; cannot query deployment API.'); - return null; - } - const query = new URLSearchParams({ - projectId: process.env.VERCEL_PROJECT_ID, - 'meta-githubCommitSha': workflowRun?.head_sha ?? '', - limit: '1' - }); - if (process.env.VERCEL_ORG_ID) { - query.set('teamId', process.env.VERCEL_ORG_ID); - } - if (typeof fetch !== 'function') { - core.info('Fetch API unavailable in this runtime.'); - return null; - } - const response = await fetch(`https://api.vercel.com/v6/deployments?${query.toString()}`, { - headers: { - Authorization: `Bearer ${process.env.VERCEL_TOKEN}` - } - }); - if (!response.ok) { - core.warning(`Unable to fetch deployment info (status ${response.status}).`); - return null; - } - const data = await response.json(); - const deployment = data?.deployments?.[0]; - if (deployment?.url) { - return `https://${deployment.url}`; - } - if (deployment?.inspectorUrl) { - return deployment.inspectorUrl.startsWith('http') - ? deployment.inspectorUrl - : `https://${deployment.inspectorUrl}`; - } - return null; - }; - - let failedDeploymentUrl = previewUrl || await fetchDeploymentUrl(); - if (!failedDeploymentUrl) { - failedDeploymentUrl = fallbackRunUrl; - } - - const linkText = failedDeploymentUrl === fallbackRunUrl - ? 'View the workflow logs' - : 'Open the failed Vercel deployment'; - const linkLine = `\n\n🔗 [${linkText}](${failedDeploymentUrl})`; - await github.rest.issues.createComment({ - issue_number: pr.number, - owner: context.repo.owner, - repo: context.repo.repo, - body: `❌ Preview deployment failed.${linkLine}\n\nPlease review the Vercel build logs for details.` - }); - - publish-preview-status: - name: Publish Preview Status - runs-on: ubuntu-latest - needs: - - verify-ci - - deploy-preview - if: always() && github.event.workflow_run.event == 'pull_request' - steps: - - name: Publish required check run - uses: actions/github-script@v8 - env: - VERIFY_RESULT: ${{ needs.verify-ci.result }} - DEPLOY_RESULT: ${{ needs.deploy-preview.result }} - PREVIEW_URL: ${{ needs.deploy-preview.outputs.previewUrl }} - with: - script: | - const workflowRun = context.payload.workflow_run; - const sha = workflowRun?.head_sha; - if (!sha) { - core.warning('Missing workflow_run.head_sha; cannot publish check run.'); - return; - } - - const branch = workflowRun?.head_branch ?? ''; - const isHotfix = branch.startsWith('hotfix/'); - const verifyResult = process.env.VERIFY_RESULT || 'unknown'; - const deployResult = process.env.DEPLOY_RESULT || 'unknown'; - const previewUrl = (process.env.PREVIEW_URL || '').trim(); - - const checkName = 'Deploy Preview to Vercel'; - const detailsUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`; - - let conclusion = 'success'; - let summary = ''; - - if (isHotfix) { - conclusion = 'success'; - summary = 'Hotfix branch: preview deploy intentionally skipped.'; - } else if (verifyResult !== 'success') { - conclusion = 'failure'; - summary = `CI verification failed (${verifyResult}).`; - } else if (deployResult === 'success') { - conclusion = 'success'; - summary = previewUrl ? `Preview deployed: ${previewUrl}` : 'Preview deployed.'; - } else { - conclusion = 'failure'; - summary = `Preview deployment failed (${deployResult}).`; - } - - const output = { - title: checkName, - summary: `${summary}\n\nDetails: ${detailsUrl}` - }; - - const owner = context.repo.owner; - const repo = context.repo.repo; - const completed_at = new Date().toISOString(); - - const { data } = await github.rest.checks.listForRef({ - owner, - repo, - ref: sha, - filter: 'latest', - per_page: 100 - }); - - const existing = (data.check_runs || []).find((run) => run.name === checkName); - if (existing) { - await github.rest.checks.update({ - owner, - repo, - check_run_id: existing.id, - status: 'completed', - conclusion, - completed_at, - output, - details_url: detailsUrl - }); - return; - } - - await github.rest.checks.create({ - owner, - repo, - name: checkName, - head_sha: sha, - status: 'completed', - conclusion, - completed_at, - output, - details_url: detailsUrl - }); - - deploy-production: - name: Deploy to Production (Vercel) - runs-on: ubuntu-latest - needs: verify-ci - if: >- - needs.verify-ci.result == 'success' && - github.event.workflow_run.conclusion == 'success' && - github.event.workflow_run.event == 'push' && - github.event.workflow_run.head_branch == 'main' - - steps: - - name: Checkout repository - uses: actions/checkout@v6 - with: - ref: ${{ github.event.workflow_run.head_sha }} - - - name: Deploy to Vercel (Production) - uses: amondnet/vercel-action@v41.1.4 - id: vercel-production - with: - vercel-token: ${{ secrets.VERCEL_TOKEN }} - vercel-args: '--prod' - vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }} - vercel-org-id: ${{ secrets.VERCEL_ORG_ID }} - env: - VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} - - - name: Log production deployment - if: always() && steps.vercel-production.outcome == 'success' - run: | - echo "🚀 Production deployment completed" - echo "Production URL: ${{ steps.vercel-production.outputs.preview-url }}" - - - name: Comment production deployment failure on commit - if: always() && steps.vercel-production.outcome != 'success' - uses: actions/github-script@v8 - with: - script: | - const targetUrl = '${{ steps.vercel-production.outputs.preview-url }}'; - const body = targetUrl - ? `❌ Production deployment failed.\n\n🔗 ${targetUrl}\n\nPlease review the Vercel logs.` - : '❌ Production deployment failed. Please review the Vercel logs.'; - await github.rest.repos.createCommitComment({ - owner: context.repo.owner, - repo: context.repo.repo, - commit_sha: context.payload.workflow_run.head_sha, - body, - }); diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 000000000..ad9d0b7a0 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,63 @@ +# Runs lint checks and a green build to gate deployments +name: Lint + +on: + push: + branches: + - main + pull_request: + branches: + - main + workflow_dispatch: + +permissions: {} + +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + environment: testing + if: ${{ !startsWith(github.head_ref || github.ref_name, 'hotfix/') }} + + permissions: + contents: read + + steps: + - name: Checkout repository + uses: actions/checkout@v6.0.1 + + - name: Setup Python + uses: actions/setup-python@v6.1.0 + with: + python-version: '3.13' + cache: 'pip' + + - name: Install Python dependencies + run: python3 -m pip install -r requirements.txt + + - name: Setup Node.js + uses: actions/setup-node@v6.1.0 + with: + node-version: '22.x' + cache: 'npm' + + - name: Install dependencies + run: npm ci --force + + - name: Run lint + run: npm run lint + + - name: Run Astro Check + run: npm run check + + hotfix-bypass: + name: Lint Hotfix Bypass + runs-on: ubuntu-latest + if: ${{ startsWith(github.head_ref || github.ref_name, 'hotfix/') }} + + permissions: {} + + steps: + - name: Skip lint for hotfix branch + run: echo "hotfix/* branch detected; skipping lint but allowing deployments." + diff --git a/.github/workflows/migration-production.yml b/.github/workflows/migration-production.yml new file mode 100644 index 000000000..fc7f8a6a8 --- /dev/null +++ b/.github/workflows/migration-production.yml @@ -0,0 +1,128 @@ +name: Migrations Production + +on: + workflow_run: + workflows: + - Deploy Production + types: + - completed + workflow_dispatch: + +permissions: {} + +jobs: + migrations-production: + name: Migrations Production + runs-on: ubuntu-latest + environment: production + + if: github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' + + permissions: + contents: read + + steps: + - name: Checkout repository (trusted base) + uses: actions/checkout@v6.0.1 + with: + ref: main + + - name: Setup Python + uses: actions/setup-python@v6.1.0 + with: + python-version: '3.13' + cache: 'pip' + + - name: Install Python dependencies + run: python3 -m pip install -r requirements.txt + + - name: Resolve deploy SHA + id: context + uses: './.github/actions/resolve-deploy-sha' + + - name: Gate migrations (skip hotfix/unexpected triggers) + id: gate + run: | + set -euo pipefail + + # Allow manual runs (environment protections still apply). + if [ "${GITHUB_EVENT_NAME}" = 'workflow_dispatch' ]; then + echo 'should_migrate=true' >> "$GITHUB_OUTPUT" + exit 0 + fi + + # Production deploys are expected from merge queue (`merge_group`). + if [ '${{ steps.context.outputs.trigger_event }}' != 'merge_group' ]; then + echo 'should_migrate=false' >> "$GITHUB_OUTPUT" + exit 0 + fi + + case '${{ steps.context.outputs.head_branch }}' in + hotfix/*) + echo 'should_migrate=false' >> "$GITHUB_OUTPUT" + exit 0 + ;; + esac + + echo 'should_migrate=true' >> "$GITHUB_OUTPUT" + + - name: Checkout deployed SHA (validated) + # CodeQL can flag privileged workflows which checkout untrusted refs via actions/checkout. + # We checkout main first (trusted) to load local actions/tooling, then fetch+detach the + # deployed SHA from the upstream Deploy workflow context. + if: steps.gate.outputs.should_migrate == 'true' + run: | + set -euo pipefail + sha='${{ steps.context.outputs.sha }}' + git fetch origin "$sha" --depth=1 + git checkout --detach "$sha" + + - name: Setup Node.js + if: steps.gate.outputs.should_migrate == 'true' + uses: actions/setup-node@v6.1.0 + with: + node-version: '22.x' + cache: 'npm' + + - name: Install dependencies + if: steps.gate.outputs.should_migrate == 'true' + run: npm ci --force + + - name: Verify database schema is up to date + id: verify + if: steps.gate.outputs.should_migrate == 'true' + env: + ASTRO_DB_REMOTE_URL: ${{ vars.ASTRO_DB_REMOTE_URL }} + ASTRO_DB_APP_TOKEN: ${{ secrets.ASTRO_DB_APP_TOKEN }} + run: | + set -uo pipefail + set +e + output=$(npx astro db verify 2>&1) + exit_code=$? + set -e + + printf '%s\n' "$output" + + if [ "$exit_code" -ne 0 ]; then + exit "$exit_code" + fi + + if printf '%s' "$output" | grep -Fq 'Database schema is up to date.'; then + echo 'needs_push=false' >> "$GITHUB_OUTPUT" + exit 0 + fi + + if printf '%s' "$output" | grep -Fq 'Database schema is out of date.'; then + echo 'needs_push=true' >> "$GITHUB_OUTPUT" + exit 0 + fi + + echo 'Unexpected output from astro db verify' >&2 + exit 1 + + - name: Push database migrations (production) + if: steps.gate.outputs.should_migrate == 'true' && steps.verify.outputs.needs_push == 'true' + env: + ASTRO_DB_REMOTE_URL: ${{ vars.ASTRO_DB_REMOTE_URL }} + ASTRO_DB_APP_TOKEN: ${{ secrets.ASTRO_DB_APP_TOKEN }} + run: npx astro db push --remote diff --git a/.github/workflows/migrations-preview.yml b/.github/workflows/migrations-preview.yml new file mode 100644 index 000000000..3f0960806 --- /dev/null +++ b/.github/workflows/migrations-preview.yml @@ -0,0 +1,135 @@ +name: Migrations Preview + +on: + workflow_run: + workflows: + - Deploy Preview + types: + - completed + workflow_dispatch: + +permissions: {} + +jobs: + migrations-preview: + name: Migrations Preview + runs-on: ubuntu-latest + environment: preview + + if: github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' + + permissions: + contents: read + + steps: + - name: Checkout repository (trusted base) + uses: actions/checkout@v6.0.1 + with: + ref: main + + - name: Setup Python + uses: actions/setup-python@v6.1.0 + with: + python-version: '3.13' + cache: 'pip' + + - name: Install Python dependencies + run: python3 -m pip install -r requirements.txt + + - name: Resolve deploy SHA + id: context + uses: './.github/actions/resolve-deploy-sha' + + - name: Gate migrations (skip forks/hotfix/unexpected triggers) + id: gate + run: | + set -euo pipefail + + # For workflow_dispatch we allow manual runs (environment protections still apply). + if [ "${GITHUB_EVENT_NAME}" = 'workflow_dispatch' ]; then + echo 'should_migrate=true' >> "$GITHUB_OUTPUT" + exit 0 + fi + + # This workflow is intended to run after a successful preview deployment. + # Deploy Preview itself skips forks/hotfixes; we must repeat that gating here + # because the deploy workflow can still conclude 'success' when it skips. + if [ '${{ steps.context.outputs.trigger_event }}' != 'pull_request' ]; then + echo 'should_migrate=false' >> "$GITHUB_OUTPUT" + exit 0 + fi + + if [ '${{ steps.context.outputs.is_fork }}' = 'true' ]; then + echo 'should_migrate=false' >> "$GITHUB_OUTPUT" + exit 0 + fi + + case '${{ steps.context.outputs.head_branch }}' in + hotfix/*) + echo 'should_migrate=false' >> "$GITHUB_OUTPUT" + exit 0 + ;; + esac + + echo 'should_migrate=true' >> "$GITHUB_OUTPUT" + + - name: Checkout deployed SHA (validated) + # CodeQL can flag privileged workflows which checkout untrusted refs via actions/checkout. + # We checkout main first (trusted) to load local actions/tooling, then fetch+detach the + # deployed SHA. This SHA comes from the upstream Deploy workflow context. + if: steps.gate.outputs.should_migrate == 'true' + run: | + set -euo pipefail + sha='${{ steps.context.outputs.sha }}' + git fetch origin "$sha" --depth=1 + git checkout --detach "$sha" + + - name: Setup Node.js + if: steps.gate.outputs.should_migrate == 'true' + uses: actions/setup-node@v6.1.0 + with: + node-version: '22.x' + cache: 'npm' + + - name: Install dependencies + if: steps.gate.outputs.should_migrate == 'true' + run: npm ci --force + + - name: Verify database schema is up to date + id: verify + if: steps.gate.outputs.should_migrate == 'true' + env: + ASTRO_DB_REMOTE_URL: ${{ vars.ASTRO_DB_REMOTE_URL }} + ASTRO_DB_APP_TOKEN: ${{ secrets.ASTRO_DB_APP_TOKEN }} + run: | + set -uo pipefail + set +e + output=$(npx astro db verify 2>&1) + exit_code=$? + set -e + + printf '%s\n' "$output" + + if [ "$exit_code" -ne 0 ]; then + exit "$exit_code" + fi + + if printf '%s' "$output" | grep -Fq 'Database schema is up to date.'; then + echo 'needs_push=false' >> "$GITHUB_OUTPUT" + exit 0 + fi + + if printf '%s' "$output" | grep -Fq 'Database schema is out of date.'; then + echo 'needs_push=true' >> "$GITHUB_OUTPUT" + exit 0 + fi + + echo 'Unexpected output from astro db verify' >&2 + exit 1 + + - name: Push database migrations (preview) + if: steps.gate.outputs.should_migrate == 'true' && steps.verify.outputs.needs_push == 'true' + env: + ASTRO_DB_REMOTE_URL: ${{ vars.ASTRO_DB_REMOTE_URL }} + ASTRO_DB_APP_TOKEN: ${{ secrets.ASTRO_DB_APP_TOKEN }} + run: npx astro db push --remote diff --git a/.github/workflows/ping-turso.yml b/.github/workflows/ping-turso.yml deleted file mode 100644 index 2465ad1a0..000000000 --- a/.github/workflows/ping-turso.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: Ping Turso - -on: - schedule: - - cron: '*/30 * * * *' - workflow_dispatch: - -permissions: - contents: read - -concurrency: - group: ping-turso - cancel-in-progress: true - -jobs: - ping: - name: Ping Turso Production DB - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v6 - - - name: Setup Node.js - uses: actions/setup-node@v6 - with: - node-version: '22.x' - cache: 'npm' - - - name: Install dependencies - run: npm ci --legacy-peer-deps - - - name: Execute keep-alive query - env: - ASTRO_DB_REMOTE_URL: ${{ secrets.ASTRO_DB_REMOTE_URL }} - ASTRO_DB_APP_TOKEN: ${{ secrets.ASTRO_DB_APP_TOKEN }} - run: | - node --input-type=module -e "\ - import { createClient } from '@libsql/client';\ - const url = process.env.ASTRO_DB_REMOTE_URL;\ - const authToken = process.env.ASTRO_DB_APP_TOKEN;\ - if (!url || !authToken) {\ - throw new Error('Missing ASTRO_DB_REMOTE_URL or ASTRO_DB_APP_TOKEN');\ - }\ - const client = createClient({ url, authToken });\ - try {\ - await client.execute('SELECT 1');\ - console.log('[ping-turso] OK');\ - } finally {\ - client.close();\ - }\ - " diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml new file mode 100644 index 000000000..acec8c88f --- /dev/null +++ b/.github/workflows/playwright.yml @@ -0,0 +1,107 @@ +# Runs Playwright E2E suite for merge-queue validation +name: Playwright + +on: + merge_group: + branches: + - main + workflow_dispatch: + +permissions: {} + +jobs: + e2e-test: + name: E2E Tests + runs-on: ubuntu-latest + environment: testing + if: ${{ !startsWith(github.head_ref || github.ref_name, 'hotfix/') }} + + permissions: + actions: write + contents: read + + env: + ASTRO_DB_APP_TOKEN: ${{ vars.ASTRO_DB_APP_TOKEN }} + ASTRO_DB_REMOTE_URL: ${{ vars.ASTRO_DB_REMOTE_URL }} + COMPOSE_PROJECT_NAME: ${{ vars.COMPOSE_PROJECT_NAME }} + CONVERTKIT_API_KEY: ${{ vars.CONVERTKIT_API_KEY }} + CONVERTKIT_HTTP_PORT: ${{ vars.CONVERTKIT_HTTP_PORT }} + CRON_SECRET: ${{ vars.CRON_SECRET }} + DEV_SERVER_HOST: 127.0.0.1 + DEV_SERVER_PORT: ${{ vars.DEV_SERVER_PORT }} + DISABLE_TELEMETRY: true + FORCE_COLOR: 3 + PUBLIC_GOOGLE_MAPS_API_KEY: ${{ vars.PUBLIC_GOOGLE_MAPS_API_KEY }} + RESEND_API_KEY: ${{ vars.RESEND_API_KEY }} + RESEND_HTTP_PORT: ${{ vars.RESEND_HTTP_PORT }} + SENTRY_AUTH_TOKEN: ${{ vars.SENTRY_AUTH_TOKEN }} + PUBLIC_SENTRY_DSN: ${{ vars.PUBLIC_SENTRY_DSN }} + WEBMENTION_IO_TOKEN: ${{ vars.WEBMENTION_IO_TOKEN }} + + steps: + - name: Checkout repository + uses: actions/checkout@v6.0.1 + + - name: Setup Node.js + uses: actions/setup-node@v6.1.0 + with: + node-version: '22.x' + cache: 'npm' + + - name: Install dependencies + run: npm ci --force + + - name: Install Playwright browsers + run: npx playwright install --with-deps + + - name: Start Astro dev server + run: | + npm run dev -- --host 0.0.0.0 --port "${DEV_SERVER_PORT}" > /tmp/astro-dev.log 2>&1 & + echo $! > /tmp/astro-dev.pid + + - name: Wait for Astro dev server + run: | + for i in $(seq 1 60); do + if curl -fsS "http://${DEV_SERVER_HOST}:${DEV_SERVER_PORT}/" > /dev/null; then + echo "✅ Dev server is responding" + exit 0 + fi + sleep 1 + done + + echo "❌ Dev server did not start in time" + echo '--- Astro dev server log ---' + cat /tmp/astro-dev.log || true + exit 1 + + - name: Run Playwright E2E tests + run: npm run test:e2e + env: + CI: '1' + + - name: Stop Astro dev server + if: always() + run: | + if [ -f /tmp/astro-dev.pid ]; then + kill $(cat /tmp/astro-dev.pid) || true + rm /tmp/astro-dev.pid + fi + + - name: Upload Playwright report + if: always() + uses: actions/upload-artifact@v6 + with: + name: playwright-report + path: playwright-report/ + retention-days: 30 + + hotfix-bypass: + name: E2E Test Hotfix Bypass + runs-on: ubuntu-latest + if: ${{ startsWith(github.head_ref || github.ref_name, 'hotfix/') }} + + permissions: {} + + steps: + - name: Skip E2E for hotfix branch + run: echo "hotfix/* branch detected; skipping e2e workflow but allowing deployments." diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 106df6851..204da4e52 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,4 +1,4 @@ -# Runs lint, unit tests, and E2E suites to gate deployments +# Runs unit tests to gate deployments name: Test on: @@ -8,55 +8,15 @@ on: pull_request: branches: - main + workflow_dispatch: -permissions: - contents: read - -env: - CONVERTKIT_API_KEY: ${{ secrets.CONVERTKIT_API_KEY }} - CONVERTKIT_FORM_ID: ${{ secrets.CONVERTKIT_FORM_ID }} - CRON_SECRET: ${{ secrets.CRON_SECRET }} - PUBLIC_GOOGLE_MAPS_API_KEY: ${{ secrets.PUBLIC_GOOGLE_MAPS_API_KEY }} - RESEND_API_KEY: ${{ secrets.RESEND_API_KEY }} - SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} - SENTRY_DSN: ${{ secrets.SENTRY_DSN }} - WEBMENTION_IO_TOKEN: ${{ secrets.WEBMENTION_IO_TOKEN }} +permissions: {} jobs: - lint: - name: Lint - runs-on: ubuntu-latest - if: ${{ !startsWith(github.head_ref || github.ref_name, 'hotfix/') }} - - steps: - - name: Checkout repository - uses: actions/checkout@v6 - - - name: Setup Node.js - uses: actions/setup-node@v6 - with: - node-version: '22.x' - cache: 'npm' - - - name: Install dependencies - run: npm ci --legacy-peer-deps - - - name: Sync Astro types - run: npm run sync - - - name: Run Astro check - run: npm run check - - - name: Run lint - run: npm run lint:base - - - name: Run Actions lint - run: npm run lint:actions - unit-test: name: Unit Tests runs-on: ubuntu-latest - needs: lint + environment: testing if: ${{ !startsWith(github.head_ref || github.ref_name, 'hotfix/') }} permissions: @@ -65,18 +25,36 @@ jobs: contents: read pull-requests: write + env: + ASTRO_DB_APP_TOKEN: ${{ vars.ASTRO_DB_APP_TOKEN }} + ASTRO_DB_REMOTE_URL: ${{ vars.ASTRO_DB_REMOTE_URL }} + COMPOSE_PROJECT_NAME: ${{ vars.COMPOSE_PROJECT_NAME }} + CONVERTKIT_API_KEY: ${{ vars.CONVERTKIT_API_KEY }} + CONVERTKIT_HTTP_PORT: ${{ vars.CONVERTKIT_HTTP_PORT }} + CRON_SECRET: ${{ vars.CRON_SECRET }} + DEV_SERVER_HOST: 127.0.0.1 + DEV_SERVER_PORT: ${{ vars.DEV_SERVER_PORT }} + DISABLE_TELEMETRY: true + FORCE_COLOR: 3 + PUBLIC_GOOGLE_MAPS_API_KEY: ${{ vars.PUBLIC_GOOGLE_MAPS_API_KEY }} + RESEND_API_KEY: ${{ vars.RESEND_API_KEY }} + RESEND_HTTP_PORT: ${{ vars.RESEND_HTTP_PORT }} + SENTRY_AUTH_TOKEN: ${{ vars.SENTRY_AUTH_TOKEN }} + PUBLIC_SENTRY_DSN: ${{ vars.PUBLIC_SENTRY_DSN }} + WEBMENTION_IO_TOKEN: ${{ vars.WEBMENTION_IO_TOKEN }} + steps: - name: Checkout repository - uses: actions/checkout@v6 + uses: actions/checkout@v6.0.1 - name: Setup Node.js - uses: actions/setup-node@v6 + uses: actions/setup-node@v6.1.0 with: node-version: '22.x' cache: 'npm' - name: Install dependencies - run: npm ci --legacy-peer-deps + run: npm ci --force # Astro build runs sync, check, and integrations including verify links - name: Verify green build (local DB snapshot) @@ -101,89 +79,14 @@ jobs: path: coverage/ retention-days: 30 - e2e-test: - name: E2E Tests - runs-on: ubuntu-latest - needs: unit-test - # Temporarily disabled until the simplified flow is battle-tested - if: ${{ false && !startsWith(github.head_ref || github.ref_name, 'hotfix/') }} - - permissions: - actions: write - contents: read - - env: - CONVERTKIT_API_KEY: ${{ secrets.CONVERTKIT_API_KEY }} - CONVERTKIT_FORM_ID: ${{ secrets.CONVERTKIT_FORM_ID }} - CRON_SECRET: ${{ secrets.CRON_SECRET }} - RESEND_API_KEY: ${{ secrets.RESEND_API_KEY }} - SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} - SENTRY_DSN: ${{ secrets.SENTRY_DSN }} - WEBMENTION_IO_TOKEN: ${{ secrets.WEBMENTION_IO_TOKEN }} - - steps: - - name: Checkout repository - uses: actions/checkout@v6 - - - name: Setup Node.js - uses: actions/setup-node@v6 - with: - node-version: '22.x' - cache: 'npm' - - - name: Install dependencies - run: npm ci --legacy-peer-deps - - - name: Install Playwright browsers - run: npx playwright install --with-deps - - - name: Start Astro dev server - run: | - npm run dev -- --host 0.0.0.0 > /tmp/astro-dev.log 2>&1 & - echo $! > /tmp/astro-dev.pid - - - name: Wait for dev server - run: | - for attempt in $(seq 1 60); do - if curl -fsS http://127.0.0.1:4321 >/dev/null; then - echo "✅ Dev server is responding" - exit 0 - fi - sleep 2 - done - echo "❌ Dev server failed to start" >&2 - if [ -f /tmp/astro-dev.log ]; then - echo '--- Astro dev server log ---' - cat /tmp/astro-dev.log - fi - exit 1 - - - name: Run Playwright E2E tests - run: npm run test:e2e - env: - CI: '1' - - - name: Stop Astro dev server - if: always() - run: | - if [ -f /tmp/astro-dev.pid ]; then - kill $(cat /tmp/astro-dev.pid) || true - rm /tmp/astro-dev.pid - fi - - - name: Upload Playwright report - if: always() - uses: actions/upload-artifact@v6 - with: - name: playwright-report - path: playwright-report/ - retention-days: 30 - hotfix-bypass: - name: Hotfix Bypass Notice + name: Hotfix Bypass runs-on: ubuntu-latest if: ${{ startsWith(github.head_ref || github.ref_name, 'hotfix/') }} + permissions: {} + steps: - name: Skip testing for hotfix branch run: echo "hotfix/* branch detected; skipping lint, unit, and e2e workflows but allowing deployments." + diff --git a/.gitignore b/.gitignore index f45ec3f84..64bcf484c 100644 --- a/.gitignore +++ b/.gitignore @@ -63,3 +63,8 @@ build/Release # Dolphin-generated file .directory .vercel +.env*.local + +# Python bytecode +__pycache__/ +*.py[cod] diff --git a/.husky/prepare.js b/.husky/prepare.js index 8c520f5bf..f89aca6a5 100644 --- a/.husky/prepare.js +++ b/.husky/prepare.js @@ -12,14 +12,31 @@ import { execSync } from 'node:child_process' const projectRoot = process.cwd() const gitDirectory = join(projectRoot, '.git') +const isCi = process.env.CI === '1' || process.env.CI === 'true' +const isProduction = process.env.NODE_ENV === 'production' + +// In production installs, package managers commonly omit devDependencies. +// Husky lives in devDependencies, so running it would fail the install. +if (isCi || isProduction) { + console.warn(`✅ Skipping Husky install: CI=${String(process.env.CI ?? '')} NODE_ENV=${String(process.env.NODE_ENV ?? '')}`) + process.exit(0) +} + if (!existsSync(gitDirectory)) { console.warn(`✅ Skipping Husky install: missing .git directory at ${gitDirectory}`) process.exit(0) } +const huskyBin = join(projectRoot, 'node_modules', '.bin', process.platform === 'win32' ? 'husky.cmd' : 'husky') + +if (!existsSync(huskyBin)) { + console.warn(`✅ Skipping Husky install: missing husky binary at ${huskyBin}`) + process.exit(0) +} + try { console.log(`Running Husky install from ${projectRoot}`) - execSync('husky', { stdio: 'inherit', cwd: projectRoot }) + execSync(huskyBin, { stdio: 'inherit', cwd: projectRoot }) console.log('✅ Husky install complete') } catch (error) { console.error('❌ Husky install failed') diff --git a/.markdownlint.json b/.markdownlint.json index d865ce44b..ecac91749 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -6,5 +6,8 @@ "MD033": false, "MD035": false, "MD036": false, - "MD041": false + "MD041": false, + "MD049": { + "style": "underscore" + } } diff --git a/.markdownlintignore b/.markdownlintignore index 4ad4809e7..30fc9c0f2 100644 --- a/.markdownlintignore +++ b/.markdownlintignore @@ -1 +1,10 @@ -./src/content/articles/demo/index.mdx +node_modules/ +dist/ +.astro/ +dev-dist/ +__blobstorage__/ +.cache/ +.vercel/ +coverage/ + +src/content/articles/demo/index.mdx diff --git a/.pylintrc b/.pylintrc new file mode 100644 index 000000000..b20d9e738 --- /dev/null +++ b/.pylintrc @@ -0,0 +1,22 @@ +[MAIN] +# Keep this scoped and predictable for CI. +py-version=3.13 +jobs=0 + +[MESSAGES CONTROL] +# These are small GitHub Action scripts; enforce correctness but don't require docstrings. +disable= + missing-module-docstring, + missing-function-docstring, + missing-class-docstring, + too-few-public-methods, + broad-exception-caught, + duplicate-code, + too-many-arguments, + too-many-locals, + +[FORMAT] +max-line-length=120 + +[REPORTS] +score=no diff --git a/.vscode/settings.json b/.vscode/settings.json index 3516c3ae1..64b80fda9 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -104,6 +104,7 @@ "SIEM", "signup", "sklearn", + "slugified", "Southam", "spriter", "squoosh", @@ -122,6 +123,7 @@ "unspaced", "unstub", "uppy", + "upserts", "uuidv", "valyala", "Veeam", diff --git a/README.md b/README.md index 4cf7bf66c..7ccc9a703 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,16 @@ Astro DB schemas now live under `db/config.ts`. Applying those migrations requir - `npm run build` – Runs `astro build --remote`, hitting the production Turso database in read-only mode. Use this for Vercel deployments and any workflows that need to mirror production infrastructure. - `npm run build:ci` – Exports `ASTRO_DATABASE_FILE=./.astro/content.db` before delegating to `npm run build`, forcing the build to read from the local SQLite snapshot. Use this for local testing and the `Test` GitHub workflow so schema changes stay isolated until the Turso push workflow runs. +## Fork PR Preview Deployments + +Preview deployments are intentionally restricted to pull requests from branches within this repository (non-fork PRs). + +Reason: our deployment pipeline runs in a privileged GitHub Actions context (it uses repository secrets for Vercel and has write permissions for checks/comments). Running those steps against forked PR commits would risk executing untrusted code with access to secrets. + +If we ever need fork PR preview deployments, implement a safer design first, such as: +- Dual-checkout + `working-directory` (trusted checkout for local actions/tooling, untrusted checkout in a separate path for deploy input) +- Artifact-based deploy (build/test in the untrusted workflow, upload a signed artifact, deploy the artifact in the trusted workflow) + ## Coding Standards ### Component Architecture diff --git a/_TODO.md b/_TODO.md index 110f4fb31..17fba6b94 100644 --- a/_TODO.md +++ b/_TODO.md @@ -100,6 +100,8 @@ https://vercel.com/docs/analytics/quickstart#add-the-analytics-component-to-your See note in src/components/scripts/sentry/client.ts - "User Feedback - allow users to report issues" +https://vercel.com/kevin-browns-projects-dd474f73/astro-webstackbuilders-com/ai-gateway + ## Uppy file uploads from contact form docs/CONTACT_FORM.md @@ -154,13 +156,6 @@ cat.structure: Rules related to the document's overall structure, like the prope cat.tables: Rules for data tables, including headers and associations. cat.text-alternatives: Rules for ensuring that text alternatives are provided for non-text content, such as images. -## "Add to Calendar" button - -Google Calendar, Apple Calendar, Yahoo Calender, Microsoft 365, Outlook, and Teams, and generate iCal/ics files (for all other calendars and cases). - -`https://github.com/add2cal/add-to-calendar-button` -`https://add-to-calendar-button.com/` - ## Set up webmentions Needs to add real API key and test @@ -170,18 +165,6 @@ Needs to add real API key and test - (Optional) Set up Bridgy for social media - Test with sample webmentions -## Astro wrapper for the `@github/clipboard-copy-element` web component. Copies element text content or input values to the clipboard - -[`clipboard-copy`](https://github.com/BryceRussell/astro-github-elements/tree/main/packages/clipboard-copy#astro-github-elementsclipboard-copy) - -## Astro wrapper for GitHub's relative time web component. Translates dates to past or future time phrases, like "*4 hours from now*" or "*20 days ago*" - -[Relative Time](https://github.com/BryceRussell/astro-github-elements/tree/main/packages/time#readme) - -## Display text in a circular layout - -[TextCircle](https://github.com/LoStisWorld/astro-textcircle#astro-textcircle) - ## Custom Directives [`astro-directives`](https://github.com/QuentinDutot/astro-directives) @@ -229,6 +212,27 @@ You can then opt-out of prefetching for individual links by setting data-astro-p About ``` +## Astro Components to Add + +### "Add to Calendar" button + +Google Calendar, Apple Calendar, Yahoo Calender, Microsoft 365, Outlook, and Teams, and generate iCal/ics files (for all other calendars and cases). + +`https://github.com/add2cal/add-to-calendar-button` +`https://add-to-calendar-button.com/` + +### Astro wrapper for the `@github/clipboard-copy-element` web component. Copies element text content or input values to the clipboard + +[`clipboard-copy`](https://github.com/BryceRussell/astro-github-elements/tree/main/packages/clipboard-copy#astro-github-elementsclipboard-copy) + +### Astro wrapper for GitHub's relative time web component. Translates dates to past or future time phrases, like "*4 hours from now*" or "*20 days ago*" + +[Relative Time](https://github.com/BryceRussell/astro-github-elements/tree/main/packages/time#readme) + +### Display text in a circular layout + +[TextCircle](https://github.com/LoStisWorld/astro-textcircle#astro-textcircle) + ## Markdown ## Code Block and Highlighting @@ -275,28 +279,3 @@ const markdownCodeCopyConfig = { attachText: ``, } ``` - -### rehype-mathjax and remark-math - -- `rehype-katex` is alternative but lacks accessibility - -```math -L = \frac{1}{2} \rho v^2 S C_L -``` - - -### Mermaid JavaScript based diagramming and charting tool - -```mermaid -graph TD - A[Start] --> B{Is it working?} - B -->|Yes| C[Great!] - B -->|No| D[Debug] - D --> B -``` - -### Apache ECharts interactive charting and data visualization library for browser - -@TODO: uses ES Modules, needs Jest config adjusted. See note in Mermaid plugin spec file. - -`markdown-it-echarts` diff --git a/eslint.config.ts b/eslint.config.ts index 51ab02a1a..c452f33bd 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -379,6 +379,7 @@ export default [ { files: [ + '.github/actions/**/*', 'src/lib/config/pwa.ts', 'src/lib/config/serviceWorker.ts', 'src/components/scripts/store/__tests__/socialEmbeds.spec.ts', @@ -414,6 +415,7 @@ export default [ /** These directories can use process.env, which is forbidden in other files */ files: [ '.eslintrc.js', + '.github/actions/**/*', 'astro.config.ts', 'playwright.config.ts', 'vitest.config.ts', diff --git a/package-lock.json b/package-lock.json index 5a18af1be..98bd28975 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,18 +22,35 @@ "@googlemaps/extended-component-library": "^0.6.14", "@nanostores/lit": "^0.2.3", "@nanostores/persistent": "^1.2.0", + "@playwright/browser-chromium": "^1.57.0", + "@playwright/test": "1.57.0", "@semantic-ui/astro-lit": "^5.1.1", - "@sentry/astro": "^10.31.0", - "@sentry/browser": "^10.31.0", + "@sentry/astro": "^10.32.0", + "@sentry/browser": "^10.32.0", "@shikijs/transformers": "^3.20.0", - "@tailwindcss/forms": "0.5.10", + "@tailwindcss/forms": "0.5.11", "@tailwindcss/typography": "0.5.19", "@tailwindcss/vite": "^4.1.18", + "@types/canvas-confetti": "^1.9.0", + "@types/confusing-browser-globals": "1.0.3", + "@types/cross-spawn": "6.0.6", + "@types/dedent": "^0.7.2", + "@types/eslint": "^9.6.1", + "@types/eslint-plugin-security": "3.0.0", + "@types/glidejs__glide": "^3.6.6", "@types/hast": "^3.0.4", + "@types/js-cookie": "^3.0.6", + "@types/jsdom": "^27.0.0", + "@types/node": "^25.0.3", + "@types/nodemailer": "^7.0.4", "@types/pubsub-js": "^1.8.6", + "@types/react": "^19.2.7", + "@types/sanitize-html": "^2.16.0", + "@types/to-ico": "1.1.3", + "@types/uuid": "^11.0.0", + "@types/yargs": "17.0.35", "@vite-pwa/astro": "^1.2.0", "@webcomponents/template-shadowroot": "^0.2.1", - "alex": "^11.0.1", "astro": "5.16.6", "astro-icon": "^1.1.5", "astro-link-validator": "github:rodgtr1/astro-link-validator", @@ -47,11 +64,13 @@ "embla-carousel-autoplay": "^8.6.0", "focus-trap": "7.6.6", "gsap": "^3.14.2", + "html-element-attributes": "^3.5.0", + "is-whitespace-character": "^2.0.1", "isomorphic-git": "^1.36.1", "js-cookie": "^3.0.5", - "jsdom": "^27.3.0", "libphonenumber-js": "1.12.31", "lit": "^3.3.1", + "md-attr-parser": "^1.3.0", "nanostores": "^1.1.0", "nodemailer": "^7.0.11", "postcss": "8.5.6", @@ -61,15 +80,23 @@ "rehype-accessible-emojis": "^0.3.2", "rehype-autolink-headings": "^7.1.0", "rehype-external-links": "^3.0.0", - "remark-breaks": "^4.0.0", + "rehype-mathjax": "^7.1.0", + "rehype-mermaid": "^3.0.0", + "rehype-slug": "^6.0.0", + "rehype-stringify": "^10.0.1", + "remark": "^15.0.1", "remark-captions": "^2.2.4", "remark-custom-blocks": "^2.6.1", "remark-deflist": "^1.0.0", "remark-directive": "^4.0.0", "remark-emoji": "^5.0.2", + "remark-gfm": "^4.0.1", + "remark-html": "^16.0.1", "remark-linkify-regex": "^1.2.1", "remark-mark-plus": "^1.0.21", + "remark-math": "^6.0.0", "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.2", "remark-stringify": "^11.0.0", "remark-supersub": "^1.0.0", "remark-video": "^0.10.0", @@ -84,10 +111,13 @@ "tailwindcss": "^4.1.18", "title-case": "4.3.2", "to-ico": "1.1.5", + "tslib": "2.8.1", "unified": "^11.0.5", "unist": "^0.0.1", "unist-util-is": "^6.0.1", + "unist-util-visit": "^5.0.0", "uuid": "^13.0.0", + "vercel": "^50.1.3", "vite": "^7.3.0", "workbox-build": "7.4.0", "zod": "4.2.1" @@ -96,33 +126,17 @@ "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0", "@eslint/js": "9.39.2", "@happy-dom/global-registrator": "^20.0.11", - "@playwright/test": "1.57.0", "@testing-library/dom": "10.4.1", "@testing-library/preact": "3.2.4", "@testing-library/user-event": "14.6.1", "@tktco/node-actionlint": "^1.6.0", - "@types/canvas-confetti": "^1.9.0", - "@types/confusing-browser-globals": "1.0.3", - "@types/cross-spawn": "6.0.6", - "@types/dedent": "^0.7.2", - "@types/eslint": "^9.6.1", - "@types/eslint-plugin-security": "3.0.0", - "@types/glidejs__glide": "^3.6.6", - "@types/js-cookie": "^3.0.6", - "@types/jsdom": "^27.0.0", - "@types/node": "^25.0.3", - "@types/nodemailer": "^7.0.4", - "@types/react": "^19.2.7", - "@types/sanitize-html": "^2.16.0", - "@types/to-ico": "1.1.3", - "@types/uuid": "^11.0.0", - "@types/yargs": "17.0.35", "@typescript-eslint/eslint-plugin": "8.50.0", "@typescript-eslint/parser": "8.50.0", "@vitest/coverage-v8": "^4.0.16", + "alex": "^11.0.1", "confusing-browser-globals": "1.0.11", "cross-spawn": "7.0.6", - "dedent": "^1.7.0", + "dedent": "^1.7.1", "dotenv-cli": "11.0.0", "eslint": "9.39.2", "eslint-import-resolver-typescript": "^4.4.4", @@ -133,29 +147,20 @@ "eslint-plugin-security": "3.0.1", "eslint-plugin-yml": "1.19.1", "happy-dom": "^20.0.11", - "html-element-attributes": "^3.5.0", "husky": "^9.1.7", - "is-whitespace-character": "^2.0.1", - "md-attr-parser": "^1.3.0", + "jsdom": "^27.3.0", + "markdownlint-cli2": "^0.20.0", "prettier": "3.7.4", "prettier-plugin-astro": "0.14.1", - "rehype-slug": "^6.0.0", - "rehype-stringify": "^10.0.1", - "remark": "^15.0.1", - "remark-gfm": "^4.0.1", - "remark-html": "^16.0.1", - "remark-rehype": "^11.1.2", "rimraf": "6.1.2", "stylelint": "^16.26.1", "stylelint-config-standard": "^39.0.1", "stylelint-declaration-block-no-ignored-properties": "2.8.0", "stylelint-order": "7.0.0", "temp-dir": "3.0.0", - "tslib": "2.8.1", "typescript": "5.9.3", "typescript-eslint": "8.50.0", "unist-util-inspect": "^8.1.0", - "unist-util-visit": "^5.0.0", "vitest": "4.0.16", "vitest-axe": "0.1.0" }, @@ -171,6 +176,7 @@ "version": "0.9.28", "resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.28.tgz", "integrity": "sha512-LuS6IVEivI75vKN8S04qRD+YySP0RmU/cV8UNukhQZvprxF+76Z43TNo/a08eCodaGhT1Us8etqS1ZRY9/Or0A==", + "dev": true, "license": "MIT" }, "node_modules/@adobe/mdast-util-gridtables": { @@ -250,6 +256,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-4.1.0.tgz", "integrity": "sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w==", + "dev": true, "license": "MIT", "dependencies": { "@csstools/css-calc": "^2.1.4", @@ -263,6 +270,7 @@ "version": "11.2.4", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" @@ -272,6 +280,7 @@ "version": "6.7.6", "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.7.6.tgz", "integrity": "sha512-hBaJER6A9MpdG3WgdlOolHmbOYvSk46y7IQN/1+iqiCuUu6iWdQrs9DGKF8ocqsEqWujWf/V7b7vaDgiUmIvUg==", + "dev": true, "license": "MIT", "dependencies": { "@asamuzakjp/nwsapi": "^2.3.9", @@ -285,6 +294,7 @@ "version": "11.2.4", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" @@ -294,6 +304,7 @@ "version": "2.3.9", "resolved": "https://registry.npmjs.org/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz", "integrity": "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==", + "dev": true, "license": "MIT" }, "node_modules/@astrojs/check": { @@ -318,8 +329,7 @@ "version": "2.13.0", "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.13.0.tgz", "integrity": "sha512-mqVORhUJViA28fwHYaWmsXSzLO9osbdZ5ImUfxBarqsYdMlPbqAqGJCxsNzvppp1BEzc1mJNjOVvQqeDN8Vspw==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@astrojs/db": { "version": "0.18.3", @@ -521,7 +531,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -694,7 +703,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-js": "^5.2.0", @@ -710,7 +718,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -723,7 +730,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^2.2.0", @@ -737,7 +743,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^2.2.0", @@ -751,7 +756,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/util": "^5.2.0", @@ -766,7 +770,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -776,7 +779,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.222.0", @@ -788,7 +790,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -801,7 +802,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^2.2.0", @@ -815,7 +815,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^2.2.0", @@ -829,7 +828,6 @@ "version": "3.933.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sesv2/-/client-sesv2-3.933.0.tgz", "integrity": "sha512-0FTJoiCZgp2RsUYIBHQJIQzHuhKPnsMZfU1bWFm3JwSm7vjNqHnZzSS4cHRvas7i4TUGRuH0IuoXDFobawa36A==", - "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -881,7 +879,6 @@ "version": "3.933.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.933.0.tgz", "integrity": "sha512-zwGLSiK48z3PzKpQiDMKP85+fpIrPMF1qQOQW9OW7BGj5AuBZIisT2O4VzIgYJeh+t47MLU7VgBQL7muc+MJDg==", - "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -931,7 +928,6 @@ "version": "3.932.0", "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.932.0.tgz", "integrity": "sha512-AS8gypYQCbNojwgjvZGkJocC2CoEICDx9ZJ15ILsv+MlcCVLtUJSRSx3VzJOUY2EEIaGLRrPNlIqyn/9/fySvA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.930.0", @@ -956,7 +952,6 @@ "version": "3.932.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.932.0.tgz", "integrity": "sha512-ozge/c7NdHUDyHqro6+P5oHt8wfKSUBN+olttiVfBe9Mw3wBMpPa3gQ0pZnG+gwBkKskBuip2bMR16tqYvUSEA==", - "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.932.0", @@ -973,7 +968,6 @@ "version": "3.932.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.932.0.tgz", "integrity": "sha512-b6N9Nnlg8JInQwzBkUq5spNaXssM3h3zLxGzpPrnw0nHSIWPJPTbZzA5Ca285fcDUFuKP+qf3qkuqlAjGOdWhg==", - "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.932.0", @@ -995,7 +989,6 @@ "version": "3.933.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.933.0.tgz", "integrity": "sha512-HygGyKuMG5AaGXsmM0d81miWDon55xwalRHB3UmDg3QBhtunbNIoIaWUbNTKuBZXcIN6emeeEZw/YgSMqLc0YA==", - "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.932.0", @@ -1020,7 +1013,6 @@ "version": "3.933.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.933.0.tgz", "integrity": "sha512-L2dE0Y7iMLammQewPKNeEh1z/fdJyYEU+/QsLBD9VEh+SXcN/FIyTi21Isw8wPZN6lMB9PDVtISzBnF8HuSFrw==", - "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/credential-provider-env": "3.932.0", @@ -1044,7 +1036,6 @@ "version": "3.932.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.932.0.tgz", "integrity": "sha512-BodZYKvT4p/Dkm28Ql/FhDdS1+p51bcZeMMu2TRtU8PoMDHnVDhHz27zASEKSZwmhvquxHrZHB0IGuVqjZUtSQ==", - "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.932.0", @@ -1062,7 +1053,6 @@ "version": "3.933.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.933.0.tgz", "integrity": "sha512-/R1DBR7xNcuZIhS2RirU+P2o8E8/fOk+iLAhbqeSTq+g09fP/F6W7ouFpS5eVE2NIfWG7YBFoVddOhvuqpn51g==", - "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/client-sso": "3.933.0", @@ -1082,9 +1072,7 @@ "version": "3.933.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.933.0.tgz", "integrity": "sha512-c7Eccw2lhFx2/+qJn3g+uIDWRuWi2A6Sz3PVvckFUEzPsP0dPUo19hlvtarwP5GzrsXn0yEPRVhpewsIaSCGaQ==", - "devOptional": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@aws-sdk/core": "3.932.0", "@aws-sdk/nested-clients": "3.933.0", @@ -1102,7 +1090,6 @@ "version": "3.930.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.930.0.tgz", "integrity": "sha512-x30jmm3TLu7b/b+67nMyoV0NlbnCVT5DI57yDrhXAPCtdgM1KtdLWt45UcHpKOm1JsaIkmYRh2WYu7Anx4MG0g==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.930.0", @@ -1118,7 +1105,6 @@ "version": "3.930.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.930.0.tgz", "integrity": "sha512-vh4JBWzMCBW8wREvAwoSqB2geKsZwSHTa0nSt0OMOLp2PdTYIZDi0ZiVMmpfnjcx9XbS6aSluLv9sKx4RrG46A==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.930.0", @@ -1133,7 +1119,6 @@ "version": "3.933.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.933.0.tgz", "integrity": "sha512-qgrMlkVKzTCAdNw2A05DC2sPBo0KRQ7wk+lbYSRJnWVzcrceJhnmhoZVV5PFv7JtchK7sHVcfm9lcpiyd+XaCA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.930.0", @@ -1150,7 +1135,6 @@ "version": "3.932.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.932.0.tgz", "integrity": "sha512-bYMHxqQzseaAP9Z5qLI918z5AtbAnZRRtFi3POb4FLZyreBMgCgBNaPkIhdgywnkqaydTWvbMBX4s9f4gUwlTw==", - "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.932.0", @@ -1176,7 +1160,6 @@ "version": "3.932.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.932.0.tgz", "integrity": "sha512-9BGTbJyA/4PTdwQWE9hAFIJGpsYkyEW20WON3i15aDqo5oRZwZmqaVageOD57YYqG8JDJjvcwKyDdR4cc38dvg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.932.0", @@ -1195,7 +1178,6 @@ "version": "3.933.0", "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.933.0.tgz", "integrity": "sha512-o1GX0+IPlFi/D8ei9y/jj3yucJWNfPnbB5appVBWevAyUdZA5KzQ2nK/hDxiu9olTZlFEFpf1m1Rn3FaGxHqsw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -1245,7 +1227,6 @@ "version": "3.930.0", "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.930.0.tgz", "integrity": "sha512-KL2JZqH6aYeQssu1g1KuWsReupdfOoxD6f1as2VC+rdwYFUu4LfzMsFfXnBvvQWWqQ7rZHWOw1T+o5gJmg7Dzw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.930.0", @@ -1262,7 +1243,6 @@ "version": "3.932.0", "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.932.0.tgz", "integrity": "sha512-NCIRJvoRc9246RZHIusY1+n/neeG2yGhBGdKhghmrNdM+mLLN6Ii7CKFZjx3DhxtpHMpl1HWLTMhdVrGwP2upw==", - "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/middleware-sdk-s3": "3.932.0", @@ -1280,7 +1260,6 @@ "version": "3.933.0", "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.933.0.tgz", "integrity": "sha512-Qzq7zj9yXUgAAJEbbmqRhm0jmUndl8nHG0AbxFEfCfQRVZWL96Qzx0mf8lYwT9hIMrXncLwy31HOthmbXwFRwQ==", - "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.932.0", @@ -1299,7 +1278,6 @@ "version": "3.930.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.930.0.tgz", "integrity": "sha512-we/vaAgwlEFW7IeftmCLlLMw+6hFs3DzZPJw7lVHbj/5HJ0bz9gndxEsS2lQoeJ1zhiiLqAqvXxmM43s0MBg0A==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -1313,7 +1291,6 @@ "version": "3.893.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.893.0.tgz", "integrity": "sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA==", - "dev": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -1326,7 +1303,6 @@ "version": "3.930.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.930.0.tgz", "integrity": "sha512-M2oEKBzzNAYr136RRc6uqw3aWlwCxqTP1Lawps9E1d2abRPvl1p1ztQmmXp1Ak4rv8eByIZ+yQyKQ3zPdRG5dw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.930.0", @@ -1343,7 +1319,6 @@ "version": "3.893.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.893.0.tgz", "integrity": "sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -1356,7 +1331,6 @@ "version": "3.930.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.930.0.tgz", "integrity": "sha512-q6lCRm6UAe+e1LguM5E4EqM9brQlDem4XDcQ87NzEvlTW6GzmNCO0w1jS0XgCFXQHjDxjdlNFX+5sRbHijwklg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.930.0", @@ -1369,7 +1343,6 @@ "version": "3.932.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.932.0.tgz", "integrity": "sha512-/kC6cscHrZL74TrZtgiIL5jJNbVsw9duGGPurmaVgoCbP7NnxyaSWEurbNV3VPNPhNE3bV3g4Ci+odq+AlsYQg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/middleware-user-agent": "3.932.0", @@ -1394,7 +1367,6 @@ "version": "3.930.0", "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.930.0.tgz", "integrity": "sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -1409,7 +1381,6 @@ "version": "5.2.5", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", - "devOptional": true, "funding": [ { "type": "github", @@ -1428,7 +1399,6 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.0.tgz", "integrity": "sha512-D1jAmAZQYMoPiacfgNf7AWhg3DFN3Wq/vQv3WINt9znwjzHp2x+WzdJFxxj7xZL7V1U79As6G8f7PorMYWBKsQ==", - "devOptional": true, "license": "Apache-2.0", "engines": { "node": ">=18.0.0" @@ -1474,7 +1444,6 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -2940,6 +2909,12 @@ "node": ">=18" } }, + "node_modules/@braintree/sanitize-url": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz", + "integrity": "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==", + "license": "MIT" + }, "node_modules/@cacheable/memory": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.0.5.tgz", @@ -2976,7 +2951,6 @@ "integrity": "sha512-eohl3hKTiVyD1ilYdw9T0OiB4hnjef89e3dMYKz+mVKDzj+5IteTseASUsOB+EU9Tf6VNTCjDePcP6wkDGmLKQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@keyv/serialize": "^1.1.1" } @@ -3014,10 +2988,72 @@ "node": ">=18" } }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", + "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/gast": "11.0.3", + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/gast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", + "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/regexp-to-ast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", + "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/types": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", + "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/utils": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", + "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==", + "license": "Apache-2.0" + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@csstools/color-helpers": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", + "dev": true, "funding": [ { "type": "github", @@ -3037,6 +3073,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "dev": true, "funding": [ { "type": "github", @@ -3060,6 +3097,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", + "dev": true, "funding": [ { "type": "github", @@ -3087,6 +3125,7 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "dev": true, "funding": [ { "type": "github", @@ -3098,7 +3137,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -3130,6 +3168,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", + "dev": true, "funding": [ { "type": "github", @@ -3141,7 +3180,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -3181,6 +3219,54 @@ "url": "https://github.com/sponsors/JounQin" } }, + "node_modules/@edge-runtime/format": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@edge-runtime/format/-/format-2.2.1.tgz", + "integrity": "sha512-JQTRVuiusQLNNLe2W9tnzBlV/GvSVcozLl4XZHk5swnRZ/v6jp8TqR8P7sqmJsQqblDZ3EztcWmLDbhRje/+8g==", + "license": "MPL-2.0", + "engines": { + "node": ">=16" + } + }, + "node_modules/@edge-runtime/node-utils": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@edge-runtime/node-utils/-/node-utils-2.3.0.tgz", + "integrity": "sha512-uUtx8BFoO1hNxtHjp3eqVPC/mWImGb2exOfGjMLUoipuWgjej+f4o/VP4bUI8U40gu7Teogd5VTeZUkGvJSPOQ==", + "license": "MPL-2.0", + "engines": { + "node": ">=16" + } + }, + "node_modules/@edge-runtime/ponyfill": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@edge-runtime/ponyfill/-/ponyfill-2.4.2.tgz", + "integrity": "sha512-oN17GjFr69chu6sDLvXxdhg0Qe8EZviGSuqzR9qOiKh4MhFYGdBBcqRNzdmYeAdeRzOW2mM9yil4RftUQ7sUOA==", + "license": "MPL-2.0", + "engines": { + "node": ">=16" + } + }, + "node_modules/@edge-runtime/primitives": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@edge-runtime/primitives/-/primitives-4.1.0.tgz", + "integrity": "sha512-Vw0lbJ2lvRUqc7/soqygUX216Xb8T3WBZ987oywz6aJqRxcwSVWwr9e+Nqo2m9bxobA9mdbWNNoRY6S9eko1EQ==", + "license": "MPL-2.0", + "engines": { + "node": ">=16" + } + }, + "node_modules/@edge-runtime/vm": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@edge-runtime/vm/-/vm-3.2.0.tgz", + "integrity": "sha512-0dEVyRLM/lG4gp1R/Ik5bfPl/1wX00xFwd5KcNH602tzBa09oF7pbTKETEhR1GjZ75K6OJnYFu8II2dyMhONMw==", + "license": "MPL-2.0", + "dependencies": { + "@edge-runtime/primitives": "4.1.0" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/@emmetio/abbreviation": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz", @@ -3239,7 +3325,6 @@ "version": "1.7.1", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -3261,7 +3346,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -3929,6 +4013,24 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz", + "integrity": "sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==", + "license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)", + "engines": { + "node": ">=6" + } + }, "node_modules/@glidejs/glide": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@glidejs/glide/-/glide-3.7.1.tgz", @@ -4030,6 +4132,12 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "license": "ISC" + }, "node_modules/@iconify/tools": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@iconify/tools/-/tools-4.1.4.tgz", @@ -4826,7 +4934,6 @@ "resolved": "https://registry.npmjs.org/@libsql/client/-/client-0.15.15.tgz", "integrity": "sha512-twC0hQxPNHPKfeOv3sNT6u2pturQjLcI+CnpTM0SjRpocEGgfiZ7DWKXLNnsothjyJmDqEsBQJ5ztq9Wlu470w==", "license": "MIT", - "peer": true, "dependencies": { "@libsql/core": "^0.15.14", "@libsql/hrana-client": "^0.7.0", @@ -5192,6 +5299,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/@mermaid-js/parser": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.6.3.tgz", + "integrity": "sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA==", + "license": "MIT", + "dependencies": { + "langium": "3.3.1" + } + }, "node_modules/@nanostores/lit": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@nanostores/lit/-/lit-0.2.3.tgz", @@ -5278,6 +5394,7 @@ "version": "6.4.1", "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-6.4.1.tgz", "integrity": "sha512-uSz+elSGzjCMANWa5IlbGczLYPkNI/LeR+cHrgaTqTrTSh9RHhOFA4daD2eRUz6lMtOW+Fnsb+qv7V2Zz8ML0g==", + "dev": true, "license": "ISC", "dependencies": { "@npmcli/map-workspaces": "^3.0.2", @@ -5297,6 +5414,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -5306,6 +5424,7 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "dev": true, "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -5315,6 +5434,7 @@ "version": "7.2.1", "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dev": true, "license": "ISC", "dependencies": { "abbrev": "^2.0.0" @@ -5330,6 +5450,7 @@ "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -5342,6 +5463,7 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz", "integrity": "sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==", + "dev": true, "license": "ISC", "dependencies": { "@npmcli/name-from-folder": "^2.0.0", @@ -5357,6 +5479,7 @@ "version": "10.5.0", "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "dev": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", @@ -5377,6 +5500,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" @@ -5386,6 +5510,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", + "dev": true, "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -5396,7 +5521,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=8.0.0" } @@ -5418,7 +5542,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.2.0.tgz", "integrity": "sha512-qRkLWiUEZNAmYapZ7KGS5C4OmBLcP/H2foXeOEaowYCR0wi89fHejrfYfbuLVCMLp/dWZXKvQusdbUEZjERfwQ==", "license": "Apache-2.0", - "peer": true, "engines": { "node": "^18.19.0 || >=20.6.0" }, @@ -5431,7 +5554,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz", "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, @@ -5447,7 +5569,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.208.0.tgz", "integrity": "sha512-Eju0L4qWcQS+oXxi6pgh7zvE2byogAkcsVv0OjHF/97iOz1N/aKE6etSGowYkie+YA1uo6DNwdSxaaNnLvcRlA==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@opentelemetry/api-logs": "0.208.0", "import-in-the-middle": "^2.0.0", @@ -5835,7 +5956,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@opentelemetry/core": "2.2.0", "@opentelemetry/semantic-conventions": "^1.29.0" @@ -5852,7 +5972,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.2.0.tgz", "integrity": "sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@opentelemetry/core": "2.2.0", "@opentelemetry/resources": "2.2.0", @@ -5870,7 +5989,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.38.0.tgz", "integrity": "sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==", "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=14" } @@ -5896,6 +6014,24 @@ "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==", "license": "MIT" }, + "node_modules/@oxc-project/runtime": { + "version": "0.82.3", + "resolved": "https://registry.npmjs.org/@oxc-project/runtime/-/runtime-0.82.3.tgz", + "integrity": "sha512-LNh5GlJvYHAnMurO+EyA8jJwN1rki7l3PSHuosDh2I7h00T6/u9rCkUjg/SvPmT1CZzvhuW0y+gf7jcqUy/Usg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.82.3", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.82.3.tgz", + "integrity": "sha512-6nCUxBnGX0c6qfZW5MaF6/fmu5dHJDMiMPaioKHKs5mi5+8/FHQ7WGjgQIz1zxpmceMYfdIXkOaLYE+ejbuOtA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, "node_modules/@parse5/tools": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@parse5/tools/-/tools-0.3.0.tgz", @@ -5928,11 +6064,23 @@ "url": "https://opencollective.com/pkgr" } }, + "node_modules/@playwright/browser-chromium": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/@playwright/browser-chromium/-/browser-chromium-1.57.0.tgz", + "integrity": "sha512-pUg+2p6HwewLp8KCD9G6VYaS2iewdkNkyqMcSIxXBXOlp1ojTxLF6/bwyR4ixLMy6tyv75jhE8PzzMZiX5KzwQ==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.57.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@playwright/test": { "version": "1.57.0", "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.57.0.tgz", "integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==", - "dev": true, "license": "Apache-2.0", "dependencies": { "playwright": "1.57.0" @@ -5948,6 +6096,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "dev": true, "license": "MIT", "engines": { "node": ">=12.22.0" @@ -5957,6 +6106,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "4.2.10" @@ -5969,12 +6119,14 @@ "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true, "license": "ISC" }, "node_modules/@pnpm/npm-conf": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", + "dev": true, "license": "MIT", "dependencies": { "@pnpm/config.env-replace": "^1.1.0", @@ -6081,6 +6233,209 @@ "@opentelemetry/api": "^1.8" } }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-beta.35.tgz", + "integrity": "sha512-zVTg0544Ib1ldJSWwjy8URWYHlLFJ98rLnj+2FIj5fRs4KqGKP4VgH/pVUbXNGxeLFjItie6NSK1Un7nJixneQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-beta.35.tgz", + "integrity": "sha512-WPy0qx22CABTKDldEExfpYHWHulRoPo+m/YpyxP+6ODUPTQexWl8Wp12fn1CVP0xi0rOBj7ugs6+kKMAJW56wQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-beta.35.tgz", + "integrity": "sha512-3k1TabJafF/GgNubXMkfp93d5p30SfIMOmQ5gm1tFwO+baMxxVPwDs3FDvSl+feCWwXxBA+bzemgkaDlInmp1Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-beta.35.tgz", + "integrity": "sha512-GAiapN5YyIocnBVNEiOxMfWO9NqIeEKKWohj1sPLGc61P+9N1meXOOCiAPbLU+adXq0grtbYySid+Or7f2q+Mg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-beta.35.tgz", + "integrity": "sha512-okPKKIE73qkUMvq7dxDyzD0VIysdV4AirHqjf8tGTjuNoddUAl3WAtMYbuZCEKJwUyI67UINKO1peFVlYEb+8w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-beta.35.tgz", + "integrity": "sha512-Nky8Q2cxyKVkEETntrvcmlzNir5khQbDfX3PflHPbZY7XVZalllRqw7+MW5vn+jTsk5BfKVeLsvrF4344IU55g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-beta.35.tgz", + "integrity": "sha512-8aHpWVSfZl3Dy2VNFG9ywmlCPAJx45g0z+qdOeqmYceY7PBAT4QGzii9ig1hPb1pY8K45TXH44UzQwr2fx352Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-beta.35.tgz", + "integrity": "sha512-1r1Ac/vTcm1q4kRiX/NB6qtorF95PhjdCxKH3Z5pb+bWMDZnmcz18fzFlT/3C6Qpj/ZqUF+EUrG4QEDXtVXGgg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-beta.35.tgz", + "integrity": "sha512-AFl1LnuhUBDfX2j+cE6DlVGROv4qG7GCPDhR1kJqi2+OuXGDkeEjqRvRQOFErhKz1ckkP/YakvN7JheLJ2PKHQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-beta.35.tgz", + "integrity": "sha512-Tuwb8vPs+TVJlHhyLik+nwln/burvIgaPDgg6wjNZ23F1ttjZi0w0rQSZfAgsX4jaUbylwCETXQmTp3w6vcJMw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-beta.35.tgz", + "integrity": "sha512-rG0OozgqNUYcpu50MpICMlJflexRVtQfjlN9QYf6hoel46VvY0FbKGwBKoeUp2K5D4i8lV04DpEMfTZlzRjeiA==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.0.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.0.tgz", + "integrity": "sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@tybys/wasm-util": "^0.10.1" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-beta.35.tgz", + "integrity": "sha512-WeOfAZrycFo9+ZqTDp3YDCAOLolymtKGwImrr9n+OW0lpwI2UKyKXbAwGXRhydAYbfrNmuqWyfyoAnLh3X9Hjg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rolldown/binding-win32-ia32-msvc": { + "version": "1.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.0.0-beta.35.tgz", + "integrity": "sha512-XkLT7ikKGiUDvLh7qtJHRukbyyP1BIrD1xb7A+w4PjIiOKeOH8NqZ+PBaO4plT7JJnLxx+j9g/3B7iylR1nTFQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-beta.35.tgz", + "integrity": "sha512-rftASFKVzjbcQHTCYHaBIDrnQFzbeV50tm4hVugG3tPjd435RHZC2pbeGV5IPdKEqyJSuurM/GfbV3kLQ3LY/A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.35.tgz", + "integrity": "sha512-slYrCpoxJUqzFDDNlvrOYRazQUNRvWPjXA17dAOISY3rDMxX6k8K4cj2H+hEYMHF81HO3uNd5rHVigAWRM5dSg==", + "license": "MIT" + }, "node_modules/@rollup/plugin-node-resolve": { "version": "15.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz", @@ -6519,64 +6874,64 @@ } }, "node_modules/@sentry-internal/browser-utils": { - "version": "10.31.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.31.0.tgz", - "integrity": "sha512-2Pvk0aRA0M/wiUj2K00mhw8dhD/zRhGKK9xQVAPtSz9cbKO/0WIS5dMAX0bfNvYVVMQPrQM46BmEwxeMMuY6HQ==", + "version": "10.32.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.32.0.tgz", + "integrity": "sha512-LI83ZKv5ItRajfY7xmQpNs00nWNOXO+A6MCj8LNDpPouYA8m7VvqkCKG9Yh50a/5eIO9lbSWTrARO8rWR3c9jA==", "license": "MIT", "dependencies": { - "@sentry/core": "10.31.0" + "@sentry/core": "10.32.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/feedback": { - "version": "10.31.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.31.0.tgz", - "integrity": "sha512-uLmh6n0Ax/yjVO4FROpeVqzEJVMgIxDsnmKlAoQ4/HYmc2wQQbJmdIgjzZN2ruelaYEaQV7iouSYLZv4wdujOQ==", + "version": "10.32.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.32.0.tgz", + "integrity": "sha512-YjDdVR8Ep7lOGilRfSrioBKQlFzWP+j1ibL+9rfwYPWWeQSfK2mbg8+PmbWOcTIXZ/MpuZRMF6ZdkVi7VYBSJw==", "license": "MIT", "dependencies": { - "@sentry/core": "10.31.0" + "@sentry/core": "10.32.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/replay": { - "version": "10.31.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.31.0.tgz", - "integrity": "sha512-1rChhtgSSq83vef/ZID5vNRGgCVOdi3c239J3T0GWUSrmZAWHFWohqosT1jBYLIcBQia1jjJjl7j0QX0UNpSsg==", + "version": "10.32.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.32.0.tgz", + "integrity": "sha512-P6paw7bLDP72ZNJkcyKSXCXfd+/NKwRfnJpwgkRI9kjy9o0KZrIW2P/xTGftp5q1XxQ7tCt94j2gc1HelOpngw==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "10.31.0", - "@sentry/core": "10.31.0" + "@sentry-internal/browser-utils": "10.32.0", + "@sentry/core": "10.32.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "10.31.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.31.0.tgz", - "integrity": "sha512-mR6t6YNMLKndn1FvaDoOTWA15LfatcC/RMXkKYggULJWxMOs1/TCowjVidPXb/2JtfeHQvbJg5dH/hM+wW5c1Q==", + "version": "10.32.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.32.0.tgz", + "integrity": "sha512-GdhyRKywIP9IQc7RoTrBFjx2EFBjiRSndxeiW43qybO1xD2S5Cq/S7ZwkaJOXN8Ie1awm3/E6+mVct5jc6KKAg==", "license": "MIT", "dependencies": { - "@sentry-internal/replay": "10.31.0", - "@sentry/core": "10.31.0" + "@sentry-internal/replay": "10.32.0", + "@sentry/core": "10.32.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry/astro": { - "version": "10.31.0", - "resolved": "https://registry.npmjs.org/@sentry/astro/-/astro-10.31.0.tgz", - "integrity": "sha512-lvIH+ThE5in9V7G3cGQoPGc+E253f1pIlABKzCtr7K8ux2Dpv6mak+kPlfIKm886RWe+KbT65zj1byNjVtqLZQ==", + "version": "10.32.0", + "resolved": "https://registry.npmjs.org/@sentry/astro/-/astro-10.32.0.tgz", + "integrity": "sha512-MSLPr0YzTkLHdEn+Ox2Vjr5cKDjAWHb/k881Hjf5LM3HMw5UZ+qz9FD6UE6TDA0MY28KItB3iLfzTivaN5e9qA==", "license": "MIT", "dependencies": { - "@sentry/browser": "10.31.0", - "@sentry/core": "10.31.0", - "@sentry/node": "10.31.0", + "@sentry/browser": "10.32.0", + "@sentry/core": "10.32.0", + "@sentry/node": "10.32.0", "@sentry/vite-plugin": "^4.1.0" }, "engines": { @@ -6596,16 +6951,16 @@ } }, "node_modules/@sentry/browser": { - "version": "10.31.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.31.0.tgz", - "integrity": "sha512-r+unS+yzVn4lh+jRGtR1rhfcPFsSJXDzW9ngn8+VmgzuvBMLVNSVEwCO+HsghnFfWorrXYZ6GVhemsGHK8gsfg==", + "version": "10.32.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.32.0.tgz", + "integrity": "sha512-NtQlXQybrWMbUOPENS4bvxzhMX1Oi+IUH9NXA/mZ06KbQntPLES7yfIKhLNpRipuCzeS16hCJp6HMao2bZB2Hg==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "10.31.0", - "@sentry-internal/feedback": "10.31.0", - "@sentry-internal/replay": "10.31.0", - "@sentry-internal/replay-canvas": "10.31.0", - "@sentry/core": "10.31.0" + "@sentry-internal/browser-utils": "10.32.0", + "@sentry-internal/feedback": "10.32.0", + "@sentry-internal/replay": "10.32.0", + "@sentry-internal/replay-canvas": "10.32.0", + "@sentry/core": "10.32.0" }, "engines": { "node": ">=18" @@ -6808,18 +7163,18 @@ } }, "node_modules/@sentry/core": { - "version": "10.31.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.31.0.tgz", - "integrity": "sha512-VTSXdyhnu3CNaSwhp/CchZRCKh1fa7byP+KClApthsppQ57w7OjXN8dDUf38K1ZCsfdTEvdEU4qCL/WnAEbd+g==", + "version": "10.32.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.32.0.tgz", + "integrity": "sha512-E+ihb8+5PBfYMamnXHalgsmxkcG2YQqhRdgYf3yWJ5dJvi4njh1VWK3kNVj1GvsU6ktaielAx4Rg5dwEFMnbZg==", "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@sentry/node": { - "version": "10.31.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-10.31.0.tgz", - "integrity": "sha512-xdQQEj5Xo6zjQ0cXs9qT+ANyE+c3p8DJBbXdkM3c0h//5wkWBXvbTPofpUJy+ojf7Ek5SDza62ith+b1y4Lwgw==", + "version": "10.32.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-10.32.0.tgz", + "integrity": "sha512-KENGLH34gUlrNd9QVJFp37w64DZmorWarm67sFJ2J+VmBII0JMkbIJy1SdHyHxGtgitbokotMTjjf9isVnWwlw==", "license": "MIT", "dependencies": { "@opentelemetry/api": "^1.9.0", @@ -6852,9 +7207,9 @@ "@opentelemetry/sdk-trace-base": "^2.2.0", "@opentelemetry/semantic-conventions": "^1.37.0", "@prisma/instrumentation": "6.19.0", - "@sentry/core": "10.31.0", - "@sentry/node-core": "10.31.0", - "@sentry/opentelemetry": "10.31.0", + "@sentry/core": "10.32.0", + "@sentry/node-core": "10.32.0", + "@sentry/opentelemetry": "10.32.0", "import-in-the-middle": "^2", "minimatch": "^9.0.0" }, @@ -6863,14 +7218,14 @@ } }, "node_modules/@sentry/node-core": { - "version": "10.31.0", - "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-10.31.0.tgz", - "integrity": "sha512-l05kK8Uj6WbIMvDq2bZNy3i2gU2d0s9ZqjLcSawWdjdqYSIplWSuK5/iDWBoNspQaPKHVE3/pQJfVw/IAbh+HA==", + "version": "10.32.0", + "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-10.32.0.tgz", + "integrity": "sha512-O+TVuF1fO0j37W6IzdHCpTIr4uUkFzcSKgxNmH9ihYpRzkQgfLDZJWVxtov+H8/1pC5lkvl2VZhWmY+SWj2kHA==", "license": "MIT", "dependencies": { "@apm-js-collab/tracing-hooks": "^0.3.1", - "@sentry/core": "10.31.0", - "@sentry/opentelemetry": "10.31.0", + "@sentry/core": "10.32.0", + "@sentry/opentelemetry": "10.32.0", "import-in-the-middle": "^2" }, "engines": { @@ -6887,12 +7242,12 @@ } }, "node_modules/@sentry/opentelemetry": { - "version": "10.31.0", - "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.31.0.tgz", - "integrity": "sha512-3Xg8m4leB6rIOMmHMrn5cjWArKVDwDrryHZmi5Ci40x2KFpj36BnVKcmXOjx0rhKbSn03dzbue1Zx+/+FcsCKQ==", + "version": "10.32.0", + "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.32.0.tgz", + "integrity": "sha512-owGL94JAgbwxgaeUNLktJWMShZPo04ZKTaQhhLz3YmVDJFj8VFOQXdWBMqv1Gv6T6/fCuTlwzJ3rvpSOImxXUQ==", "license": "MIT", "dependencies": { - "@sentry/core": "10.31.0" + "@sentry/core": "10.32.0" }, "engines": { "node": ">=18" @@ -7017,6 +7372,12 @@ "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", "license": "MIT" }, + "node_modules/@sinclair/typebox": { + "version": "0.25.24", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", + "license": "MIT" + }, "node_modules/@sindresorhus/base62": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@sindresorhus/base62/-/base62-1.0.0.tgz", @@ -7042,11 +7403,23 @@ "url": "https://github.com/sindresorhus/is?sponsor=1" } }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@smithy/abort-controller": { "version": "4.2.5", "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -7060,7 +7433,6 @@ "version": "4.4.3", "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.3.tgz", "integrity": "sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/node-config-provider": "^4.3.5", @@ -7078,7 +7450,6 @@ "version": "3.18.4", "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.18.4.tgz", "integrity": "sha512-o5tMqPZILBvvROfC8vC+dSVnWJl9a0u9ax1i1+Bq8515eYjUJqqk5XjjEsDLoeL5dSqGSh6WGdVx1eJ1E/Nwhw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/middleware-serde": "^4.2.6", @@ -7100,7 +7471,6 @@ "version": "4.2.5", "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.5.tgz", "integrity": "sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/node-config-provider": "^4.3.5", @@ -7117,7 +7487,6 @@ "version": "5.3.6", "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.6.tgz", "integrity": "sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/protocol-http": "^5.3.5", @@ -7134,7 +7503,6 @@ "version": "4.2.5", "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.5.tgz", "integrity": "sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -7150,7 +7518,6 @@ "version": "4.2.5", "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.5.tgz", "integrity": "sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -7164,7 +7531,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -7177,7 +7543,6 @@ "version": "4.2.5", "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.5.tgz", "integrity": "sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/protocol-http": "^5.3.5", @@ -7192,7 +7557,6 @@ "version": "4.3.11", "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.11.tgz", "integrity": "sha512-eJXq9VJzEer1W7EQh3HY2PDJdEcEUnv6sKuNt4eVjyeNWcQFS4KmnY+CKkYOIR6tSqarn6bjjCqg1UB+8UJiPQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/core": "^3.18.4", @@ -7212,7 +7576,6 @@ "version": "4.4.11", "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.11.tgz", "integrity": "sha512-EL5OQHvFOKneJVRgzRW4lU7yidSwp/vRJOe542bHgExN3KNThr1rlg0iE4k4SnA+ohC+qlUxoK+smKeAYPzfAQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/node-config-provider": "^4.3.5", @@ -7233,7 +7596,6 @@ "version": "4.2.6", "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.6.tgz", "integrity": "sha512-VkLoE/z7e2g8pirwisLz8XJWedUSY8my/qrp81VmAdyrhi94T+riBfwP+AOEEFR9rFTSonC/5D2eWNmFabHyGQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/protocol-http": "^5.3.5", @@ -7248,7 +7610,6 @@ "version": "4.2.5", "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.5.tgz", "integrity": "sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -7262,7 +7623,6 @@ "version": "4.3.5", "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.5.tgz", "integrity": "sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/property-provider": "^4.2.5", @@ -7278,7 +7638,6 @@ "version": "4.4.5", "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/abort-controller": "^4.2.5", @@ -7295,7 +7654,6 @@ "version": "4.2.5", "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.5.tgz", "integrity": "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -7309,7 +7667,6 @@ "version": "5.3.5", "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.5.tgz", "integrity": "sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -7323,7 +7680,6 @@ "version": "4.2.5", "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.5.tgz", "integrity": "sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -7338,7 +7694,6 @@ "version": "4.2.5", "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.5.tgz", "integrity": "sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -7352,7 +7707,6 @@ "version": "4.2.5", "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.5.tgz", "integrity": "sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0" @@ -7365,7 +7719,6 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.0.tgz", "integrity": "sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -7379,7 +7732,6 @@ "version": "5.3.5", "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.5.tgz", "integrity": "sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^4.2.0", @@ -7399,7 +7751,6 @@ "version": "4.9.7", "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.7.tgz", "integrity": "sha512-pskaE4kg0P9xNQWihfqlTMyxyFR3CH6Sr6keHYghgyqqDXzjl2QJg5lAzuVe/LzZiOzcbcVtxKYi1/fZPt/3DA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/core": "^3.18.4", @@ -7418,7 +7769,6 @@ "version": "4.9.0", "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -7431,7 +7781,6 @@ "version": "4.2.5", "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.5.tgz", "integrity": "sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/querystring-parser": "^4.2.5", @@ -7446,7 +7795,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^4.2.0", @@ -7461,7 +7809,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -7474,7 +7821,6 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -7487,7 +7833,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^4.2.0", @@ -7501,7 +7846,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -7514,7 +7858,6 @@ "version": "4.3.10", "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.10.tgz", "integrity": "sha512-3iA3JVO1VLrP21FsZZpMCeF93aqP3uIOMvymAT3qHIJz2YlgDeRvNUspFwCNqd/j3qqILQJGtsVQnJZICh/9YA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/property-provider": "^4.2.5", @@ -7530,7 +7873,6 @@ "version": "4.2.13", "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.13.tgz", "integrity": "sha512-PTc6IpnpSGASuzZAgyUtaVfOFpU0jBD2mcGwrgDuHf7PlFgt5TIPxCYBDbFQs06jxgeV3kd/d/sok1pzV0nJRg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/config-resolver": "^4.4.3", @@ -7549,7 +7891,6 @@ "version": "3.2.5", "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.5.tgz", "integrity": "sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/node-config-provider": "^4.3.5", @@ -7564,7 +7905,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -7577,7 +7917,6 @@ "version": "4.2.5", "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.5.tgz", "integrity": "sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.9.0", @@ -7591,7 +7930,6 @@ "version": "4.2.5", "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.5.tgz", "integrity": "sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/service-error-classification": "^4.2.5", @@ -7606,7 +7944,6 @@ "version": "4.5.6", "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.6.tgz", "integrity": "sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/fetch-http-handler": "^5.3.6", @@ -7626,7 +7963,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -7639,7 +7975,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^4.2.0", @@ -7653,7 +7988,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", - "devOptional": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -7709,6 +8043,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dev": true, "license": "MIT", "dependencies": { "defer-to-connect": "^2.0.1" @@ -7718,9 +8053,9 @@ } }, "node_modules/@tailwindcss/forms": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.10.tgz", - "integrity": "sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==", + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.11.tgz", + "integrity": "sha512-h9wegbZDPurxG22xZSoWtdzc41/OlNEUQERNqI/0fOwa2aVlWGu7C35E/x6LDyD3lgtztFSSjKZyuVM0hxhbgA==", "license": "MIT", "dependencies": { "mini-svg-data-uri": "^1.2.3" @@ -8067,7 +8402,6 @@ "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -8193,6 +8527,15 @@ "node": ">=20.0.0" } }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, "node_modules/@trysound/sax": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", @@ -8202,11 +8545,80 @@ "node": ">=10.13.0" } }, + "node_modules/@ts-morph/common": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.11.1.tgz", + "integrity": "sha512-7hWZS0NRpEsNV8vWJzg7FEz6V8MaLNeJOmwmghqUXTpzk16V1LLZhdo+4QvE/+zv4cVci0OviuJFnqhEfoV3+g==", + "license": "MIT", + "dependencies": { + "fast-glob": "^3.2.7", + "minimatch": "^3.0.4", + "mkdirp": "^1.0.4", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@ts-morph/common/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@ts-morph/common/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@ts-morph/common/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "license": "MIT" + }, "node_modules/@tybys/wasm-util": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -8217,6 +8629,7 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/estree": "*" @@ -8233,7 +8646,6 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/@types/canvas-confetti/-/canvas-confetti-1.9.0.tgz", "integrity": "sha512-aBGj/dULrimR1XDZLtG9JwxX1b4HPRF6CX9Yfwh3NvstZEm1ZL7RBnel4keCPSqs1ANRu1u2Aoz9R+VmtjYuTg==", - "dev": true, "license": "MIT" }, "node_modules/@types/chai": { @@ -8251,6 +8663,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-2.0.3.tgz", "integrity": "sha512-3qe4oQAPNwVNwK4C9c8u+VJqv9kez+2MR4qJpoPFfXtgxxif1QbFusvXzK0/Wra2VX07smostI2VMmJNSpZjuQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -8260,7 +8673,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/@types/confusing-browser-globals/-/confusing-browser-globals-1.0.3.tgz", "integrity": "sha512-q+6axdE3RyjrSsy2ONE4UpF89rwOfpoMBP3lqJ+OzLuOeYHwP+o2GITzuleKb1UT3FSYybO8QmeACgyHleu2CA==", - "dev": true, "license": "MIT" }, "node_modules/@types/connect": { @@ -8276,12 +8688,264 @@ "version": "6.0.6", "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.6.tgz", "integrity": "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" } }, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "license": "MIT" + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz", + "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==", + "license": "MIT" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "license": "MIT", + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "license": "MIT" + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "license": "MIT" + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "license": "MIT" + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "license": "MIT" + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", + "license": "MIT" + }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "license": "MIT", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -8295,7 +8959,6 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/@types/dedent/-/dedent-0.7.2.tgz", "integrity": "sha512-kRiitIeUg1mPV9yH4VUJ/1uk2XjyANfeL8/7rH1tsjvHeO9PJLBHJIYsFWmAvmGj5u8rj+1TZx7PZzW2qLw3Lw==", - "dev": true, "license": "MIT" }, "node_modules/@types/deep-eql": { @@ -8309,7 +8972,6 @@ "version": "9.6.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "dev": true, "license": "MIT", "dependencies": { "@types/estree": "*", @@ -8320,7 +8982,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/eslint-plugin-security/-/eslint-plugin-security-3.0.0.tgz", "integrity": "sha512-CpJ7dhqhfURdYHAlaQM4vfl75lDYnGl5+EZKoO/fW0hEREZa9+EBn1g10XLDM6n5yJSuTAPn5afkM4vNzhlyFQ==", - "dev": true, "license": "MIT", "dependencies": { "@types/eslint": "*" @@ -8350,11 +9011,16 @@ "@types/node": "*" } }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" + }, "node_modules/@types/glidejs__glide": { "version": "3.6.6", "resolved": "https://registry.npmjs.org/@types/glidejs__glide/-/glidejs__glide-3.6.6.tgz", "integrity": "sha512-pSaSBa/NU3SKEBgXXIsdFWziIW1X+vepSN2k657DCSp9RJ7mf3WG93mXPmwPX6+5c21nYoMZoPRe5cm8xsyqUQ==", - "dev": true, "license": "MIT" }, "node_modules/@types/hast": { @@ -8370,26 +9036,26 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "dev": true, "license": "MIT" }, "node_modules/@types/is-empty": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@types/is-empty/-/is-empty-1.2.3.tgz", "integrity": "sha512-4J1l5d79hoIvsrKh5VUKVRA1aIdsOb10Hu5j3J2VfP/msDnfTdGPmNp2E1Wg+vs97Bktzo+MZePFFXSGoykYJw==", + "dev": true, "license": "MIT" }, "node_modules/@types/js-cookie": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.6.tgz", "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==", - "dev": true, "license": "MIT" }, "node_modules/@types/jsdom": { "version": "27.0.0", "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-27.0.0.tgz", "integrity": "sha512-NZyFl/PViwKzdEkQg96gtnB8wm+1ljhdDay9ahn4hgb+SfVtPCbm3TlmDUFXTA+MGN3CijicnMhG18SI5H3rFw==", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -8401,7 +9067,6 @@ "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, "license": "MIT" }, "node_modules/@types/json5": { @@ -8411,6 +9076,18 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/katex": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz", + "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==", + "license": "MIT" + }, + "node_modules/@types/mathjax": { + "version": "0.0.40", + "resolved": "https://registry.npmjs.org/@types/mathjax/-/mathjax-0.0.40.tgz", + "integrity": "sha512-rHusx08LCg92WJxrsM3SPjvLTSvK5C+gealtSuhKbEOcUZfWlwigaFoPLf6Dfxhg4oryN5qP9Sj7zOQ4HYXINw==", + "license": "MIT" + }, "node_modules/@types/mdast": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", @@ -8430,6 +9107,7 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true, "license": "MIT" }, "node_modules/@types/ms": { @@ -8469,7 +9147,6 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-7.0.4.tgz", "integrity": "sha512-ee8fxWqOchH+Hv6MDDNNy028kwvVnLplrStm4Zf/3uHWw5zzo8FoYYeffpJtGs2wWysEumMH0ZIdMGMY1eMAow==", - "dev": true, "license": "MIT", "dependencies": { "@aws-sdk/client-sesv2": "^3.839.0", @@ -8480,6 +9157,7 @@ "version": "2.4.4", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true, "license": "MIT" }, "node_modules/@types/pg": { @@ -8487,7 +9165,6 @@ "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.6.tgz", "integrity": "sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ==", "license": "MIT", - "peer": true, "dependencies": { "@types/node": "*", "pg-protocol": "*", @@ -8514,7 +9191,6 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -8529,7 +9205,6 @@ "version": "2.16.0", "resolved": "https://registry.npmjs.org/@types/sanitize-html/-/sanitize-html-2.16.0.tgz", "integrity": "sha512-l6rX1MUXje5ztPT0cAFtUayXF06DqPhRyfVXareEN5gGCFaP/iwsxIyKODr9XDhfxPpN6vXUFNfo5kZMXCxBtw==", - "dev": true, "license": "MIT", "dependencies": { "htmlparser2": "^8.0.0" @@ -8539,7 +9214,6 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -8568,6 +9242,7 @@ "version": "8.1.3", "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.3.tgz", "integrity": "sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==", + "dev": true, "license": "MIT" }, "node_modules/@types/tar": { @@ -8593,7 +9268,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/@types/to-ico/-/to-ico-1.1.3.tgz", "integrity": "sha512-3Ew8Hsz/qiDGzwvz75pjRU+6Ocfvrit6hHfirauEdJXxdro73MTe5XdcANh4GZ2wdJqWw9BIuHwWgKAfjUXoGw==", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -8603,7 +9277,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "dev": true, "license": "MIT" }, "node_modules/@types/trusted-types": { @@ -8623,7 +9296,6 @@ "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-11.0.0.tgz", "integrity": "sha512-HVyk8nj2m+jcFRNazzqyVKiZezyhDKrGUA3jlEcg/nZ6Ms+qHwocba1Y/AaVaznJTAM9xpdFSh+ptbNrhOGvZA==", "deprecated": "This is a stub types definition. uuid provides its own type definitions, so you do not need this installed.", - "dev": true, "license": "MIT", "dependencies": { "uuid": "*" @@ -8649,7 +9321,6 @@ "version": "17.0.35", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", - "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -8659,7 +9330,6 @@ "version": "21.0.3", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, "license": "MIT" }, "node_modules/@types/yauzl": { @@ -8717,7 +9387,6 @@ "integrity": "sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.50.0", "@typescript-eslint/types": "8.50.0", @@ -9242,53 +9911,1411 @@ } } }, - "node_modules/@vercel/functions": { - "version": "2.2.13", - "resolved": "https://registry.npmjs.org/@vercel/functions/-/functions-2.2.13.tgz", - "integrity": "sha512-14ArBSIIcOBx9nrEgaJb4Bw+en1gl6eSoJWh8qjifLl5G3E4dRXCFOT8HP+w66vb9Wqyd1lAQBrmRhRwOj9X9A==", + "node_modules/@vercel/backends": { + "version": "0.0.17", + "resolved": "https://registry.npmjs.org/@vercel/backends/-/backends-0.0.17.tgz", + "integrity": "sha512-T1wTYvBbOuSStMM3GO2YK39YOZaCsT8GpkSOP0+3Ya9MO7qkOsOTIkzIzMY4SRO1e1CiVqqlbkGgwsGirgc6mA==", "license": "Apache-2.0", "dependencies": { - "@vercel/oidc": "2.0.2" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@aws-sdk/credential-provider-web-identity": "*" - }, - "peerDependenciesMeta": { - "@aws-sdk/credential-provider-web-identity": { - "optional": true - } - } - }, - "node_modules/@vercel/nft": { - "version": "0.30.4", - "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.30.4.tgz", - "integrity": "sha512-wE6eAGSXScra60N2l6jWvNtVK0m+sh873CpfZW4KI2v8EHuUQp+mSEi4T+IcdPCSEDgCdAS/7bizbhQlkjzrSA==", - "license": "MIT", - "dependencies": { - "@mapbox/node-pre-gyp": "^2.0.0", - "@rollup/pluginutils": "^5.1.3", - "acorn": "^8.6.0", - "acorn-import-attributes": "^1.9.5", - "async-sema": "^3.1.1", - "bindings": "^1.4.0", - "estree-walker": "2.0.2", - "glob": "^10.5.0", - "graceful-fs": "^4.2.9", - "node-gyp-build": "^4.2.2", - "picomatch": "^4.0.2", - "resolve-from": "^5.0.0" - }, - "bin": { - "nft": "out/cli.js" - }, - "engines": { - "node": ">=18" + "@vercel/cervel": "0.0.7", + "@vercel/introspection": "0.0.7", + "@vercel/nft": "1.1.1", + "@vercel/static-config": "3.1.2", + "fs-extra": "11.1.0", + "rolldown": "1.0.0-beta.35" } }, - "node_modules/@vercel/nft/node_modules/@rollup/pluginutils": { + "node_modules/@vercel/backends/node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@vercel/backends/node_modules/@vercel/nft": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-1.1.1.tgz", + "integrity": "sha512-mKMGa7CEUcXU75474kOeqHbtvK1kAcu4wiahhmlUenB5JbTQB8wVlDI8CyHR3rpGo0qlzoRWqcDzI41FUoBJCA==", + "license": "MIT", + "dependencies": { + "@mapbox/node-pre-gyp": "^2.0.0", + "@rollup/pluginutils": "^5.1.3", + "acorn": "^8.6.0", + "acorn-import-attributes": "^1.9.5", + "async-sema": "^3.1.1", + "bindings": "^1.4.0", + "estree-walker": "2.0.2", + "glob": "^13.0.0", + "graceful-fs": "^4.2.9", + "node-gyp-build": "^4.2.2", + "picomatch": "^4.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "nft": "out/cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@vercel/backends/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@vercel/backends/node_modules/fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@vercel/backends/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/backends/node_modules/lru-cache": { + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", + "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@vercel/backends/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/backends/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@vercel/backends/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/backends/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@vercel/blob": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@vercel/blob/-/blob-1.0.2.tgz", + "integrity": "sha512-Im/KeFH4oPx7UsM+QiteimnE07bIUD7JK6CBafI9Z0jRFogaialTBMiZj8EKk/30ctUYsrpIIyP9iIY1YxWnUQ==", + "license": "Apache-2.0", + "dependencies": { + "async-retry": "^1.3.3", + "is-buffer": "^2.0.5", + "is-node-process": "^1.2.0", + "throttleit": "^2.1.0", + "undici": "^5.28.4" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@vercel/blob/node_modules/undici": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", + "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/@vercel/build-utils": { + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/@vercel/build-utils/-/build-utils-13.2.4.tgz", + "integrity": "sha512-12m+8Z+wsxJUoWZ+JQqRk8v1O0ioJhGYWz+yStW8abuzfNz75QW2rRcbn0hSHuF8c7b3D2papmMdh94kSSYQEw==", + "license": "Apache-2.0" + }, + "node_modules/@vercel/cervel": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@vercel/cervel/-/cervel-0.0.7.tgz", + "integrity": "sha512-x4AeBr6tiRO1QDK1T4DINtczdsedhPLnpOiwTuBUqhAs681Whf23elUrv2ibOXYeGQIWMcy1MlFh7wzac7E9RA==", + "license": "Apache-2.0", + "dependencies": { + "execa": "3.2.0", + "rolldown": "1.0.0-beta.52", + "srvx": "0.8.9", + "tsx": "4.19.2" + }, + "bin": { + "cervel": "bin/cervel.mjs" + }, + "peerDependencies": { + "typescript": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@vercel/cervel/node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.0.tgz", + "integrity": "sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@tybys/wasm-util": "^0.10.1" + } + }, + "node_modules/@vercel/cervel/node_modules/@oxc-project/types": { + "version": "0.99.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.99.0.tgz", + "integrity": "sha512-LLDEhXB7g1m5J+woRSgfKsFPS3LhR9xRhTeIoEBm5WrkwMxn6eZ0Ld0c0K5eHB57ChZX6I3uSmmLjZ8pcjlRcw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@vercel/cervel/node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-beta.52.tgz", + "integrity": "sha512-MBGIgysimZPqTDcLXI+i9VveijkP5C3EAncEogXhqfax6YXj1Tr2LY3DVuEOMIjWfMPMhtQSPup4fSTAmgjqIw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@vercel/cervel/node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-beta.52.tgz", + "integrity": "sha512-MmKeoLnKu1d9j6r19K8B+prJnIZ7u+zQ+zGQ3YHXGnr41rzE3eqQLovlkvoZnRoxDGPA4ps0pGiwXy6YE3lJyg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@vercel/cervel/node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-beta.52.tgz", + "integrity": "sha512-qpHedvQBmIjT8zdnjN3nWPR2qjQyJttbXniCEKKdHeAbZG9HyNPBUzQF7AZZGwmS9coQKL+hWg9FhWzh2dZ2IA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@vercel/cervel/node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-beta.52.tgz", + "integrity": "sha512-dDp7WbPapj/NVW0LSiH/CLwMhmLwwKb3R7mh2kWX+QW85X1DGVnIEyKh9PmNJjB/+suG1dJygdtdNPVXK1hylg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@vercel/cervel/node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-beta.52.tgz", + "integrity": "sha512-9e4l6vy5qNSliDPqNfR6CkBOAx6PH7iDV4OJiEJzajajGrVy8gc/IKKJUsoE52G8ud8MX6r3PMl97NfwgOzB7g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@vercel/cervel/node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-beta.52.tgz", + "integrity": "sha512-V48oDR84feRU2KRuzpALp594Uqlx27+zFsT6+BgTcXOtu7dWy350J1G28ydoCwKB+oxwsRPx2e7aeQnmd3YJbQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@vercel/cervel/node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-beta.52.tgz", + "integrity": "sha512-ENLmSQCWqSA/+YN45V2FqTIemg7QspaiTjlm327eUAMeOLdqmSOVVyrQexJGNTQ5M8sDYCgVAig2Kk01Ggmqaw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@vercel/cervel/node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-beta.52.tgz", + "integrity": "sha512-klahlb2EIFltSUubn/VLjuc3qxp1E7th8ukayPfdkcKvvYcQ5rJztgx8JsJSuAKVzKtNTqUGOhy4On71BuyV8g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@vercel/cervel/node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-beta.52.tgz", + "integrity": "sha512-UuA+JqQIgqtkgGN2c/AQ5wi8M6mJHrahz/wciENPTeI6zEIbbLGoth5XN+sQe2pJDejEVofN9aOAp0kaazwnVg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@vercel/cervel/node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-beta.52.tgz", + "integrity": "sha512-1BNQW8u4ro8bsN1+tgKENJiqmvc+WfuaUhXzMImOVSMw28pkBKdfZtX2qJPADV3terx+vNJtlsgSGeb3+W6Jiw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@vercel/cervel/node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-beta.52.tgz", + "integrity": "sha512-K/p7clhCqJOQpXGykrFaBX2Dp9AUVIDHGc+PtFGBwg7V+mvBTv/tsm3LC3aUmH02H2y3gz4y+nUTQ0MLpofEEg==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.0.7" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@vercel/cervel/node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-beta.52.tgz", + "integrity": "sha512-a4EkXBtnYYsKipjS7QOhEBM4bU5IlR9N1hU+JcVEVeuTiaslIyhWVKsvf7K2YkQHyVAJ+7/A9BtrGqORFcTgng==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@vercel/cervel/node_modules/@rolldown/binding-win32-ia32-msvc": { + "version": "1.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.0.0-beta.52.tgz", + "integrity": "sha512-5ZXcYyd4GxPA6QfbGrNcQjmjbuLGvfz6728pZMsQvGHI+06LT06M6TPtXvFvLgXtexc+OqvFe1yAIXJU1gob/w==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@vercel/cervel/node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-beta.52.tgz", + "integrity": "sha512-tzpnRQXJrSzb8Z9sm97UD3cY0toKOImx+xRKsDLX4zHaAlRXWh7jbaKBePJXEN7gNw7Nm03PBNwphdtA8KSUYQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@vercel/cervel/node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.52.tgz", + "integrity": "sha512-/L0htLJZbaZFL1g9OHOblTxbCYIGefErJjtYOwgl9ZqNx27P3L0SDfjhhHIss32gu5NWgnxuT2a2Hnnv6QGHKA==", + "license": "MIT" + }, + "node_modules/@vercel/cervel/node_modules/rolldown": { + "version": "1.0.0-beta.52", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-beta.52.tgz", + "integrity": "sha512-Hbnpljue+JhMJrlOjQ1ixp9me7sUec7OjFvS+A1Qm8k8Xyxmw3ZhxFu7LlSXW1s9AX3POE9W9o2oqCEeR5uDmg==", + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.99.0", + "@rolldown/pluginutils": "1.0.0-beta.52" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.0-beta.52", + "@rolldown/binding-darwin-arm64": "1.0.0-beta.52", + "@rolldown/binding-darwin-x64": "1.0.0-beta.52", + "@rolldown/binding-freebsd-x64": "1.0.0-beta.52", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.52", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.52", + "@rolldown/binding-linux-arm64-musl": "1.0.0-beta.52", + "@rolldown/binding-linux-x64-gnu": "1.0.0-beta.52", + "@rolldown/binding-linux-x64-musl": "1.0.0-beta.52", + "@rolldown/binding-openharmony-arm64": "1.0.0-beta.52", + "@rolldown/binding-wasm32-wasi": "1.0.0-beta.52", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.52", + "@rolldown/binding-win32-ia32-msvc": "1.0.0-beta.52", + "@rolldown/binding-win32-x64-msvc": "1.0.0-beta.52" + } + }, + "node_modules/@vercel/detect-agent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@vercel/detect-agent/-/detect-agent-1.0.0.tgz", + "integrity": "sha512-AIPgNkmtFcDgPCl+xvTT1ga90OL7OTX2RKM4zu0PMpwBthPfN2DpdHy10n3bh8K+CA22GDU0/ncjzprZsrk0sw==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@vercel/elysia": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/@vercel/elysia/-/elysia-0.1.15.tgz", + "integrity": "sha512-5XIV3yPRUZSbzJeSrBKSsc3h5AJlhAQ1D39X41oyi/2FF/dAb2rcH921ETYUqRmojbrH4ZKPqmpLbs/Qrv7BeQ==", + "license": "Apache-2.0", + "dependencies": { + "@vercel/node": "5.5.16", + "@vercel/static-config": "3.1.2" + } + }, + "node_modules/@vercel/error-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@vercel/error-utils/-/error-utils-2.0.3.tgz", + "integrity": "sha512-CqC01WZxbLUxoiVdh9B/poPbNpY9U+tO1N9oWHwTl5YAZxcqXmmWJ8KNMFItJCUUWdY3J3xv8LvAuQv2KZ5YdQ==", + "license": "Apache-2.0" + }, + "node_modules/@vercel/express": { + "version": "0.1.21", + "resolved": "https://registry.npmjs.org/@vercel/express/-/express-0.1.21.tgz", + "integrity": "sha512-RqeU4tG88sQfFAhZmAop+RWM3oGkQVgI82Al8kdbGO++5MYDGdSgl7U/G9gTFoXAU/cgREqG13LNyfZ/WkLLqw==", + "license": "Apache-2.0", + "dependencies": { + "@vercel/cervel": "0.0.7", + "@vercel/nft": "1.1.1", + "@vercel/node": "5.5.16", + "@vercel/static-config": "3.1.2", + "fs-extra": "11.1.0", + "path-to-regexp": "8.3.0", + "rolldown": "1.0.0-beta.35", + "ts-morph": "12.0.0", + "zod": "3.22.4" + } + }, + "node_modules/@vercel/express/node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@vercel/express/node_modules/@vercel/nft": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-1.1.1.tgz", + "integrity": "sha512-mKMGa7CEUcXU75474kOeqHbtvK1kAcu4wiahhmlUenB5JbTQB8wVlDI8CyHR3rpGo0qlzoRWqcDzI41FUoBJCA==", + "license": "MIT", + "dependencies": { + "@mapbox/node-pre-gyp": "^2.0.0", + "@rollup/pluginutils": "^5.1.3", + "acorn": "^8.6.0", + "acorn-import-attributes": "^1.9.5", + "async-sema": "^3.1.1", + "bindings": "^1.4.0", + "estree-walker": "2.0.2", + "glob": "^13.0.0", + "graceful-fs": "^4.2.9", + "node-gyp-build": "^4.2.2", + "picomatch": "^4.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "nft": "out/cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@vercel/express/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@vercel/express/node_modules/fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@vercel/express/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/express/node_modules/lru-cache": { + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", + "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@vercel/express/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/express/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@vercel/express/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/express/node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/@vercel/express/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@vercel/express/node_modules/zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@vercel/fastify": { + "version": "0.1.18", + "resolved": "https://registry.npmjs.org/@vercel/fastify/-/fastify-0.1.18.tgz", + "integrity": "sha512-oUg7KtKwtVjmGZozVlNXnHJewOzQPIJ+4xji81oznD8Vp7FER6lWDdyZnX9RdxZsJS561yiK9C3/wG0QLXWVCg==", + "license": "Apache-2.0", + "dependencies": { + "@vercel/node": "5.5.16", + "@vercel/static-config": "3.1.2" + } + }, + "node_modules/@vercel/fun": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vercel/fun/-/fun-1.2.0.tgz", + "integrity": "sha512-WSmS9qe2R+5roucDEwYB3atKhs9sUbkHV3laJGEUoqz25O83jLE/jqg/B/3yTunB0av1xqiCIBFFVKnXsqSc8w==", + "license": "Apache-2.0", + "dependencies": { + "@tootallnate/once": "2.0.0", + "async-listen": "1.2.0", + "debug": "4.3.4", + "generic-pool": "3.4.2", + "micro": "9.3.5-canary.3", + "ms": "2.1.1", + "node-fetch": "2.6.7", + "path-match": "1.2.4", + "promisepipe": "3.0.0", + "semver": "7.5.4", + "stat-mode": "0.3.0", + "stream-to-promise": "2.2.0", + "tar": "6.2.1", + "tinyexec": "0.3.2", + "tree-kill": "1.2.2", + "uid-promise": "1.0.0", + "xdg-app-paths": "5.1.0", + "yauzl-promise": "2.1.3" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@vercel/fun/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/@vercel/fun/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@vercel/fun/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/@vercel/fun/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vercel/fun/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/@vercel/fun/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@vercel/fun/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vercel/fun/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vercel/fun/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "license": "MIT" + }, + "node_modules/@vercel/fun/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/@vercel/fun/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vercel/fun/node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vercel/fun/node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "license": "MIT" + }, + "node_modules/@vercel/fun/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/@vercel/functions": { + "version": "2.2.13", + "resolved": "https://registry.npmjs.org/@vercel/functions/-/functions-2.2.13.tgz", + "integrity": "sha512-14ArBSIIcOBx9nrEgaJb4Bw+en1gl6eSoJWh8qjifLl5G3E4dRXCFOT8HP+w66vb9Wqyd1lAQBrmRhRwOj9X9A==", + "license": "Apache-2.0", + "dependencies": { + "@vercel/oidc": "2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@aws-sdk/credential-provider-web-identity": "*" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-provider-web-identity": { + "optional": true + } + } + }, + "node_modules/@vercel/gatsby-plugin-vercel-analytics": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@vercel/gatsby-plugin-vercel-analytics/-/gatsby-plugin-vercel-analytics-1.0.11.tgz", + "integrity": "sha512-iTEA0vY6RBPuEzkwUTVzSHDATo1aF6bdLLspI68mQ/BTbi5UQEGjpjyzdKOVcSYApDtFU6M6vypZ1t4vIEnHvw==", + "license": "Apache-2.0", + "dependencies": { + "web-vitals": "0.2.4" + } + }, + "node_modules/@vercel/gatsby-plugin-vercel-builder": { + "version": "2.0.114", + "resolved": "https://registry.npmjs.org/@vercel/gatsby-plugin-vercel-builder/-/gatsby-plugin-vercel-builder-2.0.114.tgz", + "integrity": "sha512-IDwIk0kHePWEVEK24mjZB+LkDau+wEajtFA481qxqMVX+09M1p6Z+tLvKyzGm2gYEREFcC4fhJ0aStMPXA5w5A==", + "dependencies": { + "@sinclair/typebox": "0.25.24", + "@vercel/build-utils": "13.2.4", + "esbuild": "0.14.47", + "etag": "1.8.1", + "fs-extra": "11.1.0" + } + }, + "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/esbuild": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.47.tgz", + "integrity": "sha512-wI4ZiIfFxpkuxB8ju4MHrGwGLyp1+awEHAHVpx6w7a+1pmYIq8T9FGEVVwFo0iFierDoMj++Xq69GXWYn2EiwA==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "esbuild-android-64": "0.14.47", + "esbuild-android-arm64": "0.14.47", + "esbuild-darwin-64": "0.14.47", + "esbuild-darwin-arm64": "0.14.47", + "esbuild-freebsd-64": "0.14.47", + "esbuild-freebsd-arm64": "0.14.47", + "esbuild-linux-32": "0.14.47", + "esbuild-linux-64": "0.14.47", + "esbuild-linux-arm": "0.14.47", + "esbuild-linux-arm64": "0.14.47", + "esbuild-linux-mips64le": "0.14.47", + "esbuild-linux-ppc64le": "0.14.47", + "esbuild-linux-riscv64": "0.14.47", + "esbuild-linux-s390x": "0.14.47", + "esbuild-netbsd-64": "0.14.47", + "esbuild-openbsd-64": "0.14.47", + "esbuild-sunos-64": "0.14.47", + "esbuild-windows-32": "0.14.47", + "esbuild-windows-64": "0.14.47", + "esbuild-windows-arm64": "0.14.47" + } + }, + "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@vercel/go": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vercel/go/-/go-3.2.4.tgz", + "integrity": "sha512-160JJuGJmBsu391lhiICFNZ4k5e3h7IUvnfXAzC1/W3ImpgDNWbR+pDcasZ1hs6xxtMzhHkO8CB94wZCgWibDA==", + "license": "Apache-2.0" + }, + "node_modules/@vercel/h3": { + "version": "0.1.24", + "resolved": "https://registry.npmjs.org/@vercel/h3/-/h3-0.1.24.tgz", + "integrity": "sha512-N1+nE1nc+HZ6NThdzSd/AeUjTIpvg6HUbcsS3jnR+gucbpQSx4lirL34WUQjL/QjEJAUw2QB55N9Qv5zQMrX8w==", + "license": "Apache-2.0", + "dependencies": { + "@vercel/node": "5.5.16", + "@vercel/static-config": "3.1.2" + } + }, + "node_modules/@vercel/hono": { + "version": "0.2.18", + "resolved": "https://registry.npmjs.org/@vercel/hono/-/hono-0.2.18.tgz", + "integrity": "sha512-OZ2yOcdKShSAZolmM8ALxABcCIAIK3GxraW69p7Kvs9yigXnDE2U/+sudIwAaT+fi2DfvkTDvH0Lltm1emskXg==", + "license": "Apache-2.0", + "dependencies": { + "@vercel/nft": "1.1.1", + "@vercel/node": "5.5.16", + "@vercel/static-config": "3.1.2", + "fs-extra": "11.1.0", + "path-to-regexp": "8.3.0", + "rolldown": "1.0.0-beta.35", + "ts-morph": "12.0.0", + "zod": "3.22.4" + } + }, + "node_modules/@vercel/hono/node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@vercel/hono/node_modules/@vercel/nft": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-1.1.1.tgz", + "integrity": "sha512-mKMGa7CEUcXU75474kOeqHbtvK1kAcu4wiahhmlUenB5JbTQB8wVlDI8CyHR3rpGo0qlzoRWqcDzI41FUoBJCA==", + "license": "MIT", + "dependencies": { + "@mapbox/node-pre-gyp": "^2.0.0", + "@rollup/pluginutils": "^5.1.3", + "acorn": "^8.6.0", + "acorn-import-attributes": "^1.9.5", + "async-sema": "^3.1.1", + "bindings": "^1.4.0", + "estree-walker": "2.0.2", + "glob": "^13.0.0", + "graceful-fs": "^4.2.9", + "node-gyp-build": "^4.2.2", + "picomatch": "^4.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "nft": "out/cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@vercel/hono/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@vercel/hono/node_modules/fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@vercel/hono/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/hono/node_modules/lru-cache": { + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", + "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@vercel/hono/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/hono/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@vercel/hono/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/hono/node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/@vercel/hono/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@vercel/hono/node_modules/zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@vercel/hydrogen": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@vercel/hydrogen/-/hydrogen-1.3.3.tgz", + "integrity": "sha512-SCyAtjLCEvKbXgac/u42AVNcIE0/GdNe1dvTP/SV6qSUPo/5od9jlry+U55OdlUr9LRqCopehTrN5SxnmrderQ==", + "license": "Apache-2.0", + "dependencies": { + "@vercel/static-config": "3.1.2", + "ts-morph": "12.0.0" + } + }, + "node_modules/@vercel/introspection": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@vercel/introspection/-/introspection-0.0.7.tgz", + "integrity": "sha512-8JjxYqUsdxHaExbUANvGftAJeRTxVGYwTmaV9KcOA+C3SVvYSUertnQeTgKiau0Fc2cHmxh9e0poLxs2N3gZ2A==", + "license": "Apache-2.0", + "dependencies": { + "path-to-regexp": "8.3.0", + "zod": "3.22.4" + } + }, + "node_modules/@vercel/introspection/node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/@vercel/introspection/node_modules/zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@vercel/nestjs": { + "version": "0.2.19", + "resolved": "https://registry.npmjs.org/@vercel/nestjs/-/nestjs-0.2.19.tgz", + "integrity": "sha512-Fy/7TjPLZOptkpA66Cp6sulzTNEh6NPeLPXrjAThB8utRCoFDT1gWQQUALz/6y886wor2cPnj4kFHqjKreO38Q==", + "license": "Apache-2.0", + "dependencies": { + "@vercel/node": "5.5.16", + "@vercel/static-config": "3.1.2" + } + }, + "node_modules/@vercel/next": { + "version": "4.15.9", + "resolved": "https://registry.npmjs.org/@vercel/next/-/next-4.15.9.tgz", + "integrity": "sha512-L1bQTxyCnGhWXafQ5xGgOvhAfGZbh5AVro0yOvAHf5Y3plGktR/psudEbbKyEeCszttVHWgdGwKYiVu+0nO40g==", + "license": "Apache-2.0", + "dependencies": { + "@vercel/nft": "1.1.1" + } + }, + "node_modules/@vercel/next/node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@vercel/next/node_modules/@vercel/nft": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-1.1.1.tgz", + "integrity": "sha512-mKMGa7CEUcXU75474kOeqHbtvK1kAcu4wiahhmlUenB5JbTQB8wVlDI8CyHR3rpGo0qlzoRWqcDzI41FUoBJCA==", + "license": "MIT", + "dependencies": { + "@mapbox/node-pre-gyp": "^2.0.0", + "@rollup/pluginutils": "^5.1.3", + "acorn": "^8.6.0", + "acorn-import-attributes": "^1.9.5", + "async-sema": "^3.1.1", + "bindings": "^1.4.0", + "estree-walker": "2.0.2", + "glob": "^13.0.0", + "graceful-fs": "^4.2.9", + "node-gyp-build": "^4.2.2", + "picomatch": "^4.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "nft": "out/cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@vercel/next/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@vercel/next/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/next/node_modules/lru-cache": { + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", + "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@vercel/next/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/next/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@vercel/next/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/next/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@vercel/nft": { + "version": "0.30.4", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.30.4.tgz", + "integrity": "sha512-wE6eAGSXScra60N2l6jWvNtVK0m+sh873CpfZW4KI2v8EHuUQp+mSEi4T+IcdPCSEDgCdAS/7bizbhQlkjzrSA==", + "license": "MIT", + "dependencies": { + "@mapbox/node-pre-gyp": "^2.0.0", + "@rollup/pluginutils": "^5.1.3", + "acorn": "^8.6.0", + "acorn-import-attributes": "^1.9.5", + "async-sema": "^3.1.1", + "bindings": "^1.4.0", + "estree-walker": "2.0.2", + "glob": "^10.5.0", + "graceful-fs": "^4.2.9", + "node-gyp-build": "^4.2.2", + "picomatch": "^4.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "nft": "out/cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@vercel/nft/node_modules/@rollup/pluginutils": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", @@ -9316,27 +11343,444 @@ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "license": "MIT" }, - "node_modules/@vercel/nft/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "license": "ISC", + "node_modules/@vercel/nft/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/nft/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@vercel/nft/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@vercel/node": { + "version": "5.5.16", + "resolved": "https://registry.npmjs.org/@vercel/node/-/node-5.5.16.tgz", + "integrity": "sha512-OoW99cfID3u45wbfOsy/Aibw55s0pzl4b4Wy77Weh690JhECFaiKeHL1GW6w8WGrObhKYDtsvYyoRJeKCm8kqA==", + "license": "Apache-2.0", + "dependencies": { + "@edge-runtime/node-utils": "2.3.0", + "@edge-runtime/primitives": "4.1.0", + "@edge-runtime/vm": "3.2.0", + "@types/node": "16.18.11", + "@vercel/build-utils": "13.2.4", + "@vercel/error-utils": "2.0.3", + "@vercel/nft": "1.1.1", + "@vercel/static-config": "3.1.2", + "async-listen": "3.0.0", + "cjs-module-lexer": "1.2.3", + "edge-runtime": "2.5.9", + "es-module-lexer": "1.4.1", + "esbuild": "0.14.47", + "etag": "1.8.1", + "mime-types": "2.1.35", + "node-fetch": "2.6.9", + "path-to-regexp": "6.1.0", + "path-to-regexp-updated": "npm:path-to-regexp@6.3.0", + "ts-morph": "12.0.0", + "ts-node": "10.9.1", + "typescript": "4.9.5", + "typescript5": "npm:typescript@5.9.3", + "undici": "5.28.4" + } + }, + "node_modules/@vercel/node/node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@vercel/node/node_modules/@types/node": { + "version": "16.18.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.11.tgz", + "integrity": "sha512-3oJbGBUWuS6ahSnEq1eN2XrCyf4YsWI8OyCvo7c64zQJNplk3mO84t53o8lfTk+2ji59g5ycfc6qQ3fdHliHuA==", + "license": "MIT" + }, + "node_modules/@vercel/node/node_modules/@vercel/nft": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-1.1.1.tgz", + "integrity": "sha512-mKMGa7CEUcXU75474kOeqHbtvK1kAcu4wiahhmlUenB5JbTQB8wVlDI8CyHR3rpGo0qlzoRWqcDzI41FUoBJCA==", + "license": "MIT", + "dependencies": { + "@mapbox/node-pre-gyp": "^2.0.0", + "@rollup/pluginutils": "^5.1.3", + "acorn": "^8.6.0", + "acorn-import-attributes": "^1.9.5", + "async-sema": "^3.1.1", + "bindings": "^1.4.0", + "estree-walker": "2.0.2", + "glob": "^13.0.0", + "graceful-fs": "^4.2.9", + "node-gyp-build": "^4.2.2", + "picomatch": "^4.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "nft": "out/cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@vercel/node/node_modules/async-listen": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/async-listen/-/async-listen-3.0.0.tgz", + "integrity": "sha512-V+SsTpDqkrWTimiotsyl33ePSjA5/KrithwupuvJ6ztsqPvGv6ge4OredFhPffVXiLN/QUWvE0XcqJaYgt6fOg==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/@vercel/node/node_modules/cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "license": "MIT" + }, + "node_modules/@vercel/node/node_modules/es-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "license": "MIT" + }, + "node_modules/@vercel/node/node_modules/esbuild": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.47.tgz", + "integrity": "sha512-wI4ZiIfFxpkuxB8ju4MHrGwGLyp1+awEHAHVpx6w7a+1pmYIq8T9FGEVVwFo0iFierDoMj++Xq69GXWYn2EiwA==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "esbuild-android-64": "0.14.47", + "esbuild-android-arm64": "0.14.47", + "esbuild-darwin-64": "0.14.47", + "esbuild-darwin-arm64": "0.14.47", + "esbuild-freebsd-64": "0.14.47", + "esbuild-freebsd-arm64": "0.14.47", + "esbuild-linux-32": "0.14.47", + "esbuild-linux-64": "0.14.47", + "esbuild-linux-arm": "0.14.47", + "esbuild-linux-arm64": "0.14.47", + "esbuild-linux-mips64le": "0.14.47", + "esbuild-linux-ppc64le": "0.14.47", + "esbuild-linux-riscv64": "0.14.47", + "esbuild-linux-s390x": "0.14.47", + "esbuild-netbsd-64": "0.14.47", + "esbuild-openbsd-64": "0.14.47", + "esbuild-sunos-64": "0.14.47", + "esbuild-windows-32": "0.14.47", + "esbuild-windows-64": "0.14.47", + "esbuild-windows-arm64": "0.14.47" + } + }, + "node_modules/@vercel/node/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@vercel/node/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/node/node_modules/lru-cache": { + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", + "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@vercel/node/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/node/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@vercel/node/node_modules/node-fetch": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/@vercel/node/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/node/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@vercel/node/node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/@vercel/node/node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/@vercel/oidc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vercel/oidc/-/oidc-2.0.2.tgz", + "integrity": "sha512-59PBFx3T+k5hLTEWa3ggiMpGRz1OVvl9eN8SUai+A43IsqiOuAe7qPBf+cray/Fj6mkgnxm/D7IAtjc8zSHi7g==", + "license": "Apache-2.0", + "dependencies": { + "@types/ms": "2.1.0", + "ms": "2.1.3" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@vercel/python": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@vercel/python/-/python-6.1.5.tgz", + "integrity": "sha512-qbD48/B3sU7Ok/2T6Cd4hjOdlwewO0S1Lwp2wS59jdl5ne8E+9fwQZ4W4GWVytsK4o3cDz4siYDh5XrnMxCV6w==", + "license": "Apache-2.0" + }, + "node_modules/@vercel/redwood": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@vercel/redwood/-/redwood-2.4.6.tgz", + "integrity": "sha512-lJgRENm7yZHvSMiGTFXd/x1Asz6MTFACfJHHMDThNL2hESvpbrOpp27t/NfNMCrV7TUEedHOE1fNIogy704S0Q==", + "license": "Apache-2.0", + "dependencies": { + "@vercel/nft": "1.1.1", + "@vercel/static-config": "3.1.2", + "semver": "6.3.1", + "ts-morph": "12.0.0" + } + }, + "node_modules/@vercel/redwood/node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@vercel/redwood/node_modules/@vercel/nft": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-1.1.1.tgz", + "integrity": "sha512-mKMGa7CEUcXU75474kOeqHbtvK1kAcu4wiahhmlUenB5JbTQB8wVlDI8CyHR3rpGo0qlzoRWqcDzI41FUoBJCA==", + "license": "MIT", + "dependencies": { + "@mapbox/node-pre-gyp": "^2.0.0", + "@rollup/pluginutils": "^5.1.3", + "acorn": "^8.6.0", + "acorn-import-attributes": "^1.9.5", + "async-sema": "^3.1.1", + "bindings": "^1.4.0", + "estree-walker": "2.0.2", + "glob": "^13.0.0", + "graceful-fs": "^4.2.9", + "node-gyp-build": "^4.2.2", + "picomatch": "^4.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "nft": "out/cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@vercel/redwood/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@vercel/redwood/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", + "minimatch": "^10.1.1", "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "path-scurry": "^2.0.0" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@vercel/nft/node_modules/minipass": { + "node_modules/@vercel/redwood/node_modules/lru-cache": { + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", + "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@vercel/redwood/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/redwood/node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", @@ -9345,7 +11789,23 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/@vercel/nft/node_modules/picomatch": { + "node_modules/@vercel/redwood/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/redwood/node_modules/picomatch": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", @@ -9357,17 +11817,150 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@vercel/oidc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vercel/oidc/-/oidc-2.0.2.tgz", - "integrity": "sha512-59PBFx3T+k5hLTEWa3ggiMpGRz1OVvl9eN8SUai+A43IsqiOuAe7qPBf+cray/Fj6mkgnxm/D7IAtjc8zSHi7g==", + "node_modules/@vercel/remix-builder": { + "version": "5.5.6", + "resolved": "https://registry.npmjs.org/@vercel/remix-builder/-/remix-builder-5.5.6.tgz", + "integrity": "sha512-7NG5OCyM3Hki1GYjLMv3LTusRR1oXNriW9Ux58kvmTmcXQFXAUzth1V3FuZRuxyn+f70io7AN2TRDAAwaAlfIA==", "license": "Apache-2.0", "dependencies": { - "@types/ms": "2.1.0", - "ms": "2.1.3" + "@vercel/error-utils": "2.0.3", + "@vercel/nft": "1.1.1", + "@vercel/static-config": "3.1.2", + "path-to-regexp": "6.1.0", + "path-to-regexp-updated": "npm:path-to-regexp@6.3.0", + "ts-morph": "12.0.0" + } + }, + "node_modules/@vercel/remix-builder/node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" }, "engines": { - "node": ">= 18" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@vercel/remix-builder/node_modules/@vercel/nft": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-1.1.1.tgz", + "integrity": "sha512-mKMGa7CEUcXU75474kOeqHbtvK1kAcu4wiahhmlUenB5JbTQB8wVlDI8CyHR3rpGo0qlzoRWqcDzI41FUoBJCA==", + "license": "MIT", + "dependencies": { + "@mapbox/node-pre-gyp": "^2.0.0", + "@rollup/pluginutils": "^5.1.3", + "acorn": "^8.6.0", + "acorn-import-attributes": "^1.9.5", + "async-sema": "^3.1.1", + "bindings": "^1.4.0", + "estree-walker": "2.0.2", + "glob": "^13.0.0", + "graceful-fs": "^4.2.9", + "node-gyp-build": "^4.2.2", + "picomatch": "^4.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "nft": "out/cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@vercel/remix-builder/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@vercel/remix-builder/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/remix-builder/node_modules/lru-cache": { + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", + "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@vercel/remix-builder/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/remix-builder/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@vercel/remix-builder/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/remix-builder/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/@vercel/routing-utils": { @@ -9383,6 +11976,117 @@ "ajv": "^6.12.3" } }, + "node_modules/@vercel/ruby": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@vercel/ruby/-/ruby-2.2.4.tgz", + "integrity": "sha512-E7V8kUk/pgLT7ZmqyrZWShxaCHc73Cga4pwcW+jcvMAS4kj5niAaz1HquT5sIbq4onKvmHmB1dDEXE7IKAWsjA==", + "license": "Apache-2.0" + }, + "node_modules/@vercel/rust": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@vercel/rust/-/rust-1.0.4.tgz", + "integrity": "sha512-G0uO7+j0c/r1vlumlC6KgBfAq9/eip43C96fxnhoN6aeesChrFh8dTeU6Qh9E26AGzHYBENjkpw0Qk4/FbI1ww==", + "license": "Apache-2.0", + "dependencies": { + "@iarna/toml": "^2.2.5", + "execa": "5" + } + }, + "node_modules/@vercel/rust/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@vercel/rust/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vercel/rust/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@vercel/rust/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/@vercel/static-build": { + "version": "2.8.15", + "resolved": "https://registry.npmjs.org/@vercel/static-build/-/static-build-2.8.15.tgz", + "integrity": "sha512-shWTVMSX71TuPIoNlVjJPCFAqSteLtSsa7g8lY4AJ+cpAnhXeAJVUxCWzVVYN47GCyEB911JNOz4hvewv89ykg==", + "license": "Apache-2.0", + "dependencies": { + "@vercel/gatsby-plugin-vercel-analytics": "1.0.11", + "@vercel/gatsby-plugin-vercel-builder": "2.0.114", + "@vercel/static-config": "3.1.2", + "ts-morph": "12.0.0" + } + }, + "node_modules/@vercel/static-config": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vercel/static-config/-/static-config-3.1.2.tgz", + "integrity": "sha512-2d+TXr6K30w86a+WbMbGm2W91O0UzO5VeemZYBBUJbCjk/5FLLGIi8aV6RS2+WmaRvtcqNTn2pUA7nCOK3bGcQ==", + "license": "Apache-2.0", + "dependencies": { + "ajv": "8.6.3", + "json-schema-to-ts": "1.6.4", + "ts-morph": "12.0.0" + } + }, + "node_modules/@vercel/static-config/node_modules/ajv": { + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", + "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@vercel/static-config/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, "node_modules/@vite-pwa/astro": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@vite-pwa/astro/-/astro-1.2.0.tgz", @@ -9726,8 +12430,7 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/@webcomponents/template-shadowroot/-/template-shadowroot-0.2.1.tgz", "integrity": "sha512-fXL/vIUakyZL62hyvUh+EMwbVoTc0hksublmRz6ai6et8znHkJa6gtqMUZo1oc7dIz46exHSIImml9QTdknMHg==", - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/@webgpu/types": { "version": "0.1.21", @@ -9735,6 +12438,15 @@ "integrity": "sha512-pUrWq3V5PiSGFLeLxoGqReTZmiiXwY3jRkIG5sLLKjyqNxrwm/04b4nw7LSmGWJcKk59XOM/YRTUwOzo4MMlow==", "license": "BSD-3-Clause" }, + "node_modules/@xmldom/xmldom": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.8.tgz", + "integrity": "sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==", + "license": "MIT", + "engines": { + "node": ">=14.6" + } + }, "node_modules/abbrev": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz", @@ -9761,7 +12473,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -9787,6 +12498,18 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -9819,6 +12542,7 @@ "version": "11.0.1", "resolved": "https://registry.npmjs.org/alex/-/alex-11.0.1.tgz", "integrity": "sha512-rKLBZxD/lvuykdC6XB8ma9YjDl46j9ayHROZUtC1yJ2jlGpoP7RZR1tBBSjtlr260ixIW6iCkqAnHzmti5Q6CQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -9854,6 +12578,7 @@ "version": "2.3.10", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -9863,6 +12588,7 @@ "version": "3.0.15", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -9872,6 +12598,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-1.0.4.tgz", "integrity": "sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -9881,12 +12608,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/alex/node_modules/escape-string-regexp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -9899,6 +12628,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==", + "dev": true, "license": "MIT", "funding": { "type": "opencollective", @@ -9909,6 +12639,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.1.tgz", "integrity": "sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==", + "dev": true, "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", @@ -9923,6 +12654,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz", "integrity": "sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", @@ -9942,6 +12674,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz", "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^2.0.0" @@ -9955,6 +12688,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz", "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", @@ -9972,6 +12706,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -9984,6 +12719,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.2.tgz", "integrity": "sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -10000,6 +12736,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -10024,6 +12761,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.2.tgz", "integrity": "sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==", + "dev": true, "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^1.0.0", @@ -10043,6 +12781,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.3.tgz", "integrity": "sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -10059,6 +12798,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.2.tgz", "integrity": "sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -10074,6 +12814,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.3.tgz", "integrity": "sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -10088,6 +12829,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.7.tgz", "integrity": "sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -10104,6 +12846,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.2.tgz", "integrity": "sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -10118,6 +12861,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.1.tgz", "integrity": "sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==", + "dev": true, "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^1.0.0", @@ -10135,6 +12879,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.2.tgz", "integrity": "sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==", + "dev": true, "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", @@ -10152,6 +12897,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.4.tgz", "integrity": "sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==", + "dev": true, "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", @@ -10176,6 +12922,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.1.tgz", "integrity": "sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==", + "dev": true, "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", @@ -10193,6 +12940,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -10207,6 +12955,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -10227,6 +12976,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0" @@ -10240,6 +12990,7 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/meow/-/meow-11.0.0.tgz", "integrity": "sha512-Cl0yeeIrko6d94KpUo1M+0X1sB14ikoaqlIGuTH1fW4I+E3+YljL54/hb/BWmVfrV9tTV9zU04+xjw08Fh2WkA==", + "dev": true, "license": "MIT", "dependencies": { "@types/minimist": "^1.2.2", @@ -10266,6 +13017,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10301,6 +13053,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10335,6 +13088,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.3.tgz", "integrity": "sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==", + "dev": true, "license": "MIT", "dependencies": { "micromark-extension-gfm-autolink-literal": "^1.0.0", @@ -10355,6 +13109,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.5.tgz", "integrity": "sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==", + "dev": true, "license": "MIT", "dependencies": { "micromark-util-character": "^1.0.0", @@ -10371,6 +13126,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.1.2.tgz", "integrity": "sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==", + "dev": true, "license": "MIT", "dependencies": { "micromark-core-commonmark": "^1.0.0", @@ -10391,6 +13147,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.7.tgz", "integrity": "sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==", + "dev": true, "license": "MIT", "dependencies": { "micromark-util-chunked": "^1.0.0", @@ -10409,6 +13166,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.7.tgz", "integrity": "sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==", + "dev": true, "license": "MIT", "dependencies": { "micromark-factory-space": "^1.0.0", @@ -10426,6 +13184,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.2.tgz", "integrity": "sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==", + "dev": true, "license": "MIT", "dependencies": { "micromark-util-types": "^1.0.0" @@ -10439,6 +13198,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.5.tgz", "integrity": "sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==", + "dev": true, "license": "MIT", "dependencies": { "micromark-factory-space": "^1.0.0", @@ -10456,6 +13216,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.8.tgz", "integrity": "sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10482,6 +13243,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.5.tgz", "integrity": "sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==", + "dev": true, "license": "MIT", "dependencies": { "@types/acorn": "^4.0.0", @@ -10504,6 +13266,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.1.tgz", "integrity": "sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==", + "dev": true, "license": "MIT", "dependencies": { "micromark-util-types": "^1.0.0" @@ -10517,6 +13280,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.1.tgz", "integrity": "sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==", + "dev": true, "license": "MIT", "dependencies": { "acorn": "^8.0.0", @@ -10537,6 +13301,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.5.tgz", "integrity": "sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==", + "dev": true, "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", @@ -10558,6 +13323,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10579,6 +13345,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10601,6 +13368,7 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.9.tgz", "integrity": "sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10627,6 +13395,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10647,6 +13416,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10669,6 +13439,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10691,6 +13462,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10711,6 +13483,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10730,6 +13503,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10751,6 +13525,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10771,6 +13546,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10790,6 +13566,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10812,6 +13589,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10828,6 +13606,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.2.3.tgz", "integrity": "sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10854,6 +13633,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10870,6 +13650,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10889,6 +13670,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10908,6 +13690,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10929,6 +13712,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10951,6 +13735,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10967,6 +13752,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -10983,12 +13769,14 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true, "license": "MIT" }, "node_modules/alex/node_modules/property-information": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -10999,6 +13787,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", + "dev": true, "license": "MIT", "dependencies": { "indent-string": "^5.0.0", @@ -11015,6 +13804,7 @@ "version": "8.0.5", "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-8.0.5.tgz", "integrity": "sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", @@ -11031,6 +13821,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz", "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -11047,6 +13838,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.0.0.tgz", "integrity": "sha512-TDnjSv77Oynf+K1deGWZPKSwh3/9hykVAxVm9enAw6BmicCGklREET8s19KYnjGsNPms0pNDJLmp+bnHDVItAQ==", + "dev": true, "license": "MIT", "dependencies": { "mdast-util-mdx": "^2.0.0", @@ -11061,6 +13853,7 @@ "version": "10.0.2", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -11076,6 +13869,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.1.1.tgz", "integrity": "sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -11088,6 +13882,7 @@ "version": "3.13.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=14.16" @@ -11100,6 +13895,7 @@ "version": "10.1.2", "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -11119,6 +13915,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -11132,6 +13929,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.2.tgz", "integrity": "sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -11145,6 +13943,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.2.tgz", "integrity": "sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -11159,6 +13958,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -11172,6 +13972,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -11187,6 +13988,7 @@ "version": "5.1.3", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -11201,6 +14003,7 @@ "version": "5.3.7", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -11217,6 +14020,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz", "integrity": "sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -11231,6 +14035,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -11304,6 +14109,21 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/ansis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.2.0.tgz", + "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==", + "license": "ISC", + "engines": { + "node": ">=14" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -11576,7 +14396,6 @@ "resolved": "https://registry.npmjs.org/astro/-/astro-5.16.6.tgz", "integrity": "sha512-6mF/YrvwwRxLTu+aMEa5pwzKUNl5ZetWbTyZCs9Um0F12HUmxUiF5UHiZPy4rifzU3gtpM3xP2DfdmkNX9eZRg==", "license": "MIT", - "peer": true, "dependencies": { "@astrojs/compiler": "^2.13.0", "@astrojs/internal-helpers": "0.7.5", @@ -12040,7 +14859,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -12088,12 +14906,27 @@ "node": ">= 0.4" } }, + "node_modules/async-listen": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/async-listen/-/async-listen-1.2.0.tgz", + "integrity": "sha512-CcEtRh/oc9Jc4uWeUwdpG/+Mb2YUHKmdaTf0gUr7Wa+bfp4xx70HOb3RuSTJMvqKNB1TkdTfjLdrcz2X4rkkZA==", + "license": "MIT" + }, "node_modules/async-lock": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.1.tgz", "integrity": "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==", "license": "MIT" }, + "node_modules/async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "license": "MIT", + "dependencies": { + "retry": "0.13.1" + } + }, "node_modules/async-sema": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz", @@ -12286,6 +15119,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "dev": true, "license": "MIT", "dependencies": { "require-from-string": "^2.0.2" @@ -12337,7 +15171,6 @@ "version": "2.12.1", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.12.1.tgz", "integrity": "sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==", - "devOptional": true, "license": "MIT" }, "node_modules/boxen": { @@ -12411,7 +15244,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.25", "caniuse-lite": "^1.0.30001754", @@ -12430,6 +15262,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/bubble-stream-error/-/bubble-stream-error-1.0.0.tgz", "integrity": "sha512-Rqf0ly5H4HGt+ki/n3m7GxoR2uIGtNqezPlOLX8Vuo13j5/tfPuVvAr84eoGF7sYm6lKdbGnT/3q8qmzuT5Y9w==", + "dev": true, "license": "MIT", "dependencies": { "once": "^1.3.3", @@ -12509,6 +15342,15 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "license": "MIT" }, + "node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/cacheable": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.2.0.tgz", @@ -12527,6 +15369,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "dev": true, "license": "MIT", "engines": { "node": ">=14.16" @@ -12536,6 +15379,7 @@ "version": "10.2.14", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/http-cache-semantics": "^4.0.2", @@ -12554,6 +15398,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -12566,6 +15411,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -12657,6 +15503,7 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-8.0.2.tgz", "integrity": "sha512-qMKdlOfsjlezMqxkUGGMaWWs17i2HoL15tM+wtx8ld4nLrUwU58TFdvyGOz/piNP842KeO8yXvggVQSdQ828NA==", + "dev": true, "license": "MIT", "dependencies": { "camelcase": "^7.0.0", @@ -12675,6 +15522,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "dev": true, "license": "MIT", "engines": { "node": ">=14.16" @@ -12687,6 +15535,7 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-6.1.2.tgz", "integrity": "sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -12699,6 +15548,7 @@ "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=12.20" @@ -12884,6 +15734,32 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/chevrotain": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", + "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/cst-dts-gen": "11.0.3", + "@chevrotain/gast": "11.0.3", + "@chevrotain/regexp-to-ast": "11.0.3", + "@chevrotain/types": "11.0.3", + "@chevrotain/utils": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/chevrotain-allstar": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", + "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", + "license": "MIT", + "dependencies": { + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "chevrotain": "^11.0.0" + } + }, "node_modules/chokidar": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", @@ -13043,6 +15919,12 @@ "node": ">=6" } }, + "node_modules/code-block-writer": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-10.1.1.tgz", + "integrity": "sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==", + "license": "MIT" + }, "node_modules/collapse-white-space": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", @@ -13138,13 +16020,13 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, "license": "MIT" }, "node_modules/concat-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, "engines": [ "node >= 6.0" ], @@ -13160,6 +16042,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -13180,6 +16063,7 @@ "version": "1.1.13", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, "license": "MIT", "dependencies": { "ini": "^1.3.4", @@ -13190,6 +16074,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "dot-prop": "^6.0.1", @@ -13209,6 +16094,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, "license": "MIT", "dependencies": { "type-fest": "^1.0.1" @@ -13224,12 +16110,14 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, "license": "ISC" }, "node_modules/configstore/node_modules/type-fest": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -13242,6 +16130,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, "license": "MIT", "dependencies": { "crypto-random-string": "^4.0.0" @@ -13257,6 +16146,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -13281,6 +16171,24 @@ "node": "^14.18.0 || >=16.10.0" } }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-hrtime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-3.0.0.tgz", + "integrity": "sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -13321,6 +16229,15 @@ "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "license": "MIT" }, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "license": "MIT", + "dependencies": { + "layout-base": "^1.0.0" + } + }, "node_modules/cosmiconfig": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", @@ -13360,6 +16277,12 @@ "node": ">=0.8" } }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "license": "MIT" + }, "node_modules/cross-env": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz", @@ -13476,6 +16399,7 @@ "version": "5.3.4", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.4.tgz", "integrity": "sha512-KyOS/kJMEq5O9GdPnaf82noigg5X5DYn0kZPJTaAsCUaBizp6Xa1y9D4Qoqf/JazEXWuruErHgVXwjN5391ZJw==", + "dev": true, "license": "MIT", "dependencies": { "@asamuzakjp/css-color": "^4.1.0", @@ -13490,6 +16414,7 @@ "version": "1.0.14", "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.14.tgz", "integrity": "sha512-zSlIxa20WvMojjpCSy8WrNpcZ61RqfTfX3XTaOeVlGJrt/8HF3YbzgFZa01yTbT4GWQLwfTcC3EB8i3XnB647Q==", + "dev": true, "funding": [ { "type": "github", @@ -13518,12 +16443,512 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/cuss/-/cuss-2.2.0.tgz", "integrity": "sha512-3hlHOhMiZ6YdHY5LPUhfxlx1Pj14eGttv2l9ADB1Lkv7e/us5XD798wrVLJ9DHmDO8SzCDuA+ItByFZ3M1dIYg==", + "dev": true, "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/cytoscape": { + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz", + "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "license": "MIT", + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", + "license": "MIT" + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "license": "BSD-3-Clause" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC" + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dagre-d3-es": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.13.tgz", + "integrity": "sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==", + "license": "MIT", + "dependencies": { + "d3": "^7.9.0", + "lodash-es": "^4.17.21" + } + }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", @@ -13556,6 +16981,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-6.0.0.tgz", "integrity": "sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==", + "dev": true, "license": "MIT", "dependencies": { "whatwg-mimetype": "^4.0.0", @@ -13569,6 +16995,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz", "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==", + "dev": true, "license": "MIT", "dependencies": { "punycode": "^2.3.1" @@ -13581,6 +17008,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.0.tgz", "integrity": "sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=20" @@ -13590,6 +17018,7 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-15.1.0.tgz", "integrity": "sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==", + "dev": true, "license": "MIT", "dependencies": { "tr46": "^6.0.0", @@ -13650,6 +17079,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/dayjs": { + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "license": "MIT" + }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -13671,6 +17106,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.1.tgz", "integrity": "sha512-G7Cqgaelq68XHJNGlZ7lrNQyhZGsFqpwtGFexqUv4IQdjKoSYF7ipZ9UuTJZUSQXFj/XaoBLuEVIVqr8EJngEQ==", + "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -13683,6 +17119,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, "license": "MIT", "dependencies": { "decamelize": "^1.1.0", @@ -13699,6 +17136,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -13708,6 +17146,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -13717,6 +17156,7 @@ "version": "10.6.0", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "dev": true, "license": "MIT" }, "node_modules/decode-named-character-reference": { @@ -13748,9 +17188,9 @@ } }, "node_modules/dedent": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz", - "integrity": "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", + "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", "dev": true, "license": "MIT", "peerDependencies": { @@ -13805,6 +17245,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, "license": "MIT", "engines": { "node": ">=4.0.0" @@ -13830,6 +17271,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -13875,6 +17317,15 @@ "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", "license": "MIT" }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -13884,6 +17335,15 @@ "node": ">=0.4.0" } }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -14055,6 +17515,15 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, + "node_modules/dompurify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz", + "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, "node_modules/domutils": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", @@ -14073,6 +17542,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dev": true, "license": "MIT", "dependencies": { "is-obj": "^2.0.0" @@ -14088,6 +17558,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14308,6 +17779,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true, "license": "MIT" }, "node_modules/eastasianwidth": { @@ -14326,6 +17798,56 @@ "safer-buffer": "^2.1.0" } }, + "node_modules/edge-runtime": { + "version": "2.5.9", + "resolved": "https://registry.npmjs.org/edge-runtime/-/edge-runtime-2.5.9.tgz", + "integrity": "sha512-pk+k0oK0PVXdlT4oRp4lwh+unuKB7Ng4iZ2HB+EZ7QCEQizX360Rp/F4aRpgpRgdP2ufB35N+1KppHmYjqIGSg==", + "license": "MPL-2.0", + "dependencies": { + "@edge-runtime/format": "2.2.1", + "@edge-runtime/ponyfill": "2.4.2", + "@edge-runtime/vm": "3.2.0", + "async-listen": "3.0.1", + "mri": "1.2.0", + "picocolors": "1.0.0", + "pretty-ms": "7.0.1", + "signal-exit": "4.0.2", + "time-span": "4.0.0" + }, + "bin": { + "edge-runtime": "dist/cli/index.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/edge-runtime/node_modules/async-listen": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/async-listen/-/async-listen-3.0.1.tgz", + "integrity": "sha512-cWMaNwUJnf37C/S5TfCkk/15MwbPRwVYALA2jtjkbHjCmAPiDXyNJy2q3p1KAZzDLHAWyarUWSujUoHR4pEgrA==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/edge-runtime/node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "license": "ISC" + }, + "node_modules/edge-runtime/node_modules/signal-exit": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/ejs": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", @@ -14359,8 +17881,7 @@ "version": "8.6.0", "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz", "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/embla-carousel-autoplay": { "version": "8.6.0", @@ -14470,6 +17991,7 @@ "version": "1.3.4", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" @@ -14724,6 +18246,326 @@ "@esbuild/win32-x64": "0.25.12" } }, + "node_modules/esbuild-android-64": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.47.tgz", + "integrity": "sha512-R13Bd9+tqLVFndncMHssZrPWe6/0Kpv2/dt4aA69soX4PRxlzsVpCvoJeFE8sOEoeVEiBkI0myjlkDodXlHa0g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.47.tgz", + "integrity": "sha512-OkwOjj7ts4lBp/TL6hdd8HftIzOy/pdtbrNA4+0oVWgGG64HrdVzAF5gxtJufAPOsEjkyh1oIYvKAUinKKQRSQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.47.tgz", + "integrity": "sha512-R6oaW0y5/u6Eccti/TS6c/2c1xYTb1izwK3gajJwi4vIfNs1s8B1dQzI1UiC9T61YovOQVuePDcfqHLT3mUZJA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.47.tgz", + "integrity": "sha512-seCmearlQyvdvM/noz1L9+qblC5vcBrhUaOoLEDDoLInF/VQ9IkobGiLlyTPYP5dW1YD4LXhtBgOyevoIHGGnw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.47.tgz", + "integrity": "sha512-ZH8K2Q8/Ux5kXXvQMDsJcxvkIwut69KVrYQhza/ptkW50DC089bCVrJZZ3sKzIoOx+YPTrmsZvqeZERjyYrlvQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.47.tgz", + "integrity": "sha512-ZJMQAJQsIOhn3XTm7MPQfCzEu5b9STNC+s90zMWe2afy9EwnHV7Ov7ohEMv2lyWlc2pjqLW8QJnz2r0KZmeAEQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.47.tgz", + "integrity": "sha512-FxZOCKoEDPRYvq300lsWCTv1kcHgiiZfNrPtEhFAiqD7QZaXrad8LxyJ8fXGcWzIFzRiYZVtB3ttvITBvAFhKw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.47.tgz", + "integrity": "sha512-nFNOk9vWVfvWYF9YNYksZptgQAdstnDCMtR6m42l5Wfugbzu11VpMCY9XrD4yFxvPo9zmzcoUL/88y0lfJZJJw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.47.tgz", + "integrity": "sha512-ZGE1Bqg/gPRXrBpgpvH81tQHpiaGxa8c9Rx/XOylkIl2ypLuOcawXEAo8ls+5DFCcRGt/o3sV+PzpAFZobOsmA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.47.tgz", + "integrity": "sha512-ywfme6HVrhWcevzmsufjd4iT3PxTfCX9HOdxA7Hd+/ZM23Y9nXeb+vG6AyA6jgq/JovkcqRHcL9XwRNpWG6XRw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.47.tgz", + "integrity": "sha512-mg3D8YndZ1LvUiEdDYR3OsmeyAew4MA/dvaEJxvyygahWmpv1SlEEnhEZlhPokjsUMfRagzsEF/d/2XF+kTQGg==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.47.tgz", + "integrity": "sha512-WER+f3+szmnZiWoK6AsrTKGoJoErG2LlauSmk73LEZFQ/iWC+KhhDsOkn1xBUpzXWsxN9THmQFltLoaFEH8F8w==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.47.tgz", + "integrity": "sha512-1fI6bP3A3rvI9BsaaXbMoaOjLE3lVkJtLxsgLHqlBhLlBVY7UqffWBvkrX/9zfPhhVMd9ZRFiaqXnB1T7BsL2g==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.47.tgz", + "integrity": "sha512-eZrWzy0xFAhki1CWRGnhsHVz7IlSKX6yT2tj2Eg8lhAwlRE5E96Hsb0M1mPSE1dHGpt1QVwwVivXIAacF/G6mw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.47.tgz", + "integrity": "sha512-Qjdjr+KQQVH5Q2Q1r6HBYswFTToPpss3gqCiSw2Fpq/ua8+eXSQyAMG+UvULPqXceOwpnPo4smyZyHdlkcPppQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.47.tgz", + "integrity": "sha512-QpgN8ofL7B9z8g5zZqJE+eFvD1LehRlxr25PBkjyyasakm4599iroUpaj96rdqRlO2ShuyqwJdr+oNqWwTUmQw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.47.tgz", + "integrity": "sha512-uOeSgLUwukLioAJOiGYm3kNl+1wJjgJA8R671GYgcPgCx7QR73zfvYqXFFcIO93/nBdIbt5hd8RItqbbf3HtAQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.47.tgz", + "integrity": "sha512-H0fWsLTp2WBfKLBgwYT4OTfFly4Im/8B5f3ojDv1Kx//kiubVY0IQunP2Koc/fr/0wI7hj3IiBDbSrmKlrNgLQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.47.tgz", + "integrity": "sha512-/Pk5jIEH34T68r8PweKRi77W49KwanZ8X6lr3vDAtOlH5EumPE4pBHqkCUdELanvsT14yMXLQ/C/8XPi1pAtkQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.47", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.47.tgz", + "integrity": "sha512-HFSW2lnp62fl86/qPQlqw6asIwCnEsEoNIL1h2uVMgakddf+vUuMcCbtUY1i8sst7KkgHrVKCJQB33YhhOweCQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -14737,6 +18579,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -14763,7 +18606,6 @@ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -15016,7 +18858,6 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -15325,6 +19166,15 @@ "node": "*" } }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/espree": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", @@ -15492,10 +19342,20 @@ "node": ">=0.10.0" } }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/event-stream": { "version": "3.1.7", "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.1.7.tgz", "integrity": "sha512-ddACn1VEffD+nvbofs8gs/0qJZC9gtEGLG+WykE//rinSpYLSaTsnN96eVQV+gHdUhV/nVtxUNKC3OjrApuEMw==", + "dev": true, "dependencies": { "duplexer": "~0.1.1", "from": "~0", @@ -15530,6 +19390,39 @@ "node": ">=0.8.x" } }, + "node_modules/events-intercept": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/events-intercept/-/events-intercept-2.0.0.tgz", + "integrity": "sha512-blk1va0zol9QOrdZt0rFXo5KMkNPVSp92Eju/Qz8THwKWKRKeE0T8Br/1aW6+Edkyq9xHYgYxn2QtOnUKPUp+Q==", + "license": "MIT" + }, + "node_modules/execa": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.2.0.tgz", + "integrity": "sha512-kJJfVbI/lZE1PZYDI5VPxp8zXPO9rtxOkhpZ0jMKha56AI9y2gGVC6bkukStQf0ka5Rh15BA5m7cCCH4jmHqkw==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": "^8.12.0 || >=9.7.0" + } + }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, "node_modules/exif-parser": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", @@ -15696,6 +19589,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "dev": true, "license": "MIT", "dependencies": { "format": "^0.2.0" @@ -15960,6 +19854,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 14.17" @@ -15969,6 +19864,7 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "dev": true, "engines": { "node": ">=0.4.x" } @@ -15995,6 +19891,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", + "dev": true, "license": "MIT" }, "node_modules/fs-extra": { @@ -16115,6 +20012,15 @@ "node": ">= 0.4" } }, + "node_modules/generic-pool": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.4.2.tgz", + "integrity": "sha512-H7cUpwCQSiJmAHM4c/aFu6fUfrhWXW1ncyh8ftxEPMu6AiYkHw9K8br720TGPZJbk5eOH2bynjZD1yPvdDAmag==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -16224,7 +20130,6 @@ "version": "4.13.0", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", - "dev": true, "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -16246,6 +20151,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/git-diff-tree/-/git-diff-tree-1.1.0.tgz", "integrity": "sha512-PdNkH2snpXsKIzho6OWMZKEl+KZG6Zm+1ghQIDi0tEq1sz/S1tDjvNuYrX2ZpomalHAB89OUQim8O6vN+jesNQ==", + "dev": true, "license": "MIT", "dependencies": { "git-spawned-stream": "1.0.1", @@ -16258,6 +20164,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/git-spawned-stream/-/git-spawned-stream-1.0.1.tgz", "integrity": "sha512-W2Zo3sCiq5Hqv1/FLsNmGomkXdyimmkHncGzqjBHh7nWx+CbH5dkWGb6CiFdknooL7wfeZJ3gz14KrXl/gotCw==", + "dev": true, "license": "MIT", "dependencies": { "debug": "^4.1.0", @@ -16330,6 +20237,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, "license": "MIT", "dependencies": { "ini": "2.0.0" @@ -16345,6 +20253,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, "license": "ISC", "engines": { "node": ">=10" @@ -16463,6 +20372,7 @@ "version": "12.6.1", "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dev": true, "license": "MIT", "dependencies": { "@sindresorhus/is": "^5.2.0", @@ -16488,6 +20398,7 @@ "version": "5.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "dev": true, "license": "MIT", "engines": { "node": ">=14.16" @@ -16500,6 +20411,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -16537,6 +20449,12 @@ "uncrypto": "^0.1.3" } }, + "node_modules/hachure-fill": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", + "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", + "license": "MIT" + }, "node_modules/happy-dom": { "version": "20.0.11", "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-20.0.11.tgz", @@ -16606,6 +20524,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -16691,6 +20610,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", + "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -16728,6 +20648,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-2.0.1.tgz", "integrity": "sha512-QUdSOP1/o+/TxXtpPFXR2mUg2P+ySrmlX7QjwHZCXqMFyYk7YmcGSvqRW+4XgXAoHifdE1t2PwFaQK33TqVjSw==", + "dev": true, "license": "MIT", "dependencies": { "hast-util-is-element": "^2.0.0" @@ -16741,6 +20662,7 @@ "version": "2.3.10", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -16750,12 +20672,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/hast-util-embedded/node_modules/hast-util-is-element": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.3.tgz", "integrity": "sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", @@ -16766,6 +20690,21 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-from-dom": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.1.tgz", + "integrity": "sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==", + "license": "ISC", + "dependencies": { + "@types/hast": "^3.0.0", + "hastscript": "^9.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-from-html": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", @@ -16784,6 +20723,22 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-from-html-isomorphic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-2.0.0.tgz", + "integrity": "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-dom": "^5.0.0", + "hast-util-from-html": "^2.0.0", + "unist-util-remove-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-from-parse5": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", @@ -16808,6 +20763,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-2.0.1.tgz", "integrity": "sha512-X2+RwZIMTMKpXUzlotatPzWj8bspCymtXH3cfG3iQKV+wPF53Vgaqxi/eLqGck0wKq1kS9nvoB1wchbCPEL8sg==", + "dev": true, "license": "MIT", "funding": { "type": "opencollective", @@ -16831,6 +20787,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-2.0.0.tgz", "integrity": "sha512-S58hCexyKdD31vMsErvgLfflW6vYWo/ixRLPJTtkOvLld24vyI8vmYmkgLA5LG3la2ME7nm7dLGdm48gfLRBfw==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", @@ -16846,6 +20803,7 @@ "version": "2.3.10", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -16855,12 +20813,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/hast-util-is-body-ok-link/node_modules/hast-util-is-element": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.3.tgz", "integrity": "sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", @@ -16901,6 +20861,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-2.0.2.tgz", "integrity": "sha512-yGkCfPkkfCyiLfK6KEl/orMDr/zgCnq/NaO9HfULx6/Zga5fso5eqQA5Ov/JZVqACygvw9shRYWgXNcG2ilo7w==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", @@ -16918,6 +20879,7 @@ "version": "2.3.10", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -16927,12 +20889,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/hast-util-phrasing/node_modules/hast-util-is-element": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.3.tgz", "integrity": "sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", @@ -16972,7 +20936,6 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-5.0.2.tgz", "integrity": "sha512-3yTWghByc50aGS7JlGhk61SPenfE/p1oaFeNwkOOyrscaOkMGrcW9+Cy/QAIOBpZxP1yqDIzFMR0+Np0i0+usg==", - "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -17066,6 +21029,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/hast-util-to-nlcst/-/hast-util-to-nlcst-2.2.0.tgz", "integrity": "sha512-BFBvuoEo9yCHklUSCz6+JG/FAkr+qCVaW1bE0/Y8+SBhuaz7s+suHDpkyQxH7FF2kqctYRhquLRCcmn+PS0IUQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", @@ -17090,6 +21054,7 @@ "version": "2.3.10", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -17099,6 +21064,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-1.0.4.tgz", "integrity": "sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -17108,12 +21074,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/hast-util-to-nlcst/node_modules/hast-util-is-element": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.3.tgz", "integrity": "sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", @@ -17128,6 +21096,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-2.0.0.tgz", "integrity": "sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^2.0.0" @@ -17141,6 +21110,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", + "dev": true, "license": "MIT", "funding": { "type": "opencollective", @@ -17151,6 +21121,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-3.1.1.tgz", "integrity": "sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==", + "dev": true, "license": "MIT", "dependencies": { "@types/nlcst": "^1.0.0" @@ -17164,6 +21135,7 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -17177,6 +21149,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -17190,6 +21163,7 @@ "version": "5.3.7", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -17206,6 +21180,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz", "integrity": "sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -17220,6 +21195,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -17263,7 +21239,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", - "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" @@ -17339,6 +21314,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" @@ -17351,6 +21327,7 @@ "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -17360,7 +21337,6 @@ "version": "3.5.0", "resolved": "https://registry.npmjs.org/html-element-attributes/-/html-element-attributes-3.5.0.tgz", "integrity": "sha512-rU2BFhp0kQla9sqPBI46C+zbP6PFOtD7z6XNAJ6as+cGecCDXLx0W3aIs6XdPLmBBG/Fy1meRi/n65Exofz4Qw==", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -17371,6 +21347,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "dev": true, "license": "MIT", "dependencies": { "whatwg-encoding": "^3.1.1" @@ -17450,10 +21427,30 @@ "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", "license": "BSD-2-Clause" }, + "node_modules/http-errors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.4.0.tgz", + "integrity": "sha512-oLjPqve1tuOl5aRhv8GK5eHpqP1C9fb+Ol+XTLjKfLltE44zdDbEdjPSbU7Ch5rSNsVFqZn97SrMmZLdu1/YMw==", + "license": "MIT", + "dependencies": { + "inherits": "2.0.1", + "statuses": ">= 1.2.1 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", + "license": "ISC" + }, "node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, "license": "MIT", "dependencies": { "agent-base": "^7.1.0", @@ -17467,6 +21464,7 @@ "version": "7.1.4", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 14" @@ -17491,6 +21489,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "dev": true, "license": "MIT", "dependencies": { "quick-lru": "^5.1.1", @@ -17513,6 +21512,15 @@ "node": ">= 6" } }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "license": "Apache-2.0", + "engines": { + "node": ">=8.12.0" + } + }, "node_modules/husky": { "version": "9.1.7", "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", @@ -17631,6 +21639,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -17650,6 +21659,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.8.19" @@ -17670,6 +21680,7 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -17686,6 +21697,7 @@ "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, "license": "ISC" }, "node_modules/inline-style-parser": { @@ -17708,6 +21720,15 @@ "node": ">= 0.4" } }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/ip-regex": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz", @@ -17800,6 +21821,7 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, "license": "MIT" }, "node_modules/is-async-function": { @@ -17926,6 +21948,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, "license": "MIT", "dependencies": { "ci-info": "^3.2.0" @@ -17938,6 +21961,7 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, "funding": [ { "type": "github", @@ -18026,6 +22050,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz", "integrity": "sha512-F2FnH/otLNJv0J6wc73A5Xo7oHLNnqplYqZhUu01tD54DIPvxIRSTSLkrUB/M0nHO4vo1O9PDfN4KoTxCzLh/w==", + "dev": true, "license": "MIT" }, "node_modules/is-extglob": { @@ -18130,6 +22155,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, "license": "MIT", "dependencies": { "global-dirs": "^3.0.0", @@ -18172,10 +22198,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", + "license": "MIT" + }, "node_modules/is-npm": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.1.0.tgz", "integrity": "sha512-O2z4/kNgyjhQwVR1Wpkbfc19JIhggF97NZNCpWTnjH7kVcZMUrnut9XSN7txI7VdyIYk5ZatOq3zvSuWpU8hoA==", + "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -18222,6 +22255,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -18252,6 +22286,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, "license": "MIT" }, "node_modules/is-regex": { @@ -18421,7 +22456,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-2.0.1.tgz", "integrity": "sha512-gkZdE/Vz5z7fnE03FRp4BUdLAqycmm7Yd36vsyvEX8YmBYtAiCVwEnKNg5BxXBfpJ3aK6RmokQD6RNBN9smXiA==", - "dev": true, "license": "MIT", "funding": { "type": "github", @@ -18447,6 +22481,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -18641,11 +22676,19 @@ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "license": "MIT", - "peer": true, "bin": { "jiti": "lib/jiti-cli.mjs" } }, + "node_modules/jose": { + "version": "5.9.6", + "resolved": "https://registry.npmjs.org/jose/-/jose-5.9.6.tgz", + "integrity": "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, "node_modules/jpeg-js": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.1.2.tgz", @@ -18705,6 +22748,7 @@ "version": "27.3.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.3.0.tgz", "integrity": "sha512-GtldT42B8+jefDUC4yUKAvsaOrH7PDHmZxZXNgF2xMmymjUbRYJvpAybZAKEmXDGTM0mCsz8duOa4vTm5AY2Kg==", + "dev": true, "license": "MIT", "dependencies": { "@acemir/cssom": "^0.9.28", @@ -18744,6 +22788,7 @@ "version": "7.1.4", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 14" @@ -18753,6 +22798,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -18765,6 +22811,7 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, "license": "MIT", "dependencies": { "agent-base": "^7.1.2", @@ -18778,6 +22825,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.0.tgz", "integrity": "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==", + "dev": true, "license": "MIT", "dependencies": { "entities": "^6.0.0" @@ -18790,6 +22838,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.0.tgz", "integrity": "sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "tldts": "^7.0.5" @@ -18802,6 +22851,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz", "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==", + "dev": true, "license": "MIT", "dependencies": { "punycode": "^2.3.1" @@ -18814,6 +22864,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.0.tgz", "integrity": "sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=20" @@ -18823,6 +22874,7 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-15.1.0.tgz", "integrity": "sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==", + "dev": true, "license": "MIT", "dependencies": { "tr46": "^6.0.0", @@ -18848,12 +22900,14 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, "license": "MIT" }, "node_modules/json-schema": { @@ -18862,6 +22916,16 @@ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "license": "(AFL-2.1 OR BSD-3-Clause)" }, + "node_modules/json-schema-to-ts": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/json-schema-to-ts/-/json-schema-to-ts-1.6.4.tgz", + "integrity": "sha512-pR4yQ9DHz6itqswtHCm26mw45FSNfQ9rEQjosaZErhn5J3J2sIViQiz8rDaezjKAhFGpmsoczYVBgGHzFw/stA==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.6", + "ts-toolbelt": "^6.15.5" + } + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -18951,19 +23015,51 @@ "node": ">=4.0" } }, + "node_modules/katex": { + "version": "0.16.27", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.27.tgz", + "integrity": "sha512-aeQoDkuRWSqQN6nSvVCEFvfXdqo1OQiCmmW1kc9xSdjutPv7BGO7pqY9sQRJpMOGrEdfDgF2TfRXe5eUAD2Waw==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } }, + "node_modules/khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -18991,6 +23087,28 @@ "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", "license": "MIT" }, + "node_modules/langium": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/langium/-/langium-3.3.1.tgz", + "integrity": "sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==", + "license": "MIT", + "dependencies": { + "chevrotain": "~11.0.3", + "chevrotain-allstar": "~0.3.0", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.11", + "vscode-uri": "~3.0.8" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/langium/node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "license": "MIT" + }, "node_modules/language-subtag-registry": { "version": "0.3.23", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", @@ -19015,6 +23133,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", + "dev": true, "license": "MIT", "dependencies": { "package-json": "^8.1.0" @@ -19026,6 +23145,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "license": "MIT" + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -19101,7 +23226,6 @@ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", "license": "MPL-2.0", - "peer": true, "dependencies": { "detect-libc": "^2.0.3" }, @@ -19350,6 +23474,7 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/limit-spawn/-/limit-spawn-0.0.3.tgz", "integrity": "sha512-2vJ6FDCit0ohq77qdbIdk5JqGs/98W1fGEgozoAMq/oybKPdgLuB8bHH/wWgvCdQzEJpm6Sxh0abG/PtxFr7XA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8.0" @@ -19359,14 +23484,24 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, "license": "MIT" }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, "node_modules/lit": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.1.tgz", "integrity": "sha512-Ksr/8L3PTapbdXJCk+EJVB78jDodUMaP54gD24W186zGRARvwrsPfS60wae/SSCTCNZVPd1chXqio1qHQmu4NA==", "license": "BSD-3-Clause", - "peer": true, "dependencies": { "@lit/reactive-element": "^2.1.0", "lit-element": "^4.2.0", @@ -19413,6 +23548,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-5.1.0.tgz", "integrity": "sha512-Lg1CZa1CFj2CbNaxijTL6PCbzd4qGTlZov+iH2p5Xwy/ApcZJh+i6jMN2cYePouTfjJfrNu3nXFdEw8LvbjPFQ==", + "dev": true, "license": "MIT", "dependencies": { "@npmcli/config": "^6.0.0", @@ -19427,6 +23563,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.2.tgz", "integrity": "sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -19474,7 +23611,6 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "dev": true, "license": "MIT" }, "node_modules/lodash.debounce": { @@ -19517,6 +23653,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -19596,10 +23733,17 @@ "node": ">=10" } }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "license": "ISC" + }, "node_modules/map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -19611,7 +23755,8 @@ "node_modules/map-stream": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==" + "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==", + "dev": true }, "node_modules/markdown-extensions": { "version": "2.0.0", @@ -19625,6 +23770,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, "node_modules/markdown-table": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", @@ -19635,6 +23798,161 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/markdownlint": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.40.0.tgz", + "integrity": "sha512-UKybllYNheWac61Ia7T6fzuQNDZimFIpCg2w6hHjgV1Qu0w1TV0LlSgryUGzM0bkKQCBhy2FDhEELB73Kb0kAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark": "4.0.2", + "micromark-core-commonmark": "2.0.3", + "micromark-extension-directive": "4.0.0", + "micromark-extension-gfm-autolink-literal": "2.1.0", + "micromark-extension-gfm-footnote": "2.1.0", + "micromark-extension-gfm-table": "2.1.1", + "micromark-extension-math": "3.1.0", + "micromark-util-types": "2.0.2", + "string-width": "8.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + } + }, + "node_modules/markdownlint-cli2": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.20.0.tgz", + "integrity": "sha512-esPk+8Qvx/f0bzI7YelUeZp+jCtFOk3KjZ7s9iBQZ6HlymSXoTtWGiIRZP05/9Oy2ehIoIjenVwndxGtxOIJYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "globby": "15.0.0", + "js-yaml": "4.1.1", + "jsonc-parser": "3.3.1", + "markdown-it": "14.1.0", + "markdownlint": "0.40.0", + "markdownlint-cli2-formatter-default": "0.0.6", + "micromatch": "4.0.8" + }, + "bin": { + "markdownlint-cli2": "markdownlint-cli2-bin.mjs" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + } + }, + "node_modules/markdownlint-cli2-formatter-default": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.6.tgz", + "integrity": "sha512-VVDGKsq9sgzu378swJ0fcHfSicUnMxnL8gnLm/Q4J/xsNJ4e5bA6lvAz7PCzIl0/No0lHyaWdqVD2jotxOSFMQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + }, + "peerDependencies": { + "markdownlint-cli2": ">=0.0.4" + } + }, + "node_modules/markdownlint-cli2/node_modules/globby": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-15.0.0.tgz", + "integrity": "sha512-oB4vkQGqlMl682wL1IlWd02tXCbquGWM4voPEI85QmNKCaw8zGTm1f1rubFgkg3Eli2PtKlFgrnmUqasbQWlkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.5", + "path-type": "^6.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdownlint-cli2/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/markdownlint-cli2/node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/markdownlint-cli2/node_modules/path-type": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", + "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdownlint-cli2/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdownlint/node_modules/string-width": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz", + "integrity": "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.3.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/marked": { + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz", + "integrity": "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -19644,6 +23962,18 @@ "node": ">= 0.4" } }, + "node_modules/mathjax-full": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.1.tgz", + "integrity": "sha512-aUz9o16MGZdeiIBwZjAfUBTiJb7LRqzZEl1YOZ8zQMGYIyh1/nxRebxKxjDe9L+xcZCr2OHdzoFBMcd6VnLv9Q==", + "license": "Apache-2.0", + "dependencies": { + "esm": "^3.2.25", + "mhchemparser": "^4.1.0", + "mj-context-menu": "^0.6.1", + "speech-rule-engine": "^4.0.6" + } + }, "node_modules/mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", @@ -19659,13 +23989,13 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/md-attr-parser/-/md-attr-parser-1.3.0.tgz", "integrity": "sha512-KTVlfU5Oxo/6kd0YZ2mLP3eWJj+5vzh5mBCxLo3yGl1fzHIgxmtadbE9tHb7TbUBi3XZbl+P0xKeGmakat135w==", - "dev": true, "license": "MIT" }, "node_modules/mdast-comment-marker": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-2.1.2.tgz", "integrity": "sha512-HED3ezseRVkBzZ0uK4q6RJMdufr/2p3VfVZstE3H1N9K8bwtspztWo6Xd7rEatuGNoCXaBna8oEqMwUn0Ve1bw==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -19680,6 +24010,7 @@ "version": "2.3.10", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -19689,6 +24020,7 @@ "version": "3.0.15", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -19698,12 +24030,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/mdast-comment-marker/node_modules/mdast-util-from-markdown": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -19728,6 +24062,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.2.tgz", "integrity": "sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==", + "dev": true, "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", @@ -19745,6 +24080,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -19759,6 +24095,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -19779,6 +24116,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0" @@ -19792,6 +24130,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -19827,6 +24166,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -19861,6 +24201,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -19882,6 +24223,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -19904,6 +24246,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -19924,6 +24267,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -19946,6 +24290,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -19968,6 +24313,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -19988,6 +24334,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -20007,6 +24354,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -20028,6 +24376,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -20048,6 +24397,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -20067,6 +24417,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -20089,6 +24440,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -20105,6 +24457,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -20121,6 +24474,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -20140,6 +24494,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -20159,6 +24514,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -20180,6 +24536,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -20202,6 +24559,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -20218,6 +24576,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -20234,6 +24593,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -20247,6 +24607,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -20260,6 +24621,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -20275,6 +24637,7 @@ "version": "5.1.3", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -20377,6 +24740,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-1.0.1.tgz", "integrity": "sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -20392,6 +24756,7 @@ "version": "3.0.15", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -20401,12 +24766,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/mdast-util-frontmatter/node_modules/mdast-util-phrasing": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -20421,6 +24788,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -20441,6 +24809,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0" @@ -20454,6 +24823,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -20474,6 +24844,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -20493,6 +24864,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -20515,6 +24887,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -20531,6 +24904,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -20547,6 +24921,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -20560,6 +24935,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -20575,6 +24951,7 @@ "version": "5.1.3", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -20686,6 +25063,25 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-math": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-3.0.0.tgz", + "integrity": "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "longest-streak": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.1.0", + "unist-util-remove-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdast-util-mdx": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", @@ -20763,20 +25159,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-newline-to-break": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-newline-to-break/-/mdast-util-newline-to-break-2.0.0.tgz", - "integrity": "sha512-MbgeFca0hLYIEx/2zGsszCSEJJ1JSCdiY5xQxRcLDDGa8EPvlLPupJ4DSajbMPAnC0je8jfb9TiUATnxxrHUog==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-find-and-replace": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdast-util-phrasing": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", @@ -20837,6 +25219,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-5.2.1.tgz", "integrity": "sha512-Xznpj85MsJnLQjBboajOovT2fAAvbbbmYutpFgzLi9pjZEOkgGzjq+t6fHcge8uzZ5uEkj5pigzw2QrnIVq/kw==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -20856,6 +25239,7 @@ "version": "3.0.15", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -20865,6 +25249,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-1.0.4.tgz", "integrity": "sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -20874,12 +25259,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/mdast-util-to-nlcst/node_modules/nlcst-to-string": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-3.1.1.tgz", "integrity": "sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==", + "dev": true, "license": "MIT", "dependencies": { "@types/nlcst": "^1.0.0" @@ -20893,6 +25280,7 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -20906,6 +25294,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -20919,6 +25308,7 @@ "version": "5.3.7", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -20935,6 +25325,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz", "integrity": "sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -20949,6 +25340,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -20978,6 +25370,13 @@ "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", "license": "CC0-1.0" }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" + }, "node_modules/meow": { "version": "13.2.0", "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", @@ -20991,6 +25390,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -21000,6 +25405,108 @@ "node": ">= 8" } }, + "node_modules/mermaid": { + "version": "11.12.2", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.12.2.tgz", + "integrity": "sha512-n34QPDPEKmaeCG4WDMGy0OT6PSyxKCfy2pJgShP+Qow2KLrvWjclwbc3yXfSIf4BanqWEhQEpngWwNp/XhZt6w==", + "license": "MIT", + "dependencies": { + "@braintree/sanitize-url": "^7.1.1", + "@iconify/utils": "^3.0.1", + "@mermaid-js/parser": "^0.6.3", + "@types/d3": "^7.4.3", + "cytoscape": "^3.29.3", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.2.0", + "d3": "^7.9.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.13", + "dayjs": "^1.11.18", + "dompurify": "^3.2.5", + "katex": "^0.16.22", + "khroma": "^2.1.0", + "lodash-es": "^4.17.21", + "marked": "^16.2.1", + "roughjs": "^4.6.6", + "stylis": "^4.3.6", + "ts-dedent": "^2.2.0", + "uuid": "^11.1.0" + } + }, + "node_modules/mermaid-isomorphic": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/mermaid-isomorphic/-/mermaid-isomorphic-3.0.4.tgz", + "integrity": "sha512-XQTy7H1XwHK3DPEHf+ZNWiqUEd9BwX3Xws38R9Fj2gx718srmgjlZoUzHr+Tca+O+dqJOJsAJaKzCoP65QDfDg==", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-free": "^6.0.0", + "mermaid": "^11.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + }, + "peerDependencies": { + "playwright": "1" + }, + "peerDependenciesMeta": { + "playwright": { + "optional": true + } + } + }, + "node_modules/mermaid/node_modules/@iconify/utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.0.tgz", + "integrity": "sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==", + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^1.1.0", + "@iconify/types": "^2.0.0", + "mlly": "^1.8.0" + } + }, + "node_modules/mermaid/node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/mhchemparser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz", + "integrity": "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==", + "license": "Apache-2.0" + }, + "node_modules/micro": { + "version": "9.3.5-canary.3", + "resolved": "https://registry.npmjs.org/micro/-/micro-9.3.5-canary.3.tgz", + "integrity": "sha512-viYIo9PefV+w9dvoIBh1gI44Mvx1BOk67B4BpC2QK77qdY0xZF0Q+vWLt/BII6cLkIc8rLmSIcJaB/OrXXKe1g==", + "license": "MIT", + "dependencies": { + "arg": "4.1.0", + "content-type": "1.0.4", + "raw-body": "2.4.1" + }, + "bin": { + "micro": "bin/micro.js" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/micro/node_modules/arg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", + "license": "MIT" + }, "node_modules/micromark": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", @@ -21092,6 +25599,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-1.1.1.tgz", "integrity": "sha512-m2UH9a7n3W8VAH9JO9y01APpPKmNNNs71P0RbknEmYSaZU5Ghogv38BYO94AI5Xw6OYfxZRdHZZ2nYjs/Z+SZQ==", + "dev": true, "license": "MIT", "dependencies": { "fault": "^2.0.0", @@ -21108,6 +25616,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -21128,6 +25637,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -21144,6 +25654,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -21277,6 +25788,25 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/micromark-extension-math": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz", + "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==", + "license": "MIT", + "dependencies": { + "@types/katex": "^0.16.0", + "devlop": "^1.0.0", + "katex": "^0.16.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/micromark-extension-mdx-expression": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", @@ -21850,6 +26380,15 @@ "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/mimic-response": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", @@ -21915,6 +26454,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, "license": "MIT", "dependencies": { "arrify": "^1.0.1", @@ -21929,6 +26469,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -21982,6 +26523,12 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/mj-context-menu": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz", + "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==", + "license": "Apache-2.0" + }, "node_modules/mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -22078,7 +26625,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": "^20.0.0 || >=22.0.0" } @@ -22119,6 +26665,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/nlcst-is-literal/-/nlcst-is-literal-2.1.1.tgz", "integrity": "sha512-/PyEKNHN+SrcrmnZRwszzZYbvZSN2AVD506+rfMUzyFHB0PtUmqZOdUuXmQxQeZXv6o29pT5chLjQJdC9weOCQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/nlcst": "^1.0.0", @@ -22134,6 +26681,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-1.0.4.tgz", "integrity": "sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -22143,12 +26691,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/nlcst-is-literal/node_modules/nlcst-to-string": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-3.1.1.tgz", "integrity": "sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==", + "dev": true, "license": "MIT", "dependencies": { "@types/nlcst": "^1.0.0" @@ -22162,6 +26712,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/nlcst-normalize/-/nlcst-normalize-3.1.1.tgz", "integrity": "sha512-Fz6DhC0dmsuqilkz0viOScT+u9UGjgUpSrzo6yOZlcQ24F/m2BuoVF72KUOKZ06dRUeWyPpCSMxI5ONop9Qptw==", + "dev": true, "license": "MIT", "dependencies": { "@types/nlcst": "^1.0.0", @@ -22176,6 +26727,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-1.0.4.tgz", "integrity": "sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -22185,12 +26737,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/nlcst-normalize/node_modules/nlcst-to-string": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-3.1.1.tgz", "integrity": "sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==", + "dev": true, "license": "MIT", "dependencies": { "@types/nlcst": "^1.0.0" @@ -22204,6 +26758,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/nlcst-search/-/nlcst-search-3.1.1.tgz", "integrity": "sha512-0KsxSqFzSYWVDTo/SPde0RYf5LVmW1eAje8rbRJm+Lev1NzrWj2bIwtXfwGvfPbCi2ABsTV8bqmGAiF/EVqVWA==", + "dev": true, "license": "MIT", "dependencies": { "@types/nlcst": "^1.0.0", @@ -22221,6 +26776,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-1.0.4.tgz", "integrity": "sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -22230,12 +26786,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/nlcst-search/node_modules/unist-util-is": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -22249,6 +26807,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -22264,6 +26823,7 @@ "version": "5.1.3", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -22409,6 +26969,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^5.0.0", @@ -22424,6 +26985,7 @@ "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -22445,6 +27007,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.0.tgz", "integrity": "sha512-X06Mfd/5aKsRHc0O0J5CUedwnPmnDtLF2+nq+KN9KSDlJHkPuh0JUviWjEWMe0SW/9TDdSLVPuk7L5gGTIA1/w==", + "dev": true, "license": "MIT", "engines": { "node": ">=14.16" @@ -22457,11 +27020,24 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "dev": true, "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -22647,6 +27223,21 @@ "wrappy": "1" } }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/oniguruma-parser": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", @@ -22682,6 +27273,15 @@ "node": ">= 0.8.0" } }, + "node_modules/os-paths": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/os-paths/-/os-paths-4.4.0.tgz", + "integrity": "sha512-wrAwOeXp1RRMFfQY8Sy7VaGVmPocaLwSFOYCGKSyo8qmJ+/yaafCl5BCA1IQZWqFSRBrKDYFeR9d/VyQzfH/jg==", + "license": "MIT", + "engines": { + "node": ">= 6.0" + } + }, "node_modules/own-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", @@ -22703,11 +27303,21 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true, "license": "MIT", "engines": { "node": ">=12.20" } }, + "node_modules/p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/p-limit": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", @@ -22797,6 +27407,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", + "dev": true, "license": "MIT", "dependencies": { "got": "^12.1.0", @@ -22821,6 +27432,7 @@ "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -22880,6 +27492,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/parse-english/-/parse-english-5.0.0.tgz", "integrity": "sha512-sMe/JmsY6g21aJCAm8KgCH90a9zCZ7aGSriSJ5B0CcGEsDN7YmiCk3+1iKPE1heDG6zYY4Xf++V8llWtCvNBSQ==", + "dev": true, "license": "MIT", "dependencies": { "nlcst-to-string": "^2.0.0", @@ -22896,6 +27509,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-1.0.4.tgz", "integrity": "sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -22905,12 +27519,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/parse-english/node_modules/nlcst-to-string": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-2.0.4.tgz", "integrity": "sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg==", + "dev": true, "license": "MIT", "funding": { "type": "opencollective", @@ -22921,6 +27537,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-5.0.1.tgz", "integrity": "sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg==", + "dev": true, "license": "MIT", "dependencies": { "nlcst-to-string": "^3.0.0", @@ -22936,6 +27553,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-3.1.1.tgz", "integrity": "sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==", + "dev": true, "license": "MIT", "dependencies": { "@types/nlcst": "^1.0.0" @@ -22949,6 +27567,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-3.1.1.tgz", "integrity": "sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -22963,6 +27582,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-2.0.2.tgz", "integrity": "sha512-+LWpMFqyUwLGpsQxpumsQ9o9DG2VGLFrpz+rpVXYIEdPy57GSy5HioC0g3bg/8WP9oCLlapQtklOzQ8uLS496Q==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -22976,6 +27596,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-2.0.0.tgz", "integrity": "sha512-HGrj7JQo9DwZt8XFsX8UD4gGqOsIlCih9opG6Y+N11XqkBGKzHo8cvDi+MfQQgiZ7zXRUiQREYHhjOBHERTMdg==", + "dev": true, "license": "MIT", "dependencies": { "array-iterate": "^1.0.0" @@ -22989,6 +27610,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.4.tgz", "integrity": "sha512-sNRaPGh9nnmdC8Zf+pT3UqP8rnWj5Hf9wiFGsX3wUQ2yVSIhO2ShFwCoceIPpB41QF6i2OEmrHmCo36xronCVA==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -22999,6 +27621,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-1.1.4.tgz", "integrity": "sha512-sA/nXwYRCQVRwZU2/tQWUqJ9JSFM1X3x7JIOsIgSzrFHcfVt6NkzDtKzyxg2cZWkCwGF9CO8x4QNZRJRMK8FeQ==", + "dev": true, "license": "MIT", "funding": { "type": "opencollective", @@ -23050,6 +27673,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", @@ -23082,6 +27706,15 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/parse-ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", + "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/parse-png": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/parse-png/-/parse-png-1.1.2.tgz", @@ -23162,6 +27795,12 @@ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "license": "MIT" }, + "node_modules/path-data-parser": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", + "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", + "license": "MIT" + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -23180,6 +27819,32 @@ "node": ">=8" } }, + "node_modules/path-match": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/path-match/-/path-match-1.2.4.tgz", + "integrity": "sha512-UWlehEdqu36jmh4h5CWJ7tARp1OEVKGHKm6+dg9qMq5RKUTV5WJrGgaZ3dN2m7WFAXDbjlHzvJvL/IUpy84Ktw==", + "deprecated": "This package is archived and no longer maintained. For support, visit https://github.com/expressjs/express/discussions", + "license": "MIT", + "dependencies": { + "http-errors": "~1.4.0", + "path-to-regexp": "^1.0.0" + } + }, + "node_modules/path-match/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "license": "MIT" + }, + "node_modules/path-match/node_modules/path-to-regexp": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", + "license": "MIT", + "dependencies": { + "isarray": "0.0.1" + } + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -23250,6 +27915,7 @@ "version": "0.0.11", "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "dev": true, "license": [ "MIT", "Apache2" @@ -23401,7 +28067,6 @@ "version": "1.57.0", "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", - "dev": true, "license": "Apache-2.0", "dependencies": { "playwright-core": "1.57.0" @@ -23421,7 +28086,6 @@ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", "license": "Apache-2.0", - "peer": true, "bin": { "playwright-core": "cli.js" }, @@ -23433,6 +28097,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -23447,6 +28112,22 @@ "node": ">=4.0.0" } }, + "node_modules/points-on-curve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "license": "MIT" + }, + "node_modules/points-on-path": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", + "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", + "license": "MIT", + "dependencies": { + "path-data-parser": "0.1.0", + "points-on-curve": "0.2.0" + } + }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", @@ -23475,7 +28156,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -23622,7 +28302,6 @@ "resolved": "https://registry.npmjs.org/preact/-/preact-10.28.0.tgz", "integrity": "sha512-rytDAoiXr3+t6OIP3WGlDd0ouCUG1iCWzkcY3++Nreuoi17y6T5i/zRhe6uYfoVcxq6YU+sBtJouuRDsq8vvqA==", "license": "MIT", - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -23652,7 +28331,6 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", "license": "MIT", - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -23669,7 +28347,6 @@ "integrity": "sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "@astrojs/compiler": "^2.9.1", "prettier": "^3.0.0", @@ -23706,6 +28383,21 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/pretty-ms": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", + "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", + "license": "MIT", + "dependencies": { + "parse-ms": "^2.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/prismjs": { "version": "1.30.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", @@ -23719,6 +28411,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -23737,6 +28430,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==", + "dev": true, "license": "MIT" }, "node_modules/progress": { @@ -23754,6 +28448,12 @@ "integrity": "sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==", "license": "ISC" }, + "node_modules/promisepipe": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/promisepipe/-/promisepipe-3.0.0.tgz", + "integrity": "sha512-V6TbZDJ/ZswevgkDNpGt/YqNCiZP9ASfgU+p83uJE6NrGtvSGoOcHLiDCqkMs2+yg7F5qHdLV8d0aS8O26G/KA==", + "license": "MIT" + }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -23790,6 +28490,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true, "license": "ISC" }, "node_modules/proxy-from-env": { @@ -23830,6 +28531,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/pump-chain/-/pump-chain-1.0.0.tgz", "integrity": "sha512-Gqkf1pfKMsowLBtWkhEJNxL5eU9EN1zs/bmWC/mKKODH3j6Xtxe4NH3873UeNzVCjDYWvi/BEXAmbviqRhm6pw==", + "dev": true, "license": "MIT", "dependencies": { "bubble-stream-error": "^1.0.0", @@ -23841,6 +28543,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "dev": true, "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", @@ -23856,10 +28559,21 @@ "node": ">=6" } }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/pupa": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.3.0.tgz", "integrity": "sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA==", + "dev": true, "license": "MIT", "dependencies": { "escape-goat": "^4.0.0" @@ -23939,6 +28653,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -23951,6 +28666,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/quotation/-/quotation-2.0.3.tgz", "integrity": "sha512-yEc24TEgCFLXx7D4JHJJkK4JFVtatO8fziwUxY4nB/Jbea9o9CVS3gt22mA0W7rPYAGW2fWzYDSOtD94PwOyqA==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -23972,10 +28688,54 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/raw-body": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", + "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.3", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", @@ -23991,6 +28751,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -24000,6 +28761,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -24025,6 +28787,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "dev": true, "license": "ISC", "dependencies": { "json-parse-even-better-errors": "^3.0.0", @@ -24038,6 +28801,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "dev": true, "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -24047,6 +28811,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-7.1.0.tgz", "integrity": "sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==", + "dev": true, "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.1", @@ -24065,6 +28830,7 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-9.1.0.tgz", "integrity": "sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==", + "dev": true, "license": "MIT", "dependencies": { "find-up": "^6.3.0", @@ -24082,6 +28848,7 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^7.1.0", @@ -24098,6 +28865,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^6.0.0" @@ -24113,6 +28881,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^1.0.0" @@ -24128,6 +28897,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, "license": "MIT", "dependencies": { "p-limit": "^4.0.0" @@ -24143,6 +28913,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -24152,6 +28923,7 @@ "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=12.20" @@ -24164,6 +28936,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -24176,6 +28949,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -24188,6 +28962,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^4.0.1", @@ -24203,6 +28978,7 @@ "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -24215,6 +28991,7 @@ "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=12.20" @@ -24227,6 +29004,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, "license": "ISC" }, "node_modules/readable-stream": { @@ -24454,6 +29232,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.0.tgz", "integrity": "sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==", + "dev": true, "license": "MIT", "dependencies": { "@pnpm/npm-conf": "^2.1.0" @@ -24466,6 +29245,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "dev": true, "license": "MIT", "dependencies": { "rc": "1.2.8" @@ -24575,6 +29355,54 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/rehype-mathjax": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/rehype-mathjax/-/rehype-mathjax-7.1.0.tgz", + "integrity": "sha512-mJHNpoqCC5UZ24OKx0wNjlzV18qeJz/Q/LtEjxXzt8vqrZ1Z3GxQnVrHcF5/PogcXUK8cWwJ4U/LWOQWEiABHw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mathjax": "^0.0.40", + "hast-util-to-text": "^4.0.0", + "hastscript": "^9.0.0", + "mathjax-full": "^3.0.0", + "unified": "^11.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-mermaid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rehype-mermaid/-/rehype-mermaid-3.0.0.tgz", + "integrity": "sha512-fxrD5E4Fa1WXUjmjNDvLOMT4XB1WaxcfycFIWiYU0yEMQhcTDElc9aDFnbDFRLxG1Cfo1I3mfD5kg4sjlWaB+Q==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-html-isomorphic": "^2.0.0", + "hast-util-to-text": "^4.0.0", + "mermaid-isomorphic": "^3.0.0", + "mini-svg-data-uri": "^1.0.0", + "space-separated-tokens": "^2.0.0", + "unified": "^11.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + }, + "peerDependencies": { + "playwright": "1" + }, + "peerDependenciesMeta": { + "playwright": { + "optional": true + } + } + }, "node_modules/rehype-parse": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", @@ -24624,6 +29452,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rehype-retext/-/rehype-retext-3.0.2.tgz", "integrity": "sha512-9Q2JyXBBnXQfwVhrp4/YPGY2GMC2uiSgW0V3WANT3md1lJD5M2V+jlvvQVTu6tFhA1Ap4a2v0zZDZffkND0tAw==", + "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", @@ -24640,6 +29469,7 @@ "version": "2.3.10", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -24649,12 +29479,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/rehype-retext/node_modules/unified": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -24674,6 +29506,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -24687,6 +29520,7 @@ "version": "5.3.7", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -24703,6 +29537,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -24717,7 +29552,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz", "integrity": "sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==", - "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -24750,7 +29584,6 @@ "version": "15.0.1", "resolved": "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz", "integrity": "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==", - "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -24763,21 +29596,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-breaks": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-breaks/-/remark-breaks-4.0.0.tgz", - "integrity": "sha512-IjEjJOkH4FuJvHZVIW0QCDWxcG96kCq7An/KVH2NfJe6rKZU2AsHeB3OEjPNRxi4QC34Xdx7I2KGYn6IpT7gxQ==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-newline-to-break": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/remark-captions": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/remark-captions/-/remark-captions-2.2.4.tgz", @@ -25484,6 +30302,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-4.0.1.tgz", "integrity": "sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -25500,6 +30319,7 @@ "version": "3.0.15", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -25509,12 +30329,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/remark-frontmatter/node_modules/unified": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -25534,6 +30356,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -25547,6 +30370,7 @@ "version": "5.3.7", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -25563,6 +30387,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -25595,7 +30420,6 @@ "version": "16.0.1", "resolved": "https://registry.npmjs.org/remark-html/-/remark-html-16.0.1.tgz", "integrity": "sha512-B9JqA5i0qZe0Nsf49q3OXyGvyXuZFDzAP2iOFLEumymuYJITVpiH1IgsTEwTpdptDmZlMDMWeDmSawdaJIGCXQ==", - "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -25657,6 +30481,22 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/remark-math": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-6.0.0.tgz", + "integrity": "sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-math": "^3.0.0", + "micromark-extension-math": "^3.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remark-mdx": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz", @@ -25675,6 +30515,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-7.1.1.tgz", "integrity": "sha512-xKRWl1NTBOKed0oEtCd8BUfH5m4s8WXxFFSoo7uUwx6GW/qdCy4zov5LfPyw7emantDmhfWn5PdIZgcbVcWMDQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -25692,6 +30533,7 @@ "version": "3.0.15", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -25701,12 +30543,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/remark-message-control/node_modules/unified": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -25726,6 +30570,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -25739,6 +30584,7 @@ "version": "5.3.7", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -25755,6 +30601,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -25786,7 +30633,6 @@ "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", "license": "MIT", - "peer": true, "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", @@ -25803,6 +30649,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/remark-retext/-/remark-retext-5.0.1.tgz", "integrity": "sha512-h3kOjKNy7oJfohqXlKp+W4YDigHD3rw01x91qvQP/cUkK5nJrDl6yEYwTujQCAXSLZrsBxywlK3ntzIX6c29aA==", + "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", @@ -25819,6 +30666,7 @@ "version": "3.0.15", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -25828,12 +30676,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/remark-retext/node_modules/unified": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -25853,6 +30703,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -25866,6 +30717,7 @@ "version": "5.3.7", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -25882,6 +30734,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -26190,6 +31043,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true, "license": "MIT" }, "node_modules/resolve-from": { @@ -26205,7 +31059,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" @@ -26215,6 +31068,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, "license": "MIT", "dependencies": { "lowercase-keys": "^3.0.0" @@ -26252,6 +31106,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/retext-english/-/retext-english-4.1.0.tgz", "integrity": "sha512-Pky2idjvgkzfodO0GH9X4IU8LX/d4ULTnLf7S1WsBRlSCh/JdTFPafXZstJqZehtQWNHrgoCqVOiGugsNFYvIQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/nlcst": "^1.0.0", @@ -26268,6 +31123,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-1.0.4.tgz", "integrity": "sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -26277,12 +31133,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/retext-english/node_modules/unified": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -26302,6 +31160,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -26315,6 +31174,7 @@ "version": "5.3.7", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -26331,6 +31191,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -26345,6 +31206,7 @@ "version": "6.6.0", "resolved": "https://registry.npmjs.org/retext-equality/-/retext-equality-6.6.0.tgz", "integrity": "sha512-il0Q8Dlxluc67UQnk49XmwISl3mzf1Lvuat0yZKzR2NuuluzTXI4EK44HA5JOobt/vmYkDaJaDsxHf0MmE4OMA==", + "dev": true, "license": "MIT", "dependencies": { "@types/nlcst": "^1.0.0", @@ -26367,6 +31229,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-1.0.4.tgz", "integrity": "sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -26376,12 +31239,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/retext-equality/node_modules/nlcst-to-string": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-3.1.1.tgz", "integrity": "sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==", + "dev": true, "license": "MIT", "dependencies": { "@types/nlcst": "^1.0.0" @@ -26395,6 +31260,7 @@ "version": "10.1.2", "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -26414,6 +31280,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -26427,6 +31294,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -26440,6 +31308,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -26455,6 +31324,7 @@ "version": "5.1.3", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -26469,6 +31339,7 @@ "version": "5.3.7", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -26485,6 +31356,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -26514,6 +31386,7 @@ "version": "7.2.2", "resolved": "https://registry.npmjs.org/retext-profanities/-/retext-profanities-7.2.2.tgz", "integrity": "sha512-nwrR987v3m7+JQ8wyK8oE+adqS1aYUyHyf+k6omflI/8PL9Slbp/39YieTJJvrmR0udBe2iV7aURXW5/3Uj12w==", + "dev": true, "license": "MIT", "dependencies": { "@types/nlcst": "^1.0.0", @@ -26534,6 +31407,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-1.0.4.tgz", "integrity": "sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -26543,12 +31417,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/retext-profanities/node_modules/nlcst-to-string": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-3.1.1.tgz", "integrity": "sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==", + "dev": true, "license": "MIT", "dependencies": { "@types/nlcst": "^1.0.0" @@ -26562,6 +31438,7 @@ "version": "10.1.2", "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -26581,6 +31458,7 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -26594,6 +31472,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -26607,6 +31486,7 @@ "version": "5.3.7", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -26623,6 +31503,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -26663,6 +31544,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -26764,6 +31654,43 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" + }, + "node_modules/rolldown": { + "version": "1.0.0-beta.35", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-beta.35.tgz", + "integrity": "sha512-gJATyqcsJe0Cs8RMFO8XgFjfTc0lK1jcSvirDQDSIfsJE+vt53QH/Ob+OBSJsXb98YtZXHfP/bHpELpPwCprow==", + "license": "MIT", + "dependencies": { + "@oxc-project/runtime": "=0.82.3", + "@oxc-project/types": "=0.82.3", + "@rolldown/pluginutils": "1.0.0-beta.35", + "ansis": "^4.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.0-beta.35", + "@rolldown/binding-darwin-arm64": "1.0.0-beta.35", + "@rolldown/binding-darwin-x64": "1.0.0-beta.35", + "@rolldown/binding-freebsd-x64": "1.0.0-beta.35", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.35", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.35", + "@rolldown/binding-linux-arm64-musl": "1.0.0-beta.35", + "@rolldown/binding-linux-x64-gnu": "1.0.0-beta.35", + "@rolldown/binding-linux-x64-musl": "1.0.0-beta.35", + "@rolldown/binding-openharmony-arm64": "1.0.0-beta.35", + "@rolldown/binding-wasm32-wasi": "1.0.0-beta.35", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.35", + "@rolldown/binding-win32-ia32-msvc": "1.0.0-beta.35", + "@rolldown/binding-win32-x64-msvc": "1.0.0-beta.35" + } + }, "node_modules/rollup": { "version": "4.53.2", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.2.tgz", @@ -26818,6 +31745,18 @@ "linux" ] }, + "node_modules/roughjs": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", + "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "license": "MIT", + "dependencies": { + "hachure-fill": "^0.5.2", + "path-data-parser": "^0.1.0", + "points-on-curve": "^0.2.0", + "points-on-path": "^0.2.1" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -26841,6 +31780,12 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" + }, "node_modules/s.color": { "version": "0.0.15", "resolved": "https://registry.npmjs.org/s.color/-/s.color-0.0.15.tgz", @@ -27001,6 +31946,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, "license": "ISC", "dependencies": { "xmlchars": "^2.2.0" @@ -27028,6 +31974,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "dev": true, "license": "MIT", "dependencies": { "semver": "^7.3.5" @@ -27043,6 +31990,7 @@ "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -27106,6 +32054,12 @@ "node": ">= 0.4" } }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "license": "ISC" + }, "node_modules/sha.js": { "version": "2.4.12", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", @@ -27455,6 +32409,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", "integrity": "sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==", + "dev": true, "license": "MIT" }, "node_modules/smob": { @@ -27533,6 +32488,7 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/spawn-to-readstream/-/spawn-to-readstream-0.1.3.tgz", "integrity": "sha512-Xxiqu2wU4nkLv8G+fiv9jT6HRTrz9D8Fajli9HQtqWlrgTwQ3DSs4ZztQbhN/HsVxJX5S7ynzmJ2lQiYDQSYmg==", + "dev": true, "license": "MIT", "dependencies": { "limit-spawn": "0.0.3", @@ -27546,18 +32502,21 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true, "license": "MIT" }, "node_modules/spawn-to-readstream/node_modules/object-keys": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", + "dev": true, "license": "MIT" }, "node_modules/spawn-to-readstream/node_modules/readable-stream": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -27570,12 +32529,14 @@ "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true, "license": "MIT" }, "node_modules/spawn-to-readstream/node_modules/through2": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", "integrity": "sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==", + "dev": true, "license": "MIT", "dependencies": { "readable-stream": "~1.0.17", @@ -27586,6 +32547,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", + "dev": true, "dependencies": { "object-keys": "~0.4.0" }, @@ -27597,6 +32559,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", @@ -27607,6 +32570,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", @@ -27617,6 +32581,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { @@ -27634,12 +32599,37 @@ "version": "3.0.22", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", + "dev": true, "license": "CC0-1.0" }, + "node_modules/speech-rule-engine": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.1.2.tgz", + "integrity": "sha512-S6ji+flMEga+1QU79NDbwZ8Ivf0S/MpupQQiIC0rTpU/ZTKgcajijJJb1OcByBQDjrXCN1/DJtGz4ZJeBMPGJw==", + "license": "Apache-2.0", + "dependencies": { + "@xmldom/xmldom": "0.9.8", + "commander": "13.1.0", + "wicked-good-xpath": "1.3.0" + }, + "bin": { + "sre": "bin/sre" + } + }, + "node_modules/speech-rule-engine/node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/split": { "version": "0.2.10", "resolved": "https://registry.npmjs.org/split/-/split-0.2.10.tgz", "integrity": "sha512-e0pKq+UUH2Xq/sXbYpZBZc3BawsfDZ7dgv+JtRTUPNcvF5CMR4Y9cvJqkMY0MoxWzTHvZuz1beg6pNEKlszPiQ==", + "dev": true, "dependencies": { "through": "2" }, @@ -27651,6 +32641,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/split-transform-stream/-/split-transform-stream-0.1.1.tgz", "integrity": "sha512-nV8lOb9BKS3BqODBjmzELm0Kl878nWoTjdfn6z/v6d/zW8YS/EQ76fP11a/D6Fm6QTsbLdsFJBIpz6t17zHJnQ==", + "dev": true, "license": "MIT", "dependencies": { "bubble-stream-error": "~0.0.1", @@ -27662,6 +32653,7 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/bubble-stream-error/-/bubble-stream-error-0.0.1.tgz", "integrity": "sha512-L9hlwJcJ+5p+Bx+FS2VdrOs61bDi9m1rLsZgx/CvUC0J/OPz71tLN/6/sP/X7i7KtQKzm6rzPhdjHdd+I8ZKkQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4.0" @@ -27671,18 +32663,21 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true, "license": "MIT" }, "node_modules/split-transform-stream/node_modules/object-keys": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", + "dev": true, "license": "MIT" }, "node_modules/split-transform-stream/node_modules/readable-stream": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -27695,12 +32690,14 @@ "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true, "license": "MIT" }, "node_modules/split-transform-stream/node_modules/through2": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", "integrity": "sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==", + "dev": true, "license": "MIT", "dependencies": { "readable-stream": "~1.0.17", @@ -27711,6 +32708,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", + "dev": true, "dependencies": { "object-keys": "~0.4.0" }, @@ -27718,6 +32716,27 @@ "node": ">=0.4" } }, + "node_modules/srvx": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/srvx/-/srvx-0.8.9.tgz", + "integrity": "sha512-wYc3VLZHRzwYrWJhkEqkhLb31TI0SOkfYZDkUhXdp3NoCnNS0FqajiQszZZjfow/VYEuc6Q5sZh9nM6kPy2NBQ==", + "license": "MIT", + "dependencies": { + "cookie-es": "^2.0.0" + }, + "bin": { + "srvx": "bin/srvx.mjs" + }, + "engines": { + "node": ">=20.16.0" + } + }, + "node_modules/srvx/node_modules/cookie-es": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-2.0.0.tgz", + "integrity": "sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==", + "license": "MIT" + }, "node_modules/sshpk": { "version": "1.18.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", @@ -27769,6 +32788,21 @@ "dev": true, "license": "MIT" }, + "node_modules/stat-mode": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.3.0.tgz", + "integrity": "sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng==", + "license": "MIT" + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/std-env": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", @@ -27793,6 +32827,7 @@ "version": "0.0.4", "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==", + "dev": true, "license": "MIT", "dependencies": { "duplexer": "~0.1.1" @@ -27813,6 +32848,15 @@ "node": ">= 0.10.0" } }, + "node_modules/stream-to-array": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", + "integrity": "sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.1.0" + } + }, "node_modules/stream-to-buffer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/stream-to-buffer/-/stream-to-buffer-0.1.0.tgz", @@ -27825,6 +32869,35 @@ "node": ">= 0.8" } }, + "node_modules/stream-to-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-to-promise/-/stream-to-promise-2.2.0.tgz", + "integrity": "sha512-HAGUASw8NT0k8JvIVutB2Y/9iBk7gpgEyAudXwNJmZERdMITGdajOa4VJfD/kNiA3TppQpTP4J+CtcHwdzKBAw==", + "license": "MIT", + "dependencies": { + "any-promise": "~1.3.0", + "end-of-stream": "~1.1.0", + "stream-to-array": "~2.3.0" + } + }, + "node_modules/stream-to-promise/node_modules/end-of-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", + "integrity": "sha512-EoulkdKF/1xa92q25PbjuDcgJ9RDHYU2Rs3SCIvs2/dSQ3BpmxneNHmA/M7fe60M3PrV7nNGTTNbkK62l6vXiQ==", + "license": "MIT", + "dependencies": { + "once": "~1.3.0" + } + }, + "node_modules/stream-to-promise/node_modules/once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -28075,6 +33148,15 @@ "node": ">=10" } }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -28147,7 +33229,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-syntax-patches-for-csstree": "^1.0.19", @@ -28377,7 +33458,6 @@ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -28414,6 +33494,12 @@ "node": ">=8" } }, + "node_modules/stylis": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", + "license": "MIT" + }, "node_modules/suf-log": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/suf-log/-/suf-log-2.5.3.tgz", @@ -28595,6 +33681,7 @@ "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, "license": "MIT" }, "node_modules/synckit": { @@ -28699,8 +33786,7 @@ "version": "4.1.18", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/tapable": { "version": "2.3.0", @@ -28803,7 +33889,6 @@ "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", @@ -28823,16 +33908,30 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "license": "MIT" }, + "node_modules/throttleit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-2.1.0.tgz", + "integrity": "sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, "license": "MIT" }, "node_modules/through2": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.0.tgz", "integrity": "sha512-3LhMYlSFQltedwvYhWeUfxaR1cpZb8f9niMsM5T3a5weZKBYu4dfR6Vg6QkK5+SWbK3txeOUCrHtc+KQuVbnDw==", + "dev": true, "license": "MIT", "dependencies": { "readable-stream": "~2.0.0", @@ -28843,12 +33942,14 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, "license": "MIT" }, "node_modules/through2/node_modules/readable-stream": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", "integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==", + "dev": true, "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -28863,8 +33964,24 @@ "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true, "license": "MIT" }, + "node_modules/time-span": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/time-span/-/time-span-4.0.0.tgz", + "integrity": "sha512-MyqZCTGLDZ77u4k+jqg4UlrzPTPZ49NDlaekU6uuFaJLzPIN1woaRXCbGeqOfxwc3Y37ZROGAJ614Rdv7Olt+g==", + "license": "MIT", + "dependencies": { + "convert-hrtime": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/tiny-inflate": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", @@ -28931,7 +34048,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -28959,6 +34075,7 @@ "version": "7.0.19", "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.19.tgz", "integrity": "sha512-8PWx8tvC4jDB39BQw1m4x8y5MH1BcQ5xHeL2n7UVFulMPH/3Q0uiamahFJ3lXA0zO2SUyRXuVVbWSDmstlt9YA==", + "dev": true, "license": "MIT", "dependencies": { "tldts-core": "^7.0.19" @@ -28971,6 +34088,7 @@ "version": "7.0.19", "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.19.tgz", "integrity": "sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A==", + "dev": true, "license": "MIT" }, "node_modules/to-buffer": { @@ -29036,6 +34154,7 @@ "version": "7.2.4", "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-7.2.4.tgz", "integrity": "sha512-2eQ+rJ2qGbyw3senPI0qjuM7aut8IYXK6AEoOWb+fJx/mQYzviTckm1wDjq91QYHAPBTYzmdJXxMFA6Mk14mdw==", + "dev": true, "license": "MIT", "dependencies": { "is-buffer": "^2.0.0", @@ -29050,12 +34169,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/to-vfile/node_modules/unist-util-stringify-position": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -29069,6 +34190,7 @@ "version": "5.3.7", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -29085,6 +34207,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -29095,6 +34218,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, "node_modules/tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", @@ -29114,6 +34246,15 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "license": "MIT" }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", @@ -29128,6 +34269,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -29159,6 +34301,89 @@ "typescript": ">=4.8.4" } }, + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "license": "MIT", + "engines": { + "node": ">=6.10" + } + }, + "node_modules/ts-morph": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-12.0.0.tgz", + "integrity": "sha512-VHC8XgU2fFW7yO1f/b3mxKDje1vmyzFXHWzOYmKEkCEwcLjDtbdLgBQviqj4ZwP4MJkQtRo6Ha2I29lq/B+VxA==", + "license": "MIT", + "dependencies": { + "@ts-morph/common": "~0.11.0", + "code-block-writer": "^10.1.1" + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "license": "MIT" + }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/ts-toolbelt": { + "version": "6.15.5", + "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-6.15.5.tgz", + "integrity": "sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==", + "license": "Apache-2.0" + }, "node_modules/tsconfck": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz", @@ -29221,6 +34446,462 @@ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, + "node_modules/tsx": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.2.tgz", + "integrity": "sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==", + "license": "MIT", + "dependencies": { + "esbuild": "~0.23.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", + "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-loong64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-s390x": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/sunos-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/esbuild": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", + "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.23.1", + "@esbuild/android-arm": "0.23.1", + "@esbuild/android-arm64": "0.23.1", + "@esbuild/android-x64": "0.23.1", + "@esbuild/darwin-arm64": "0.23.1", + "@esbuild/darwin-x64": "0.23.1", + "@esbuild/freebsd-arm64": "0.23.1", + "@esbuild/freebsd-x64": "0.23.1", + "@esbuild/linux-arm": "0.23.1", + "@esbuild/linux-arm64": "0.23.1", + "@esbuild/linux-ia32": "0.23.1", + "@esbuild/linux-loong64": "0.23.1", + "@esbuild/linux-mips64el": "0.23.1", + "@esbuild/linux-ppc64": "0.23.1", + "@esbuild/linux-riscv64": "0.23.1", + "@esbuild/linux-s390x": "0.23.1", + "@esbuild/linux-x64": "0.23.1", + "@esbuild/netbsd-x64": "0.23.1", + "@esbuild/openbsd-arm64": "0.23.1", + "@esbuild/openbsd-x64": "0.23.1", + "@esbuild/sunos-x64": "0.23.1", + "@esbuild/win32-arm64": "0.23.1", + "@esbuild/win32-ia32": "0.23.1", + "@esbuild/win32-x64": "0.23.1" + } + }, + "node_modules/tsx/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -29342,12 +35023,14 @@ "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true, "license": "MIT" }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" @@ -29364,7 +35047,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -29418,12 +35100,39 @@ "typescript": ">=4.8.4 <6.0.0" } }, + "node_modules/typescript5": { + "name": "typescript", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" + }, "node_modules/ufo": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", "license": "MIT" }, + "node_modules/uid-promise": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/uid-promise/-/uid-promise-1.0.0.tgz", + "integrity": "sha512-R8375j0qwXyIu/7R0tjdF06/sElHqbmdmWC9M2qQHpEVbvE4I5+38KJI7LUUmQMp7NVq4tKHiBMkT0NFM453Ig==", + "license": "MIT" + }, "node_modules/ultrahtml": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.6.0.tgz", @@ -29473,6 +35182,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/unherit/-/unherit-3.0.1.tgz", "integrity": "sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -29557,6 +35267,19 @@ "node": ">=12" } }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/unified": { "version": "11.0.5", "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", @@ -29580,6 +35303,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/unified-diff/-/unified-diff-4.0.1.tgz", "integrity": "sha512-qiI0GaHi/50NVrChnmZOBeB0aNhHRMG6VnjKEAikaQD/I3gxjTsDp8gycCOUxyVCJrV/Rv3y6zEWMZczO+o3Lw==", + "dev": true, "license": "MIT", "dependencies": { "git-diff-tree": "^1.0.0", @@ -29594,6 +35318,7 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-10.1.0.tgz", "integrity": "sha512-5+JDIs4hqKfHnJcVCxTid1yBoI/++FfF/1PFdSMpaftZZZY+qg2JFruRbf7PaIwa9KgLotXQV3gSjtY0IdcFGQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/concat-stream": "^2.0.0", @@ -29628,6 +35353,7 @@ "version": "18.19.130", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz", "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==", + "dev": true, "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -29637,6 +35363,7 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/unified-engine/node_modules/glob": { @@ -29644,6 +35371,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -29663,6 +35391,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -29672,6 +35401,7 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -29684,6 +35414,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-6.0.2.tgz", "integrity": "sha512-SA5aMiaIjXkAiBrW/yPgLgQAQg42f7K3ACO+2l/zOvtQBwX58DMUsFJXelW2fx3yMBmWOVkR6j1MGsdSbCA4UA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.0", @@ -29702,12 +35433,14 @@ "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true, "license": "MIT" }, "node_modules/unified-engine/node_modules/unist-util-inspect": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-7.0.2.tgz", "integrity": "sha512-Op0XnmHUl6C2zo/yJCwhXQSm/SmW22eDZdWP2qdf4WpGrgO1ZxFodq+5zFyeRGasFjJotAnLgfuD1jkcKqiH1Q==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -29721,6 +35454,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -29734,6 +35468,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -29748,6 +35483,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-4.0.0.tgz", "integrity": "sha512-1b92N+VkPHftOsvXNOtkJm4wHlr+UDmTBF2dUzepn40oy9NxanJ9xS1RwUBTjXJwqr2K0kMbEyv1Krdsho7+Iw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -29766,12 +35502,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/unified-message-control/node_modules/unist-util-is": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -29785,6 +35523,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -29798,6 +35537,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz", "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -29813,6 +35553,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -29827,6 +35568,7 @@ "version": "5.3.7", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -29843,6 +35585,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz", "integrity": "sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -29857,6 +35600,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -30061,6 +35805,15 @@ "node": ">= 10.0.0" } }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/unplugin": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.0.1.tgz", @@ -30128,7 +35881,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "peer": true, "dependencies": { "napi-postinstall": "^0.3.0" }, @@ -30303,6 +36055,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "boxen": "^7.0.0", @@ -30331,6 +36084,7 @@ "version": "6.2.3", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -30343,6 +36097,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "dev": true, "license": "MIT", "dependencies": { "ansi-align": "^3.0.1", @@ -30365,6 +36120,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "dev": true, "license": "MIT", "engines": { "node": ">=14.16" @@ -30377,6 +36133,7 @@ "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -30389,6 +36146,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", @@ -30406,6 +36164,7 @@ "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=12.20" @@ -30418,6 +36177,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dev": true, "license": "MIT", "dependencies": { "string-width": "^5.0.1" @@ -30433,6 +36193,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", @@ -30514,10 +36275,17 @@ "node": ">=8" } }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "license": "MIT" + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", @@ -30528,12 +36296,525 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, + "node_modules/vercel": { + "version": "50.1.3", + "resolved": "https://registry.npmjs.org/vercel/-/vercel-50.1.3.tgz", + "integrity": "sha512-mtuMYq+Vxa7E/UViORhw4F1LMZwFpHdKCSkfj9edfTKzBe64Vw5GBWSpNkE7Q/UDoCjQGukPyY1XiudnjF5ZUw==", + "license": "Apache-2.0", + "dependencies": { + "@vercel/backends": "0.0.17", + "@vercel/blob": "1.0.2", + "@vercel/build-utils": "13.2.4", + "@vercel/detect-agent": "1.0.0", + "@vercel/elysia": "0.1.15", + "@vercel/express": "0.1.21", + "@vercel/fastify": "0.1.18", + "@vercel/fun": "1.2.0", + "@vercel/go": "3.2.4", + "@vercel/h3": "0.1.24", + "@vercel/hono": "0.2.18", + "@vercel/hydrogen": "1.3.3", + "@vercel/nestjs": "0.2.19", + "@vercel/next": "4.15.9", + "@vercel/node": "5.5.16", + "@vercel/python": "6.1.5", + "@vercel/redwood": "2.4.6", + "@vercel/remix-builder": "5.5.6", + "@vercel/ruby": "2.2.4", + "@vercel/rust": "1.0.4", + "@vercel/static-build": "2.8.15", + "chokidar": "4.0.0", + "esbuild": "0.27.0", + "form-data": "^4.0.0", + "jose": "5.9.6" + }, + "bin": { + "vc": "dist/vc.js", + "vercel": "dist/vc.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/vercel/node_modules/@esbuild/aix-ppc64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.0.tgz", + "integrity": "sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/android-arm": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.0.tgz", + "integrity": "sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/android-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.0.tgz", + "integrity": "sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/android-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.0.tgz", + "integrity": "sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/darwin-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.0.tgz", + "integrity": "sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/darwin-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.0.tgz", + "integrity": "sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.0.tgz", + "integrity": "sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/freebsd-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.0.tgz", + "integrity": "sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/linux-arm": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.0.tgz", + "integrity": "sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/linux-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.0.tgz", + "integrity": "sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/linux-ia32": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.0.tgz", + "integrity": "sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/linux-loong64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.0.tgz", + "integrity": "sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/linux-mips64el": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.0.tgz", + "integrity": "sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/linux-ppc64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.0.tgz", + "integrity": "sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/linux-riscv64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.0.tgz", + "integrity": "sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/linux-s390x": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.0.tgz", + "integrity": "sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/linux-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.0.tgz", + "integrity": "sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.0.tgz", + "integrity": "sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/netbsd-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.0.tgz", + "integrity": "sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.0.tgz", + "integrity": "sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/openbsd-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.0.tgz", + "integrity": "sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.0.tgz", + "integrity": "sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/sunos-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.0.tgz", + "integrity": "sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/win32-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.0.tgz", + "integrity": "sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/win32-ia32": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.0.tgz", + "integrity": "sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/@esbuild/win32-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.0.tgz", + "integrity": "sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vercel/node_modules/chokidar": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.0.tgz", + "integrity": "sha512-mxIojEAQcuEvT/lyXq+jf/3cO/KoA6z4CeNDGGevTybECPOMFCnQy3OPahluUkbqgPNGw5Bi78UC7Po6Lhy+NA==", + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/vercel/node_modules/esbuild": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.0.tgz", + "integrity": "sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.0", + "@esbuild/android-arm": "0.27.0", + "@esbuild/android-arm64": "0.27.0", + "@esbuild/android-x64": "0.27.0", + "@esbuild/darwin-arm64": "0.27.0", + "@esbuild/darwin-x64": "0.27.0", + "@esbuild/freebsd-arm64": "0.27.0", + "@esbuild/freebsd-x64": "0.27.0", + "@esbuild/linux-arm": "0.27.0", + "@esbuild/linux-arm64": "0.27.0", + "@esbuild/linux-ia32": "0.27.0", + "@esbuild/linux-loong64": "0.27.0", + "@esbuild/linux-mips64el": "0.27.0", + "@esbuild/linux-ppc64": "0.27.0", + "@esbuild/linux-riscv64": "0.27.0", + "@esbuild/linux-s390x": "0.27.0", + "@esbuild/linux-x64": "0.27.0", + "@esbuild/netbsd-arm64": "0.27.0", + "@esbuild/netbsd-x64": "0.27.0", + "@esbuild/openbsd-arm64": "0.27.0", + "@esbuild/openbsd-x64": "0.27.0", + "@esbuild/openharmony-arm64": "0.27.0", + "@esbuild/sunos-x64": "0.27.0", + "@esbuild/win32-arm64": "0.27.0", + "@esbuild/win32-ia32": "0.27.0", + "@esbuild/win32-x64": "0.27.0" + } + }, "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -30566,6 +36847,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/vfile-find-up/-/vfile-find-up-6.1.0.tgz", "integrity": "sha512-plN64Ff/wLPvKC8ucTzyB97cgV7SdIcFL74HLCSmI/79FqOI1WACbNM4noKrJa+dZRgN6Gwp4BQElm/yBDqC3w==", + "dev": true, "license": "MIT", "dependencies": { "to-vfile": "^7.0.0", @@ -30580,12 +36862,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/vfile-find-up/node_modules/unist-util-stringify-position": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -30599,6 +36883,7 @@ "version": "5.3.7", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -30615,6 +36900,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -30657,6 +36943,7 @@ "version": "7.0.5", "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-7.0.5.tgz", "integrity": "sha512-NdWWXkv6gcd7AZMvDomlQbK3MqFWL1RlGzMn++/O2TI+68+nqxCPTvLugdOtfSzXmjh+xUyhp07HhlrbJjT+mw==", + "dev": true, "license": "MIT", "dependencies": { "@types/supports-color": "^8.0.0", @@ -30677,12 +36964,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/vfile-reporter/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", @@ -30700,6 +36989,7 @@ "version": "9.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -30712,6 +37002,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -30725,6 +37016,7 @@ "version": "5.3.7", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -30741,6 +37033,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -30755,6 +37048,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-3.0.1.tgz", "integrity": "sha512-1os1733XY6y0D5x0ugqSeaVJm9lYgj0j5qdcZQFyxlZOSy1jYarL77lLyb5gK4Wqr1d5OxmuyflSO3zKyFnTFw==", + "dev": true, "license": "MIT", "dependencies": { "vfile": "^5.0.0", @@ -30769,12 +37063,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/vfile-sort/node_modules/unist-util-stringify-position": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -30788,6 +37084,7 @@ "version": "5.3.7", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -30804,6 +37101,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -30818,6 +37116,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-2.0.1.tgz", "integrity": "sha512-W6dkECZmP32EG/l+dp2jCLdYzmnDBIw6jwiLZSER81oR5AHRcVqL+k3Z+pfH1R73le6ayDkJRMk0sutj1bMVeg==", + "dev": true, "license": "MIT", "dependencies": { "vfile": "^5.0.0", @@ -30832,12 +37131,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/vfile-statistics/node_modules/unist-util-stringify-position": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" @@ -30851,6 +37152,7 @@ "version": "5.3.7", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -30867,6 +37169,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", @@ -30882,7 +37185,6 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.0.tgz", "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", @@ -31492,7 +37794,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -31525,7 +37826,6 @@ "integrity": "sha512-E4t7DJ9pESL6E3I8nFjPa4xGUd3PmiWDLsDztS2qXSJWfHtbQnwAWylaBvSNY48I3vr8PTqIZlyK8TE3V3CA4Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vitest/expect": "4.0.16", "@vitest/mocker": "4.0.16", @@ -31899,6 +38199,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, "license": "MIT", "dependencies": { "xml-name-validator": "^5.0.0" @@ -31911,6 +38212,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", + "dev": true, "license": "ISC" }, "node_modules/web-namespaces": { @@ -31932,6 +38234,12 @@ "node": ">= 8" } }, + "node_modules/web-vitals": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-0.2.4.tgz", + "integrity": "sha512-6BjspCO9VriYy12z356nL6JBS0GYeEcA457YyRzD+dD6XYCQ75NKhcOHUMHentOE7OcVCIXXDvOm0jKFfQG2Gg==", + "license": "Apache-2.0" + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -32110,6 +38418,12 @@ "node": ">=8" } }, + "node_modules/wicked-good-xpath": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", + "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==", + "license": "MIT" + }, "node_modules/widest-line": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", @@ -32283,7 +38597,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -32420,7 +38733,6 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", "license": "MIT", - "peer": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -32729,10 +39041,23 @@ } } }, + "node_modules/xdg-app-paths": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-app-paths/-/xdg-app-paths-5.1.0.tgz", + "integrity": "sha512-RAQ3WkPf4KTU1A8RtFx3gWywzVKe00tfOPFfl2NDGqbIFENQO4kqAJp7mhQjNj/33W5x5hiWWUdyfPq/5SU3QA==", + "license": "MIT", + "dependencies": { + "xdg-portable": "^7.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/xdg-basedir": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -32741,6 +39066,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/xdg-portable": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/xdg-portable/-/xdg-portable-7.3.0.tgz", + "integrity": "sha512-sqMMuL1rc0FmMBOzCpd0yuy9trqF2yTTVe+E9ogwCSWQCdDEtQUwrZPT6AxqtsFGRNxycgncbP/xmOOSPw5ZUw==", + "license": "MIT", + "dependencies": { + "os-paths": "^4.0.1" + }, + "engines": { + "node": ">= 6.0" + } + }, "node_modules/xhr": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", @@ -32757,6 +39094,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=18" @@ -32794,6 +39132,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, "license": "MIT" }, "node_modules/xtend": { @@ -32883,7 +39222,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -33002,6 +39340,40 @@ "fd-slicer": "~1.1.0" } }, + "node_modules/yauzl-clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/yauzl-clone/-/yauzl-clone-1.0.4.tgz", + "integrity": "sha512-igM2RRCf3k8TvZoxR2oguuw4z1xasOnA31joCqHIyLkeWrvAc2Jgay5ISQ2ZplinkoGaJ6orCz56Ey456c5ESA==", + "license": "MIT", + "dependencies": { + "events-intercept": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yauzl-promise": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yauzl-promise/-/yauzl-promise-2.1.3.tgz", + "integrity": "sha512-A1pf6fzh6eYkK0L4Qp7g9jzJSDrM6nN0bOn5T0IbY4Yo3w+YkWlHFkJP7mzknMXjqusHFHlKsK2N+4OLsK2MRA==", + "license": "MIT", + "dependencies": { + "yauzl": "^2.9.1", + "yauzl-clone": "^1.0.4" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/yocto-queue": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", @@ -33046,7 +39418,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-4.2.1.tgz", "integrity": "sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index 7232151e3..4a2ee7773 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "not IE 11" ], "scripts": { + "build:action": "FORCE_COLOR=1 bash .github/helpers/build-actions.sh", "build": "cross-env NODE_ENV=production npx astro build --remote", "build:ci": "cross-env npm run build", "check": "npx astro check", @@ -40,18 +41,20 @@ "format:json": "FORCE_COLOR=1 npx prettier --write '**/*.json' --cache --ignore-path .gitignore", "format:style": "FORCE_COLOR=1 npx stylelint --fix \"src/**/*.{css,astro}\"", "lint": "npm run lint:base && npm run check", - "lint:actions": "FORCE_COLOR=1 npx node-actionlint", + "lint:actions": "FORCE_COLOR=1 npx node-actionlint && FORCE_COLOR=1 python3 -m pylint $(find .github/actions -type f -path '*/src/*.py')", "lint:base": "npm run lint:json && npm run lint:style && npm run lint:tsc:check && npm run lint:code && npm run lint:actions && npm run lint:inclusive-language", "lint:code": "npx eslint \"@types/**/*.{js,ts}\" \"src/**/*.{js,ts,tsx,astro}\" \"test/**/*.{js,ts,tsx,astro}\"", "lint:inclusive-language": "npx alex src/content", + "lint:md": "FORCE_COLOR=1 npx markdownlint-cli2 \"**/*.{md,mdx}\" \"!**/node_modules/**\" \"!**/dist/**\" \"!**/.astro/**\" \"!**/dev-dist/**\" \"!**/__blobstorage__/**\"", "lint:json": "FORCE_COLOR=1 npx prettier --write '**/*.json' --cache --ignore-path .gitignore", "lint:style": "FORCE_COLOR=1 npx stylelint \"src/**/*.{css,astro}\"", - "lint:tsc:check": "tsc --noEmit -p tsconfig.json --pretty false", + "lint:tsc:check": "npm run sync && tsc --noEmit -p tsconfig.json --pretty false", "sync": "FORCE_COLOR=1 npx astro sync", "test": "npm run test:unit && npm run test:e2e", "test:coverage": "FORCE_COLOR=1 npx vitest run --coverage", "test:e2e": "FORCE_COLOR=1 npx playwright test", - "test:unit": "FORCE_COLOR=1 npx vitest run", + "test:unit": "npm run test:unit:actions && FORCE_COLOR=1 npx vitest run", + "test:unit:actions": "FORCE_COLOR=1 python3 -m pytest --import-mode=importlib .github/actions", "upgrade": "npx @astrojs/upgrade", "prepare": "node .husky/prepare.js" }, @@ -69,18 +72,35 @@ "@googlemaps/extended-component-library": "^0.6.14", "@nanostores/lit": "^0.2.3", "@nanostores/persistent": "^1.2.0", + "@playwright/browser-chromium": "^1.57.0", + "@playwright/test": "1.57.0", "@semantic-ui/astro-lit": "^5.1.1", - "@sentry/astro": "^10.31.0", - "@sentry/browser": "^10.31.0", + "@sentry/astro": "^10.32.0", + "@sentry/browser": "^10.32.0", "@shikijs/transformers": "^3.20.0", - "@tailwindcss/forms": "0.5.10", + "@tailwindcss/forms": "0.5.11", "@tailwindcss/typography": "0.5.19", "@tailwindcss/vite": "^4.1.18", + "@types/canvas-confetti": "^1.9.0", + "@types/confusing-browser-globals": "1.0.3", + "@types/cross-spawn": "6.0.6", + "@types/dedent": "^0.7.2", + "@types/eslint": "^9.6.1", + "@types/eslint-plugin-security": "3.0.0", + "@types/glidejs__glide": "^3.6.6", "@types/hast": "^3.0.4", + "@types/js-cookie": "^3.0.6", + "@types/jsdom": "^27.0.0", + "@types/node": "^25.0.3", + "@types/nodemailer": "^7.0.4", "@types/pubsub-js": "^1.8.6", + "@types/react": "^19.2.7", + "@types/sanitize-html": "^2.16.0", + "@types/to-ico": "1.1.3", + "@types/uuid": "^11.0.0", + "@types/yargs": "17.0.35", "@vite-pwa/astro": "^1.2.0", "@webcomponents/template-shadowroot": "^0.2.1", - "alex": "^11.0.1", "astro": "5.16.6", "astro-icon": "^1.1.5", "astro-link-validator": "github:rodgtr1/astro-link-validator", @@ -94,11 +114,13 @@ "embla-carousel-autoplay": "^8.6.0", "focus-trap": "7.6.6", "gsap": "^3.14.2", + "html-element-attributes": "^3.5.0", + "is-whitespace-character": "^2.0.1", "isomorphic-git": "^1.36.1", "js-cookie": "^3.0.5", - "jsdom": "^27.3.0", "libphonenumber-js": "1.12.31", "lit": "^3.3.1", + "md-attr-parser": "^1.3.0", "nanostores": "^1.1.0", "nodemailer": "^7.0.11", "postcss": "8.5.6", @@ -108,15 +130,23 @@ "rehype-accessible-emojis": "^0.3.2", "rehype-autolink-headings": "^7.1.0", "rehype-external-links": "^3.0.0", - "remark-breaks": "^4.0.0", + "rehype-mathjax": "^7.1.0", + "rehype-mermaid": "^3.0.0", + "rehype-slug": "^6.0.0", + "rehype-stringify": "^10.0.1", + "remark": "^15.0.1", "remark-captions": "^2.2.4", "remark-custom-blocks": "^2.6.1", "remark-deflist": "^1.0.0", "remark-directive": "^4.0.0", "remark-emoji": "^5.0.2", + "remark-gfm": "^4.0.1", + "remark-html": "^16.0.1", "remark-linkify-regex": "^1.2.1", "remark-mark-plus": "^1.0.21", + "remark-math": "^6.0.0", "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.2", "remark-stringify": "^11.0.0", "remark-supersub": "^1.0.0", "remark-video": "^0.10.0", @@ -131,10 +161,13 @@ "tailwindcss": "^4.1.18", "title-case": "4.3.2", "to-ico": "1.1.5", + "tslib": "2.8.1", "unified": "^11.0.5", "unist": "^0.0.1", "unist-util-is": "^6.0.1", + "unist-util-visit": "^5.0.0", "uuid": "^13.0.0", + "vercel": "^50.1.3", "vite": "^7.3.0", "workbox-build": "7.4.0", "zod": "4.2.1" @@ -143,33 +176,17 @@ "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0", "@eslint/js": "9.39.2", "@happy-dom/global-registrator": "^20.0.11", - "@playwright/test": "1.57.0", "@testing-library/dom": "10.4.1", "@testing-library/preact": "3.2.4", "@testing-library/user-event": "14.6.1", "@tktco/node-actionlint": "^1.6.0", - "@types/canvas-confetti": "^1.9.0", - "@types/confusing-browser-globals": "1.0.3", - "@types/cross-spawn": "6.0.6", - "@types/dedent": "^0.7.2", - "@types/eslint": "^9.6.1", - "@types/eslint-plugin-security": "3.0.0", - "@types/glidejs__glide": "^3.6.6", - "@types/js-cookie": "^3.0.6", - "@types/jsdom": "^27.0.0", - "@types/node": "^25.0.3", - "@types/nodemailer": "^7.0.4", - "@types/react": "^19.2.7", - "@types/sanitize-html": "^2.16.0", - "@types/to-ico": "1.1.3", - "@types/uuid": "^11.0.0", - "@types/yargs": "17.0.35", "@typescript-eslint/eslint-plugin": "8.50.0", "@typescript-eslint/parser": "8.50.0", "@vitest/coverage-v8": "^4.0.16", + "alex": "^11.0.1", "confusing-browser-globals": "1.0.11", "cross-spawn": "7.0.6", - "dedent": "^1.7.0", + "dedent": "^1.7.1", "dotenv-cli": "11.0.0", "eslint": "9.39.2", "eslint-import-resolver-typescript": "^4.4.4", @@ -180,29 +197,20 @@ "eslint-plugin-security": "3.0.1", "eslint-plugin-yml": "1.19.1", "happy-dom": "^20.0.11", - "html-element-attributes": "^3.5.0", "husky": "^9.1.7", - "is-whitespace-character": "^2.0.1", - "md-attr-parser": "^1.3.0", + "jsdom": "^27.3.0", + "markdownlint-cli2": "^0.20.0", "prettier": "3.7.4", "prettier-plugin-astro": "0.14.1", - "rehype-slug": "^6.0.0", - "rehype-stringify": "^10.0.1", - "remark": "^15.0.1", - "remark-gfm": "^4.0.1", - "remark-html": "^16.0.1", - "remark-rehype": "^11.1.2", "rimraf": "6.1.2", "stylelint": "^16.26.1", "stylelint-config-standard": "^39.0.1", "stylelint-declaration-block-no-ignored-properties": "2.8.0", "stylelint-order": "7.0.0", "temp-dir": "3.0.0", - "tslib": "2.8.1", "typescript": "5.9.3", "typescript-eslint": "8.50.0", "unist-util-inspect": "^8.1.0", - "unist-util-visit": "^5.0.0", "vitest": "4.0.16", "vitest-axe": "0.1.0" }, diff --git a/playwright.config.ts b/playwright.config.ts index c59596d4b..e34d27974 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -39,7 +39,8 @@ export default defineConfig({ /* Look for test files in the "tests" directory, relative to this configuration file. */ testDir: './test/e2e/specs', /* Glob patterns or regular expressions that match test files. */ - testMatch: '**/*.spec.ts', + // @TODO: Temporarily set to just homepage to refactor CI workflow + testMatch: '01-smoke/homepage.spec.ts', /** Folder for test artifacts such as screenshots, videos, traces, etc. */ outputDir: `.cache/playwright/output/`, /** Tracked by Git LFS */ diff --git a/public/fonts/woff2.log b/public/fonts/woff2.log new file mode 100644 index 000000000..b82d7ef5a --- /dev/null +++ b/public/fonts/woff2.log @@ -0,0 +1,6020 @@ +This is METAFONT, Version 2.71828182 (preloaded base=mf 2025.8.12) 17 DEC 2025 16:38 +**woff2 mathjax-newcm.woff2 +(woff2 +! A statement can't begin with `<'. + + < +l.1 < + !DOCTYPE html> +? +! Extra tokens will be flushed. + + < +l.1 < + !DOCTYPE html> +? +! Interruption. +l.1 < + !DOCTYPE html> +? quit +OK, entering batchmode... +>> margin +! Isolated expression. + + : +l.11 margin: + 0; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.11 margin: + 0; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> padding +! Isolated expression. + + : +l.12 padding: + 20px 20px 30px; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.12 padding: + 20px 20px 30px; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -color+background +! Isolated expression. + + : +l.13 background-color: + #ffffff; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.13 background-color: + #ffffff; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.14 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.14 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> margin +! Isolated expression. + + : +l.18 margin: + 0 auto; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.18 margin: + 0 auto; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> padding +! Isolated expression. + + : +l.19 padding: + 10px 0; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.19 padding: + 10px 0; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -color+background +! Isolated expression. + + : +l.20 background-color: + #fff; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.20 background-color: + #fff; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.21 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.21 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A primary expression can't begin with `:'. + + 0 + + : +l.25 display: + -ms-flexbox; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +! Not a suitable variable. + + : +l.25 display: + -ms-flexbox; +At this point I needed to see the name of a picture variable. +(Or perhaps you have indeed presented me with one; I might +have missed it, if it wasn't followed by the proper token.) +So I'll not change anything just now. + +! Extra tokens will be flushed. + + : +l.25 display: + -ms-flexbox; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A primary expression can't begin with `:'. + + 0 + + : +l.26 display: + flex; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +! Not a suitable variable. + + : +l.26 display: + flex; +At this point I needed to see the name of a picture variable. +(Or perhaps you have indeed presented me with one; I might +have missed it, if it wasn't followed by the proper token.) +So I'll not change anything just now. + +! Extra tokens will be flushed. + + : +l.26 display: + flex; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -align-box-webkit +! Isolated expression. + + : +l.27 -webkit-box-align: + center; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.27 -webkit-box-align: + center; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Missing argument to flex. + + - +l.28 -ms-flex- + align: center; +That macro has more parameters than you thought. +I'll continue by pretending that each missing argument +is either zero or null. + +>> -ms +>> (xpart z_1,ypart z_1) +! Not implemented: (unknown numeric)-(unknown pair). + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.28 -ms-flex- + align: center; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> xpart z_1 +! Undefined x coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.28 -ms-flex- + align: center; +I need a `known' x value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> ypart z_1 +! Undefined y coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.28 -ms-flex- + align: center; +I need a `known' y value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> (xpart z_0,ypart z_0) +>> align +! Not implemented: (unknown pair)-(unknown numeric). + + : +l.28 -ms-flex-align: + center; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> align +! Undefined coordinates have been replaced by (0,0). + + : +l.28 -ms-flex-align: + center; +I need x and y numbers for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> path +! Isolated expression. + + : +l.28 -ms-flex-align: + center; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.28 -ms-flex-align: + center; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -items+align +! Isolated expression. + + : +l.29 align-items: + center; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.29 align-items: + center; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -pack-box-webkit +! Isolated expression. + + : +l.30 -webkit-box-pack: + justify; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.30 -webkit-box-pack: + justify; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Missing argument to flex. + + - +l.31 -ms-flex- + pack: justify; +That macro has more parameters than you thought. +I'll continue by pretending that each missing argument +is either zero or null. + +>> -ms +>> (xpart z_1,ypart z_1) +! Not implemented: (unknown numeric)-(unknown pair). + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.31 -ms-flex- + pack: justify; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> xpart z_1 +! Undefined x coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.31 -ms-flex- + pack: justify; +I need a `known' x value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> ypart z_1 +! Undefined y coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.31 -ms-flex- + pack: justify; +I need a `known' y value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> (xpart z_0,ypart z_0) +>> pack +! Not implemented: (unknown pair)-(unknown numeric). + + : +l.31 -ms-flex-pack: + justify; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> pack +! Undefined coordinates have been replaced by (0,0). + + : +l.31 -ms-flex-pack: + justify; +I need x and y numbers for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> path +! Isolated expression. + + : +l.31 -ms-flex-pack: + justify; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.31 -ms-flex-pack: + justify; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -content+justify +! Isolated expression. + + : +l.32 justify-content: + space-between; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.32 justify-content: + space-between; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Missing argument to flex. + + - +l.33 flex- + wrap: wrap; +That macro has more parameters than you thought. +I'll continue by pretending that each missing argument +is either zero or null. + +>> xpart z_1 +! Undefined x coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.33 flex- + wrap: wrap; +I need a `known' x value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> ypart z_1 +! Undefined y coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.33 flex- + wrap: wrap; +I need a `known' y value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> (xpart z_0,ypart z_0) +>> wrap +! Not implemented: (unknown pair)-(unknown numeric). + + : +l.33 flex-wrap: + wrap; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> wrap +! Undefined coordinates have been replaced by (0,0). + + : +l.33 flex-wrap: + wrap; +I need x and y numbers for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> path +! Isolated expression. + + : +l.33 flex-wrap: + wrap; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.33 flex-wrap: + wrap; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.34 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.34 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -height+line +! Isolated expression. + + : +l.38 line-height: + 38px; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.38 line-height: + 38px; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> margin +! Isolated expression. + + : +l.39 margin: + 0 0 15px; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.39 margin: + 0 0 15px; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.40 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.40 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -weight+font +! Isolated expression. + + : +l.44 font-weight: + 400; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.44 font-weight: + 400; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> margin +! Isolated expression. + + : +l.45 margin: + 0; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.45 margin: + 0; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.46 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.46 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> padding +! Isolated expression. + + : +l.50 padding: + 2px 12px 2px 6px; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.50 padding: + 2px 12px 2px 6px; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.51 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.51 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -size+font +! Isolated expression. + + : +l.55 font-size: + 16px; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.55 font-size: + 16px; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> color +! Isolated expression. + + : +l.56 color: + #666; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.56 color: + #666; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.57 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.57 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A primary expression can't begin with `:'. + + 0 + + : +l.61 display: + -ms-flexbox; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +! Not a suitable variable. + + : +l.61 display: + -ms-flexbox; +At this point I needed to see the name of a picture variable. +(Or perhaps you have indeed presented me with one; I might +have missed it, if it wasn't followed by the proper token.) +So I'll not change anything just now. + +! Extra tokens will be flushed. + + : +l.61 display: + -ms-flexbox; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A primary expression can't begin with `:'. + + 0 + + : +l.62 display: + flex; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +! Not a suitable variable. + + : +l.62 display: + flex; +At this point I needed to see the name of a picture variable. +(Or perhaps you have indeed presented me with one; I might +have missed it, if it wasn't followed by the proper token.) +So I'll not change anything just now. + +! Extra tokens will be flushed. + + : +l.62 display: + flex; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -align-box-webkit +! Isolated expression. + + : +l.63 -webkit-box-align: + center; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.63 -webkit-box-align: + center; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Missing argument to flex. + + - +l.64 -ms-flex- + align: center; +That macro has more parameters than you thought. +I'll continue by pretending that each missing argument +is either zero or null. + +>> -ms +>> (xpart z_1,ypart z_1) +! Not implemented: (unknown numeric)-(unknown pair). + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.64 -ms-flex- + align: center; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> xpart z_1 +! Undefined x coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.64 -ms-flex- + align: center; +I need a `known' x value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> ypart z_1 +! Undefined y coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.64 -ms-flex- + align: center; +I need a `known' y value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> (xpart z_0,ypart z_0) +>> align +! Not implemented: (unknown pair)-(unknown numeric). + + : +l.64 -ms-flex-align: + center; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> align +! Undefined coordinates have been replaced by (0,0). + + : +l.64 -ms-flex-align: + center; +I need x and y numbers for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> path +! Isolated expression. + + : +l.64 -ms-flex-align: + center; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.64 -ms-flex-align: + center; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -items+align +! Isolated expression. + + : +l.65 align-items: + center; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.65 align-items: + center; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -pack-box-webkit +! Isolated expression. + + : +l.66 -webkit-box-pack: + justify; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.66 -webkit-box-pack: + justify; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Missing argument to flex. + + - +l.67 -ms-flex- + pack: justify; +That macro has more parameters than you thought. +I'll continue by pretending that each missing argument +is either zero or null. + +>> -ms +>> (xpart z_1,ypart z_1) +! Not implemented: (unknown numeric)-(unknown pair). + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.67 -ms-flex- + pack: justify; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> xpart z_1 +! Undefined x coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.67 -ms-flex- + pack: justify; +I need a `known' x value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> ypart z_1 +! Undefined y coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.67 -ms-flex- + pack: justify; +I need a `known' y value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> (xpart z_0,ypart z_0) +>> pack +! Not implemented: (unknown pair)-(unknown numeric). + + : +l.67 -ms-flex-pack: + justify; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> pack +! Undefined coordinates have been replaced by (0,0). + + : +l.67 -ms-flex-pack: + justify; +I need x and y numbers for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> path +! Isolated expression. + + : +l.67 -ms-flex-pack: + justify; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.67 -ms-flex-pack: + justify; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -content+justify +! Isolated expression. + + : +l.68 justify-content: + space-between; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.68 justify-content: + space-between; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Missing argument to flex. + + - +l.69 flex- + wrap: wrap; +That macro has more parameters than you thought. +I'll continue by pretending that each missing argument +is either zero or null. + +>> xpart z_1 +! Undefined x coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.69 flex- + wrap: wrap; +I need a `known' x value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> ypart z_1 +! Undefined y coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.69 flex- + wrap: wrap; +I need a `known' y value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> (xpart z_0,ypart z_0) +>> wrap +! Not implemented: (unknown pair)-(unknown numeric). + + : +l.69 flex-wrap: + wrap; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> wrap +! Undefined coordinates have been replaced by (0,0). + + : +l.69 flex-wrap: + wrap; +I need x and y numbers for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> path +! Isolated expression. + + : +l.69 flex-wrap: + wrap; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.69 flex-wrap: + wrap; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> margin +! Isolated expression. + + : +l.70 margin: + 15px 0 0; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.70 margin: + 15px 0 0; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> padding +! Isolated expression. + + : +l.71 padding: + 15px 0 30px; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.71 padding: + 15px 0 30px; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A primary expression can't begin with `:'. + + 0 + + : +l.72 border-top: + 1px solid #e5e5e5; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> border-7 +! Isolated expression. + + : +l.72 border-top: + 1px solid #e5e5e5; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.72 border-top: + 1px solid #e5e5e5; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.73 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.73 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.78 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.78 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -style+list +! Isolated expression. + + : +l.82 list-style: + none; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.82 list-style: + none; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -size+font +! Isolated expression. + + : +l.83 font-size: + 18px; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.83 font-size: + 18px; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -weight+font +! Isolated expression. + + : +l.84 font-weight: + 400; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.84 font-weight: + 400; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.85 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.85 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.89 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.89 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -radius+border +! Isolated expression. + + : +l.93 border-radius: + 6px; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.93 border-radius: + 6px; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -shadow-box-webkit +! Isolated expression. + + : +l.94 -webkit-box-shadow: + 0 5px 10px -5px #dfe3e7; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.94 -webkit-box-shadow: + 0 5px 10px -5px #dfe3e7; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -shadow+box +! Isolated expression. + + : +l.95 box-shadow: + 0 5px 10px -5px #dfe3e7; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.95 box-shadow: + 0 5px 10px -5px #dfe3e7; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.96 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.96 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.101 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.101 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -bottom+border +! Isolated expression. + + : +l.105 border-bottom: + 1px solid #dfe3e7; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.105 border-bottom: + 1px solid #dfe3e7; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.106 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.106 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.110 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.110 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.114 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.114 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.118 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.118 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `text'. + + text +l.122 text + -align: left; +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + text +l.122 text + -align: left; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> padding +>> (1,0) +! Not implemented: (unknown numeric)-(pair). + + : +l.123 padding-right: + 20px; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> (1,0) +! Isolated expression. + + : +l.123 padding-right: + 20px; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.123 padding-right: + 20px; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.124 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.124 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Enormous number has been reduced. +l.127 color: #17233 + b; +I can't handle numbers bigger than about 4095.99998; +so I've changed your constant to that maximum amount. + +>> padding +>> (-1,0) +! Not implemented: (unknown numeric)-(pair). + + : +l.128 padding-left: + 5px; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> (-1,0) +! Isolated expression. + + : +l.128 padding-left: + 5px; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.128 padding-left: + 5px; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> position +! Isolated expression. + + : +l.129 position: + relative; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.129 position: + relative; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.130 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.130 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -bottom+margin +! Isolated expression. + + : +l.134 margin-bottom: + -4px; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.134 margin-bottom: + -4px; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.135 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.135 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `text'. + + text +l.139 text + -align: right; +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + text +l.139 text + -align: right; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> color +! Isolated expression. + + : +l.140 color: + #444; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.140 color: + #444; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.141 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.141 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `text'. + + text +l.145 text + -transform: uppercase; +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + text +l.145 text + -transform: uppercase; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -size+font +! Isolated expression. + + : +l.146 font-size: + 12px; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.146 font-size: + 12px; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -spacing+letter +! Isolated expression. + + : +l.147 letter-spacing: + 1px; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.147 letter-spacing: + 1px; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.148 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.148 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Enormous number has been reduced. +l.151 color: #ff5627 + ; +I can't handle numbers bigger than about 4095.99998; +so I've changed your constant to that maximum amount. + +! A statement can't begin with `text'. + + text +l.152 text + -decoration: none; +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + text +l.152 text + -decoration: none; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.153 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.153 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Enormous number has been reduced. +l.156 color: #ff5627 + ; +I can't handle numbers bigger than about 4095.99998; +so I've changed your constant to that maximum amount. + +! A statement can't begin with `text'. + + text +l.157 text + -decoration: underline; +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + text +l.157 text + -decoration: underline; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.158 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.158 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `text'. + + text +l.162 text + -align: center; +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + text +l.162 text + -align: center; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.163 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.163 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.167 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.167 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `text'. + + text +l.171 text + -overflow: ellipsis; +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + text +l.171 text + -overflow: ellipsis; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> overflow +! Isolated expression. + + : +l.172 overflow: + hidden; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.172 overflow: + hidden; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.173 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.173 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A primary expression can't begin with `:'. + + 0 + + : +l.177 display: + -webkit-box; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +! Not a suitable variable. + + : +l.177 display: + -webkit-box; +At this point I needed to see the name of a picture variable. +(Or perhaps you have indeed presented me with one; I might +have missed it, if it wasn't followed by the proper token.) +So I'll not change anything just now. + +! Extra tokens will be flushed. + + : +l.177 display: + -webkit-box; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A primary expression can't begin with `:'. + + 0 + + : +l.178 display: + -ms-flexbox; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +! Not a suitable variable. + + : +l.178 display: + -ms-flexbox; +At this point I needed to see the name of a picture variable. +(Or perhaps you have indeed presented me with one; I might +have missed it, if it wasn't followed by the proper token.) +So I'll not change anything just now. + +! Extra tokens will be flushed. + + : +l.178 display: + -ms-flexbox; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A primary expression can't begin with `:'. + + 0 + + : +l.179 display: + flex; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +! Not a suitable variable. + + : +l.179 display: + flex; +At this point I needed to see the name of a picture variable. +(Or perhaps you have indeed presented me with one; I might +have missed it, if it wasn't followed by the proper token.) +So I'll not change anything just now. + +! Extra tokens will be flushed. + + : +l.179 display: + flex; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -orient-box-webkit +! Isolated expression. + + : +l.180 -webkit-box-orient: + vertical; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.180 -webkit-box-orient: + vertical; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! An expression can't begin with `:'. + + 0 + + : +l.181 -webkit-box-direction: + normal; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +! Missing `of' has been inserted for direction. + + : +l.181 -webkit-box-direction: + normal; +I've got the first argument; will look now for the other. + +! A primary expression can't begin with `:'. + + 0 + + : +l.181 -webkit-box-direction: + normal; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +>> 0 +! Not implemented: postcontrol(known numeric)of(known numeric). + + - +direction->begingroup.postcontrol(EXPR2)of(EXPR3)- + precontrol(EXPR2)of(EXPR3)... + + : +l.181 -webkit-box-direction: + normal; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> 0 +>> 0 +! Not implemented: precontrol(known numeric)of(known numeric). + + endgroup + + : +l.181 -webkit-box-direction: + normal; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> -box-webkit +! Isolated expression. + + : +l.181 -webkit-box-direction: + normal; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.181 -webkit-box-direction: + normal; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Missing argument to flex. + + - +l.182 -ms-flex- + direction: column; +That macro has more parameters than you thought. +I'll continue by pretending that each missing argument +is either zero or null. + +>> -ms +>> (xpart z_1,ypart z_1) +! Not implemented: (unknown numeric)-(unknown pair). + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.182 -ms-flex- + direction: column; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> xpart z_1 +! Undefined x coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.182 -ms-flex- + direction: column; +I need a `known' x value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> ypart z_1 +! Undefined y coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.182 -ms-flex- + direction: column; +I need a `known' y value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +! An expression can't begin with `:'. + + 0 + + : +l.182 -ms-flex-direction: + column; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +! Missing `of' has been inserted for direction. + + : +l.182 -ms-flex-direction: + column; +I've got the first argument; will look now for the other. + +! A primary expression can't begin with `:'. + + 0 + + : +l.182 -ms-flex-direction: + column; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +>> 0 +! Not implemented: postcontrol(known numeric)of(known numeric). + + - +direction->begingroup.postcontrol(EXPR2)of(EXPR3)- + precontrol(EXPR2)of(EXPR3)... + + : +l.182 -ms-flex-direction: + column; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> 0 +>> 0 +! Not implemented: precontrol(known numeric)of(known numeric). + + endgroup + + : +l.182 -ms-flex-direction: + column; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> (xpart z_0,ypart z_0) +>> 0 +! Not implemented: (unknown pair)-(known numeric). + + : +l.182 -ms-flex-direction: + column; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> 0 +! Undefined coordinates have been replaced by (0,0). + + : +l.182 -ms-flex-direction: + column; +I need x and y numbers for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> path +! Isolated expression. + + : +l.182 -ms-flex-direction: + column; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.182 -ms-flex-direction: + column; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Missing argument to flex. + + - +l.183 flex- + direction: column; +That macro has more parameters than you thought. +I'll continue by pretending that each missing argument +is either zero or null. + +>> xpart z_1 +! Undefined x coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.183 flex- + direction: column; +I need a `known' x value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> ypart z_1 +! Undefined y coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.183 flex- + direction: column; +I need a `known' y value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +! An expression can't begin with `:'. + + 0 + + : +l.183 flex-direction: + column; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +! Missing `of' has been inserted for direction. + + : +l.183 flex-direction: + column; +I've got the first argument; will look now for the other. + +! A primary expression can't begin with `:'. + + 0 + + : +l.183 flex-direction: + column; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +>> 0 +! Not implemented: postcontrol(known numeric)of(known numeric). + + - +direction->begingroup.postcontrol(EXPR2)of(EXPR3)- + precontrol(EXPR2)of(EXPR3)... + + : +l.183 flex-direction: + column; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> 0 +>> 0 +! Not implemented: precontrol(known numeric)of(known numeric). + + endgroup + + : +l.183 flex-direction: + column; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> (xpart z_0,ypart z_0) +>> 0 +! Not implemented: (unknown pair)-(known numeric). + + : +l.183 flex-direction: + column; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> 0 +! Undefined coordinates have been replaced by (0,0). + + : +l.183 flex-direction: + column; +I need x and y numbers for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> path +! Isolated expression. + + : +l.183 flex-direction: + column; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.183 flex-direction: + column; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -pack-box-webkit +! Isolated expression. + + : +l.184 -webkit-box-pack: + justify; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.184 -webkit-box-pack: + justify; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Missing argument to flex. + + - +l.185 -ms-flex- + pack: justify; +That macro has more parameters than you thought. +I'll continue by pretending that each missing argument +is either zero or null. + +>> -ms +>> (xpart z_1,ypart z_1) +! Not implemented: (unknown numeric)-(unknown pair). + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.185 -ms-flex- + pack: justify; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> xpart z_1 +! Undefined x coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.185 -ms-flex- + pack: justify; +I need a `known' x value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> ypart z_1 +! Undefined y coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.185 -ms-flex- + pack: justify; +I need a `known' y value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> (xpart z_0,ypart z_0) +>> pack +! Not implemented: (unknown pair)-(unknown numeric). + + : +l.185 -ms-flex-pack: + justify; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> pack +! Undefined coordinates have been replaced by (0,0). + + : +l.185 -ms-flex-pack: + justify; +I need x and y numbers for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> path +! Isolated expression. + + : +l.185 -ms-flex-pack: + justify; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.185 -ms-flex-pack: + justify; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -content+justify +! Isolated expression. + + : +l.186 justify-content: + space-between; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.186 justify-content: + space-between; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> margin +! Isolated expression. + + : +l.187 margin: + 0 auto; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.187 margin: + 0 auto; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> padding +! Isolated expression. + + : +l.188 padding: + 20px 0 0 0; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.188 padding: + 20px 0 0 0; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `text'. + + text +l.189 text + -align: center; +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + text +l.189 text + -align: center; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -size+font +! Isolated expression. + + : +l.190 font-size: + 14px; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.190 font-size: + 14px; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> color +! Isolated expression. + + : +l.191 color: + #666; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.191 color: + #666; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A primary expression can't begin with `:'. + + 0 + + : +l.192 border-top: + 1px solid #edf0f2; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> border-7 +! Isolated expression. + + : +l.192 border-top: + 1px solid #edf0f2; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.192 border-top: + 1px solid #edf0f2; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.193 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.193 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A primary expression can't begin with `:'. + + 0 + + : +l.197 display: + -ms-flexbox; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +! Not a suitable variable. + + : +l.197 display: + -ms-flexbox; +At this point I needed to see the name of a picture variable. +(Or perhaps you have indeed presented me with one; I might +have missed it, if it wasn't followed by the proper token.) +So I'll not change anything just now. + +! Extra tokens will be flushed. + + : +l.197 display: + -ms-flexbox; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A primary expression can't begin with `:'. + + 0 + + : +l.198 display: + flex; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +! Not a suitable variable. + + : +l.198 display: + flex; +At this point I needed to see the name of a picture variable. +(Or perhaps you have indeed presented me with one; I might +have missed it, if it wasn't followed by the proper token.) +So I'll not change anything just now. + +! Extra tokens will be flushed. + + : +l.198 display: + flex; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -orient-box-webkit +! Isolated expression. + + : +l.199 -webkit-box-orient: + vertical; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.199 -webkit-box-orient: + vertical; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! An expression can't begin with `:'. + + 0 + + : +l.200 -webkit-box-direction: + normal; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +! Missing `of' has been inserted for direction. + + : +l.200 -webkit-box-direction: + normal; +I've got the first argument; will look now for the other. + +! A primary expression can't begin with `:'. + + 0 + + : +l.200 -webkit-box-direction: + normal; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +>> 0 +! Not implemented: postcontrol(known numeric)of(known numeric). + + - +direction->begingroup.postcontrol(EXPR2)of(EXPR3)- + precontrol(EXPR2)of(EXPR3)... + + : +l.200 -webkit-box-direction: + normal; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> 0 +>> 0 +! Not implemented: precontrol(known numeric)of(known numeric). + + endgroup + + : +l.200 -webkit-box-direction: + normal; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> -box-webkit +! Isolated expression. + + : +l.200 -webkit-box-direction: + normal; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.200 -webkit-box-direction: + normal; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Missing argument to flex. + + - +l.201 -ms-flex- + direction: column; +That macro has more parameters than you thought. +I'll continue by pretending that each missing argument +is either zero or null. + +>> -ms +>> (xpart z_1,ypart z_1) +! Not implemented: (unknown numeric)-(unknown pair). + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.201 -ms-flex- + direction: column; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> xpart z_1 +! Undefined x coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.201 -ms-flex- + direction: column; +I need a `known' x value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> ypart z_1 +! Undefined y coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.201 -ms-flex- + direction: column; +I need a `known' y value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +! An expression can't begin with `:'. + + 0 + + : +l.201 -ms-flex-direction: + column; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +! Missing `of' has been inserted for direction. + + : +l.201 -ms-flex-direction: + column; +I've got the first argument; will look now for the other. + +! A primary expression can't begin with `:'. + + 0 + + : +l.201 -ms-flex-direction: + column; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +>> 0 +! Not implemented: postcontrol(known numeric)of(known numeric). + + - +direction->begingroup.postcontrol(EXPR2)of(EXPR3)- + precontrol(EXPR2)of(EXPR3)... + + : +l.201 -ms-flex-direction: + column; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> 0 +>> 0 +! Not implemented: precontrol(known numeric)of(known numeric). + + endgroup + + : +l.201 -ms-flex-direction: + column; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> (xpart z_0,ypart z_0) +>> 0 +! Not implemented: (unknown pair)-(known numeric). + + : +l.201 -ms-flex-direction: + column; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> 0 +! Undefined coordinates have been replaced by (0,0). + + : +l.201 -ms-flex-direction: + column; +I need x and y numbers for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> path +! Isolated expression. + + : +l.201 -ms-flex-direction: + column; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.201 -ms-flex-direction: + column; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Missing argument to flex. + + - +l.202 flex- + direction: column; +That macro has more parameters than you thought. +I'll continue by pretending that each missing argument +is either zero or null. + +>> xpart z_1 +! Undefined x coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.202 flex- + direction: column; +I need a `known' x value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> ypart z_1 +! Undefined y coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.202 flex- + direction: column; +I need a `known' y value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +! An expression can't begin with `:'. + + 0 + + : +l.202 flex-direction: + column; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +! Missing `of' has been inserted for direction. + + : +l.202 flex-direction: + column; +I've got the first argument; will look now for the other. + +! A primary expression can't begin with `:'. + + 0 + + : +l.202 flex-direction: + column; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +>> 0 +! Not implemented: postcontrol(known numeric)of(known numeric). + + - +direction->begingroup.postcontrol(EXPR2)of(EXPR3)- + precontrol(EXPR2)of(EXPR3)... + + : +l.202 flex-direction: + column; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> 0 +>> 0 +! Not implemented: precontrol(known numeric)of(known numeric). + + endgroup + + : +l.202 flex-direction: + column; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> (xpart z_0,ypart z_0) +>> 0 +! Not implemented: (unknown pair)-(known numeric). + + : +l.202 flex-direction: + column; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> 0 +! Undefined coordinates have been replaced by (0,0). + + : +l.202 flex-direction: + column; +I need x and y numbers for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> path +! Isolated expression. + + : +l.202 flex-direction: + column; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.202 flex-direction: + column; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -align-box-webkit +! Isolated expression. + + : +l.203 -webkit-box-align: + center; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.203 -webkit-box-align: + center; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Missing argument to flex. + + - +l.204 -ms-flex- + align: center; +That macro has more parameters than you thought. +I'll continue by pretending that each missing argument +is either zero or null. + +>> -ms +>> (xpart z_1,ypart z_1) +! Not implemented: (unknown numeric)-(unknown pair). + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.204 -ms-flex- + align: center; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> xpart z_1 +! Undefined x coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.204 -ms-flex- + align: center; +I need a `known' x value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> ypart z_1 +! Undefined y coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.204 -ms-flex- + align: center; +I need a `known' y value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> (xpart z_0,ypart z_0) +>> align +! Not implemented: (unknown pair)-(unknown numeric). + + : +l.204 -ms-flex-align: + center; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> align +! Undefined coordinates have been replaced by (0,0). + + : +l.204 -ms-flex-align: + center; +I need x and y numbers for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> path +! Isolated expression. + + : +l.204 -ms-flex-align: + center; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.204 -ms-flex-align: + center; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -items+align +! Isolated expression. + + : +l.205 align-items: + center; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.205 align-items: + center; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -bottom+margin +! Isolated expression. + + : +l.206 margin-bottom: + 20px; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.206 margin-bottom: + 20px; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.207 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.207 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.211 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.211 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Enormous number has been reduced. +l.214 color: #79849 + a; +I can't handle numbers bigger than about 4095.99998; +so I've changed your constant to that maximum amount. + +>> margin +! Isolated expression. + + : +l.215 margin: + 0; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.215 margin: + 0; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.216 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.216 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -content+justify +! Isolated expression. + + : +l.221 justify-content: + space-around; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.221 justify-content: + space-around; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -orient-box-webkit +! Isolated expression. + + : +l.222 -webkit-box-orient: + horizontal; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.222 -webkit-box-orient: + horizontal; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! An expression can't begin with `:'. + + 0 + + : +l.223 -webkit-box-direction: + normal; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +! Missing `of' has been inserted for direction. + + : +l.223 -webkit-box-direction: + normal; +I've got the first argument; will look now for the other. + +! A primary expression can't begin with `:'. + + 0 + + : +l.223 -webkit-box-direction: + normal; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +>> 0 +! Not implemented: postcontrol(known numeric)of(known numeric). + + - +direction->begingroup.postcontrol(EXPR2)of(EXPR3)- + precontrol(EXPR2)of(EXPR3)... + + : +l.223 -webkit-box-direction: + normal; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> 0 +>> 0 +! Not implemented: precontrol(known numeric)of(known numeric). + + endgroup + + : +l.223 -webkit-box-direction: + normal; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> -box-webkit +! Isolated expression. + + : +l.223 -webkit-box-direction: + normal; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.223 -webkit-box-direction: + normal; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Missing argument to flex. + + - +l.224 -ms-flex- + direction: row; +That macro has more parameters than you thought. +I'll continue by pretending that each missing argument +is either zero or null. + +>> -ms +>> (xpart z_1,ypart z_1) +! Not implemented: (unknown numeric)-(unknown pair). + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.224 -ms-flex- + direction: row; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> xpart z_1 +! Undefined x coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.224 -ms-flex- + direction: row; +I need a `known' x value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> ypart z_1 +! Undefined y coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.224 -ms-flex- + direction: row; +I need a `known' y value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +! An expression can't begin with `:'. + + 0 + + : +l.224 -ms-flex-direction: + row; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +! Missing `of' has been inserted for direction. + + : +l.224 -ms-flex-direction: + row; +I've got the first argument; will look now for the other. + +! A primary expression can't begin with `:'. + + 0 + + : +l.224 -ms-flex-direction: + row; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +>> 0 +! Not implemented: postcontrol(known numeric)of(known numeric). + + - +direction->begingroup.postcontrol(EXPR2)of(EXPR3)- + precontrol(EXPR2)of(EXPR3)... + + : +l.224 -ms-flex-direction: + row; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> 0 +>> 0 +! Not implemented: precontrol(known numeric)of(known numeric). + + endgroup + + : +l.224 -ms-flex-direction: + row; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> (xpart z_0,ypart z_0) +>> 0 +! Not implemented: (unknown pair)-(known numeric). + + : +l.224 -ms-flex-direction: + row; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> 0 +! Undefined coordinates have been replaced by (0,0). + + : +l.224 -ms-flex-direction: + row; +I need x and y numbers for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> path +! Isolated expression. + + : +l.224 -ms-flex-direction: + row; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.224 -ms-flex-direction: + row; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Missing argument to flex. + + - +l.225 flex- + direction: row; +That macro has more parameters than you thought. +I'll continue by pretending that each missing argument +is either zero or null. + +>> xpart z_1 +! Undefined x coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.225 flex- + direction: row; +I need a `known' x value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> ypart z_1 +! Undefined y coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.225 flex- + direction: row; +I need a `known' y value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +! An expression can't begin with `:'. + + 0 + + : +l.225 flex-direction: + row; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +! Missing `of' has been inserted for direction. + + : +l.225 flex-direction: + row; +I've got the first argument; will look now for the other. + +! A primary expression can't begin with `:'. + + 0 + + : +l.225 flex-direction: + row; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +>> 0 +! Not implemented: postcontrol(known numeric)of(known numeric). + + - +direction->begingroup.postcontrol(EXPR2)of(EXPR3)- + precontrol(EXPR2)of(EXPR3)... + + : +l.225 flex-direction: + row; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> 0 +>> 0 +! Not implemented: precontrol(known numeric)of(known numeric). + + endgroup + + : +l.225 flex-direction: + row; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> (xpart z_0,ypart z_0) +>> 0 +! Not implemented: (unknown pair)-(known numeric). + + : +l.225 flex-direction: + row; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> 0 +! Undefined coordinates have been replaced by (0,0). + + : +l.225 flex-direction: + row; +I need x and y numbers for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> path +! Isolated expression. + + : +l.225 flex-direction: + row; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.225 flex-direction: + row; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.226 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.226 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.232 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.232 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! An expression can't begin with `:'. + + 0 + + : +l.236 -webkit-box-direction: + normal; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +! Missing `of' has been inserted for direction. + + : +l.236 -webkit-box-direction: + normal; +I've got the first argument; will look now for the other. + +! A primary expression can't begin with `:'. + + 0 + + : +l.236 -webkit-box-direction: + normal; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +>> 0 +! Not implemented: postcontrol(known numeric)of(known numeric). + + - +direction->begingroup.postcontrol(EXPR2)of(EXPR3)- + precontrol(EXPR2)of(EXPR3)... + + : +l.236 -webkit-box-direction: + normal; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> 0 +>> 0 +! Not implemented: precontrol(known numeric)of(known numeric). + + endgroup + + : +l.236 -webkit-box-direction: + normal; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> -box-webkit +! Isolated expression. + + : +l.236 -webkit-box-direction: + normal; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.236 -webkit-box-direction: + normal; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Missing argument to flex. + + - +l.237 -ms-flex- + direction: row; +That macro has more parameters than you thought. +I'll continue by pretending that each missing argument +is either zero or null. + +>> -ms +>> (xpart z_1,ypart z_1) +! Not implemented: (unknown numeric)-(unknown pair). + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.237 -ms-flex- + direction: row; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> xpart z_1 +! Undefined x coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.237 -ms-flex- + direction: row; +I need a `known' x value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> ypart z_1 +! Undefined y coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.237 -ms-flex- + direction: row; +I need a `known' y value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +! An expression can't begin with `:'. + + 0 + + : +l.237 -ms-flex-direction: + row; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +! Missing `of' has been inserted for direction. + + : +l.237 -ms-flex-direction: + row; +I've got the first argument; will look now for the other. + +! A primary expression can't begin with `:'. + + 0 + + : +l.237 -ms-flex-direction: + row; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +>> 0 +! Not implemented: postcontrol(known numeric)of(known numeric). + + - +direction->begingroup.postcontrol(EXPR2)of(EXPR3)- + precontrol(EXPR2)of(EXPR3)... + + : +l.237 -ms-flex-direction: + row; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> 0 +>> 0 +! Not implemented: precontrol(known numeric)of(known numeric). + + endgroup + + : +l.237 -ms-flex-direction: + row; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> (xpart z_0,ypart z_0) +>> 0 +! Not implemented: (unknown pair)-(known numeric). + + : +l.237 -ms-flex-direction: + row; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> 0 +! Undefined coordinates have been replaced by (0,0). + + : +l.237 -ms-flex-direction: + row; +I need x and y numbers for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> path +! Isolated expression. + + : +l.237 -ms-flex-direction: + row; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.237 -ms-flex-direction: + row; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Missing argument to flex. + + - +l.238 flex- + direction: row; +That macro has more parameters than you thought. +I'll continue by pretending that each missing argument +is either zero or null. + +>> xpart z_1 +! Undefined x coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.238 flex- + direction: row; +I need a `known' x value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> ypart z_1 +! Undefined y coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.238 flex- + direction: row; +I need a `known' y value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +! An expression can't begin with `:'. + + 0 + + : +l.238 flex-direction: + row; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +! Missing `of' has been inserted for direction. + + : +l.238 flex-direction: + row; +I've got the first argument; will look now for the other. + +! A primary expression can't begin with `:'. + + 0 + + : +l.238 flex-direction: + row; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +>> 0 +! Not implemented: postcontrol(known numeric)of(known numeric). + + - +direction->begingroup.postcontrol(EXPR2)of(EXPR3)- + precontrol(EXPR2)of(EXPR3)... + + : +l.238 flex-direction: + row; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> 0 +>> 0 +! Not implemented: precontrol(known numeric)of(known numeric). + + endgroup + + : +l.238 flex-direction: + row; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> (xpart z_0,ypart z_0) +>> 0 +! Not implemented: (unknown pair)-(known numeric). + + : +l.238 flex-direction: + row; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> 0 +! Undefined coordinates have been replaced by (0,0). + + : +l.238 flex-direction: + row; +I need x and y numbers for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> path +! Isolated expression. + + : +l.238 flex-direction: + row; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.238 flex-direction: + row; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A primary expression can't begin with `:'. + + 0 + + : +l.239 padding-top: + 30px; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> padding-7 +! Isolated expression. + + : +l.239 padding-top: + 30px; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.239 padding-top: + 30px; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.240 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.240 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.244 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.244 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.248 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.248 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A primary expression can't begin with `:'. + + 0 + + : +l.252 display: + -ms-flexbox; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +! Not a suitable variable. + + : +l.252 display: + -ms-flexbox; +At this point I needed to see the name of a picture variable. +(Or perhaps you have indeed presented me with one; I might +have missed it, if it wasn't followed by the proper token.) +So I'll not change anything just now. + +! Extra tokens will be flushed. + + : +l.252 display: + -ms-flexbox; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A primary expression can't begin with `:'. + + 0 + + : +l.253 display: + flex; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> 0 +! Not a suitable variable. + + : +l.253 display: + flex; +At this point I needed to see the name of a picture variable. +(Or perhaps you have indeed presented me with one; I might +have missed it, if it wasn't followed by the proper token.) +So I'll not change anything just now. + +! Extra tokens will be flushed. + + : +l.253 display: + flex; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -align-box-webkit +! Isolated expression. + + : +l.254 -webkit-box-align: + start; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.254 -webkit-box-align: + start; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Missing argument to flex. + + - +l.255 -ms-flex- + align: start; +That macro has more parameters than you thought. +I'll continue by pretending that each missing argument +is either zero or null. + +>> -ms +>> (xpart z_1,ypart z_1) +! Not implemented: (unknown numeric)-(unknown pair). + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.255 -ms-flex- + align: start; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> xpart z_1 +! Undefined x coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.255 -ms-flex- + align: start; +I need a `known' x value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> ypart z_1 +! Undefined y coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.255 -ms-flex- + align: start; +I need a `known' y value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> (xpart z_0,ypart z_0) +>> align +! Not implemented: (unknown pair)-(unknown numeric). + + : +l.255 -ms-flex-align: + start; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> align +! Undefined coordinates have been replaced by (0,0). + + : +l.255 -ms-flex-align: + start; +I need x and y numbers for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> path +! Isolated expression. + + : +l.255 -ms-flex-align: + start; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.255 -ms-flex-align: + start; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -items+align +! Isolated expression. + + : +l.256 align-items: + flex-start; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.256 align-items: + flex-start; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -pack-box-webkit +! Isolated expression. + + : +l.257 -webkit-box-pack: + justify; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.257 -webkit-box-pack: + justify; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Missing argument to flex. + + - +l.258 -ms-flex- + pack: justify; +That macro has more parameters than you thought. +I'll continue by pretending that each missing argument +is either zero or null. + +>> -ms +>> (xpart z_1,ypart z_1) +! Not implemented: (unknown numeric)-(unknown pair). + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.258 -ms-flex- + pack: justify; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> xpart z_1 +! Undefined x coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.258 -ms-flex- + pack: justify; +I need a `known' x value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> ypart z_1 +! Undefined y coordinate has been replaced by 0. + + .. +...->.. + tension.atleast1.. +flex->..._1for.k=2upto.n_-1:...z_[k]{dz_}endfor... + z_[n_] + + - +l.258 -ms-flex- + pack: justify; +I need a `known' y value for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> (xpart z_0,ypart z_0) +>> pack +! Not implemented: (unknown pair)-(unknown numeric). + + : +l.258 -ms-flex-pack: + justify; +I'm afraid I don't know how to apply that operation to that +combination of types. Continue, and I'll return the second +argument (see above) as the result of the operation. + +>> pack +! Undefined coordinates have been replaced by (0,0). + + : +l.258 -ms-flex-pack: + justify; +I need x and y numbers for this part of the path. +The value I found (see above) was no good; +so I'll try to keep going by using zero instead. +(Chapter 27 of The METAFONTbook explains that +you might want to type `I ???' now.) + +>> path +! Isolated expression. + + : +l.258 -ms-flex-pack: + justify; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.258 -ms-flex-pack: + justify; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -content+justify +! Isolated expression. + + : +l.259 justify-content: + space-between; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.259 justify-content: + space-between; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A primary expression can't begin with `:'. + + 0 + + : +l.260 margin-top: + 40px; +I'm afraid I need some sort of value in order to continue, +so I've tentatively inserted `0'. You may want to +delete this zero and insert something else; +see Chapter 27 of The METAFONTbook for an example. + +>> margin-7 +! Isolated expression. + + : +l.260 margin-top: + 40px; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.260 margin-top: + 40px; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.261 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.261 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.265 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.265 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> padding +! Isolated expression. + + : +l.270 padding: + 8px 20px 8px 12px; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.270 padding: + 8px 20px 8px 12px; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -sizing+box +! Isolated expression. + + : +l.271 box-sizing: + border-box; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.271 box-sizing: + border-box; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> margin +! Isolated expression. + + : +l.272 margin: + 0; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.272 margin: + 0; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> border +! Isolated expression. + + : +l.273 border: + 1px solid #aaa; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.273 border: + 1px solid #aaa; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -radius+border +! Isolated expression. + + : +l.274 border-radius: + .5em; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.274 border-radius: + .5em; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -appearance-moz +! Isolated expression. + + : +l.275 -moz-appearance: + none; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.275 -moz-appearance: + none; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -appearance-webkit +! Isolated expression. + + : +l.276 -webkit-appearance: + none; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.276 -webkit-appearance: + none; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> appearance +! Isolated expression. + + : +l.277 appearance: + none; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.277 appearance: + none; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -color+background +! Isolated expression. + + : +l.278 background-color: + #fff; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.278 background-color: + #fff; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -image+background +! Isolated expression. + + : +l.279 background-image: + url('https://cdn.jsdelivr.net/npm/bootstrap-icon... +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.279 background-image: + url('https://cdn.jsdelivr.net/npm/bootstrap-icon... +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -repeat+background +! Isolated expression. + + : +l.280 background-repeat: + no-repeat, repeat; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.280 background-repeat: + no-repeat, repeat; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> -position+background +! Isolated expression. + + : +l.281 background-position: + right 8px top 50%, 0 0; +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + : +l.281 background-position: + right 8px top 50%, 0 0; +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.284 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.284 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.288 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.288 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.292 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.292 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.296 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.296 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> jsdelivr.com +! Isolated expression. + + , +l.1166 ...p class="copyright">© jsdelivr.com, + 2012 - 2025

+I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + , +l.1166 ...p class="copyright">© jsdelivr.com, + 2012 - 2025

+I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Incomplete string token has been flushed. +l.1173 ...5.9,15.9,6,15.6,6,15.4c0-0.2,0-0.7,0-1.4 + +Strings should finish on the same line as they began. +I've deleted the partial string; you might want to +insert another by typing, e.g., `I"new string"'. + +! Incomplete string token has been flushed. +l.1178 C16,3.8,12.4,0.2,8,0.2z"/> + +Strings should finish on the same line as they began. +I've deleted the partial string; you might want to +insert another by typing, e.g., `I"new string"'. + +! A statement can't begin with `['. + + [ +l.1191 [ + ].slice.call(versions.querySelectorAll('option')).forEach(functio... +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + [ +l.1191 [ + ].slice.call(versions.querySelectorAll('option')).forEach(functio... +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.1194 } + +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.1194 } + +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +>> versions.addEventListener +! Isolated expression. + + ( +l.1197 versions.addEventListener( + 'change', function() { +I couldn't find an `=' or `:=' after the +expression that is shown above this error message, +so I guess I'll just ignore it and carry on. + +! Extra tokens will be flushed. + + ( +l.1197 versions.addEventListener( + 'change', function() { +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `}'. + + } +l.1199 } + ); +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + } +l.1199 } + ); +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! A statement can't begin with `<'. + + < +l.1200 < + /script> +I was looking for the beginning of a new statement. +If you just proceed without changing anything, I'll ignore +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +! Extra tokens will be flushed. + + < +l.1200 < + /script> +I've just read as much of that statement as I could fathom, +so a semicolon should have been next. It's very puzzling... +but I'll try to get myself back together, by ignoring +everything up to the next `;'. Please insert a semicolon +now in front of anything that you don't want me to delete. +(See Chapter 27 of The METAFONTbook for an example.) + +) +! File ended while scanning to the end of the statement. + + ; +<*> woff2 + mathjax-newcm.woff2 +A previous error seems to have propagated, +causing me to read past where you wanted me to stop. +I'll try to recover; but if the error is serious, +you'd better type `E' or `X' now and fix your file. + +! Emergency stop. +<*> woff2 mathjax-newcm.woff2 + +*** (job aborted, no legal end found) + + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..4ccb86cd1 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,9 @@ +actions-toolkit==0.1.15 +PyGithub==2.8.1 +libsql-client==0.3.1 +pylint==3.3.8 +pytest==8.4.2 +pytest-plus==0.8.1 +pytest-sugar==1.1.1 +pytest-xdist==3.8.0 +requests==2.32.4 \ No newline at end of file diff --git a/src/components/CallToAction/Contact/index.astro b/src/components/CallToAction/Contact/index.astro index 917d26bb4..20247bca1 100644 --- a/src/components/CallToAction/Contact/index.astro +++ b/src/components/CallToAction/Contact/index.astro @@ -82,7 +82,7 @@ const descriptionId = `${id}-description`
{primaryLink.text} {secondaryLink.text} diff --git a/src/components/CallToAction/Download/index.astro b/src/components/CallToAction/Download/index.astro index 817c10b5b..617527f26 100644 --- a/src/components/CallToAction/Download/index.astro +++ b/src/components/CallToAction/Download/index.astro @@ -100,7 +100,7 @@ const downloadUrl = `/downloads/${normalizedResource}`
{secondaryLink.text} diff --git a/src/components/CallToAction/Featured/index.astro b/src/components/CallToAction/Featured/index.astro index 94933127d..0ca33dd0a 100644 --- a/src/components/CallToAction/Featured/index.astro +++ b/src/components/CallToAction/Featured/index.astro @@ -80,7 +80,7 @@ const titleId = `${id}-title` { image && ( -
+ diff --git a/src/components/Forms/Contact/index.astro b/src/components/Forms/Contact/index.astro index fdeb7bf83..b252c8e8d 100644 --- a/src/components/Forms/Contact/index.astro +++ b/src/components/Forms/Contact/index.astro @@ -189,7 +189,7 @@ import UploadPlaceholder from './upload.astro'