From 266423fb1e28e64999c8fb1c931833778bfcf01c Mon Sep 17 00:00:00 2001 From: Mike Hardy Date: Wed, 1 Jul 2026 11:32:51 -0500 Subject: [PATCH 1/9] test: add developer-docs bundle for Playwright e2e design --- .gitignore | 3 + AGENTS.md | 12 + CONTRIBUTING.md | 2 + LOCAL_DEVELOPMENT.md | 4 + .../architecture/examples-inventory.md | 57 +++++ developer-docs/architecture/index.md | 4 + .../architecture/testing-strategy.md | 33 +++ developer-docs/decisions.md | 57 +++++ developer-docs/documentation-policy.md | 43 ++++ developer-docs/index.md | 32 +++ developer-docs/log.md | 13 ++ .../dependency-update-verification.md | 32 +++ developer-docs/playbooks/index.md | 3 + developer-docs/work-queues/index.md | 5 + .../work-queues/playwright-e2e-smoke.md | 221 ++++++++++++++++++ 15 files changed, 521 insertions(+) create mode 100644 AGENTS.md create mode 100644 developer-docs/architecture/examples-inventory.md create mode 100644 developer-docs/architecture/index.md create mode 100644 developer-docs/architecture/testing-strategy.md create mode 100644 developer-docs/decisions.md create mode 100644 developer-docs/documentation-policy.md create mode 100644 developer-docs/index.md create mode 100644 developer-docs/log.md create mode 100644 developer-docs/playbooks/dependency-update-verification.md create mode 100644 developer-docs/playbooks/index.md create mode 100644 developer-docs/work-queues/index.md create mode 100644 developer-docs/work-queues/playwright-e2e-smoke.md diff --git a/.gitignore b/.gitignore index 80a073e5..cb71e84c 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,9 @@ coverage # Firebase .firebase +# Agent ephemeral output +.agents/reports/ + # Editor directories and files .vscode/* !.vscode/extensions.json diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..87613759 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,12 @@ +# Agent entry point + +Start at [developer-docs/index.md](developer-docs/index.md). + +**Before editing documentation:** read [developer-docs/documentation-policy.md](developer-docs/documentation-policy.md). + +For architecture or testing work, also read: + +* [developer-docs/decisions.md](developer-docs/decisions.md) — `AD-` decision log +* [developer-docs/work-queues/playwright-e2e-smoke.md](developer-docs/work-queues/playwright-e2e-smoke.md) — active Playwright backlog + +Human onboarding (commands, emulator): [LOCAL_DEVELOPMENT.md](LOCAL_DEVELOPMENT.md) owns that content; do not duplicate here. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ee83fab0..0700cc98 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -28,6 +28,8 @@ This is a monorepo managed with pnpm, containing both `packages` and `examples` For a step-by-step guide on running the project locally (emulator setup, watch mode, example apps), see [LOCAL_DEVELOPMENT.md](LOCAL_DEVELOPMENT.md). +Architecture decisions, testing strategy, and agent-oriented docs live in the [developer-docs/](developer-docs/index.md) OKF bundle. Read [developer-docs/documentation-policy.md](developer-docs/documentation-policy.md) before editing that tree. + #### Building Build all packages: diff --git a/LOCAL_DEVELOPMENT.md b/LOCAL_DEVELOPMENT.md index c32149bb..47ca0a89 100644 --- a/LOCAL_DEVELOPMENT.md +++ b/LOCAL_DEVELOPMENT.md @@ -144,7 +144,11 @@ Start the emulator first, then: ```bash # All tests: pnpm test +``` + +Planned example browser smoke tests (`pnpm test:e2e`) are described in [developer-docs/work-queues/playwright-e2e-smoke.md](developer-docs/work-queues/playwright-e2e-smoke.md). +```bash # Watch mode (core, react, angular): pnpm test:watch diff --git a/developer-docs/architecture/examples-inventory.md b/developer-docs/architecture/examples-inventory.md new file mode 100644 index 00000000..590df25b --- /dev/null +++ b/developer-docs/architecture/examples-inventory.md @@ -0,0 +1,57 @@ +--- +type: Reference +title: Examples inventory +description: How each monorepo example is started, which port it uses, and emulator requirements. +resource: firebaseui-web/examples/ +tags: [examples, monorepo, emulator] +timestamp: 2026-07-01T00:00:00Z +--- + +# Workspace layout + +pnpm workspace members: `packages/*`, `examples/*` ([pnpm-workspace.yaml](../../pnpm-workspace.yaml)). Examples consume `@firebase-oss/ui-*` via `workspace:*`. + +# Examples in scope for e2e smoke + +| Example | pnpm filter | Dev command | Default port | E2E port | Emulator in dev | Smoke type | +|---------|-------------|-------------|--------------|----------|-----------------|------------| +| react | `react` | `vite` | 5173 | 5173 | `import.meta.env.MODE === "development"` → `:9099` | browser (S1–S3) | +| shadcn | `shadcn` | `vite` | 5173 | 5174 | same as react | browser (S1–S3) | +| nextjs (SSG) | `nextjs` | `next dev --turbopack` | 3000 | 3000 | `NODE_ENV === "development"` → `:9099` | browser (S1–S3) | +| nextjs-ssr | `nextjs-ssr` | `next dev` | 3000 | 3001 | same as nextjs | browser (S1–S3) | +| angular-example | `angular-example` | `run start` (`clean && ng serve`) | 4200 | 4200 | `isDevMode()` → `:9099` | browser (S1–S3) | +| custom-auth-server | `custom-auth-server` | `start` (built Express) | 4000 (`PORT`) | 4001 | n/a (uses `firebase-admin`) | HTTP boot + `fetch`/`curl` | + +**Port configurability:** not pinned in `vite.config.ts` / `next.config.ts`. All examples accept CLI/`PORT` overrides for e2e; Playwright's per-project `webServer` owns lifecycle. See [AD-4](../decisions.md#ad-4-playwright-managed-dev-servers-serial-shared-emulator). + +**custom-auth-server port:** default `:4000` collides with the Firebase Emulator UI (`:4000`), so e2e binds `:4001` — [AD-6](../decisions.md#ad-6-custom-auth-server-binds-4001-for-e2e). Its smoke is non-browser (boot + HTTP assert); it is not in root `pnpm build`. + +**Angular:** e2e reuses the package `start` script (`pnpm clean && ng serve`) so the `.angular/cache` clean is not duplicated — [AD-4](../decisions.md#ad-4-playwright-managed-dev-servers-serial-shared-emulator). + +**Auth behaviors affecting smoke:** react/shadcn use `oneTapSignIn`; nextjs/nextjs-ssr use `autoAnonymousLogin`. Neither hides the sign-in form (`SignInAuthScreen` renders regardless of auth state), so E2E flags are optional — [AD-5](../decisions.md#ad-5-auth-behavior-e2e-flags-are-optional-only-if-flaky). The One Tap external script is blocked in the harness. + +**Next.js paths:** both nextjs (SSG) and nextjs-ssr use `trailingSlash: true` — e2e URLs end with `/` (e.g. `/screens/sign-in-auth-screen-w-handlers/`). + +**Forgot-password route varies per example** (S3 asserts rendered UI, not a fixed path): + +| Example | Forgot-password route from sign-in-with-handlers | +|---------|--------------------------------------------------| +| react, angular-example | `/screens/forgot-password-auth-screen` | +| shadcn | `/screens/forgot-password-screen` | +| nextjs, nextjs-ssr | `/screens/forgot-password-auth-screen` | + +# Shared prerequisites + +1. `pnpm install` +2. `pnpm build:packages` (or full `pnpm build` in CI) +3. Auth emulator: `pnpm emulators` → `http://localhost:9099` ([firebase.json](../../firebase.json)) + +Procedural steps: [LOCAL_DEVELOPMENT.md](../../LOCAL_DEVELOPMENT.md) (owner for command copy-paste). + +# Smoke test entry path (all UI examples) + +Deep-link: `/screens/sign-in-auth-screen-w-handlers` (with trailing slash for Next). Details: [work-queues/playwright-e2e-smoke.md](../work-queues/playwright-e2e-smoke.md). + +# Citations + +[1] [LOCAL_DEVELOPMENT.md](../../LOCAL_DEVELOPMENT.md) diff --git a/developer-docs/architecture/index.md b/developer-docs/architecture/index.md new file mode 100644 index 00000000..d715cc7a --- /dev/null +++ b/developer-docs/architecture/index.md @@ -0,0 +1,4 @@ +# Architecture + +* [examples-inventory.md](examples-inventory.md) — example apps, ports, dev commands, emulator wiring +* [testing-strategy.md](testing-strategy.md) — unit, build, and e2e verification layers diff --git a/developer-docs/architecture/testing-strategy.md b/developer-docs/architecture/testing-strategy.md new file mode 100644 index 00000000..cc289809 --- /dev/null +++ b/developer-docs/architecture/testing-strategy.md @@ -0,0 +1,33 @@ +--- +type: Reference +title: Testing strategy +description: Verification layers for firebaseui-web packages and examples. +tags: [testing, ci, playwright] +timestamp: 2026-07-01T00:00:00Z +--- + +# Layers + +| Layer | Command | Owner doc | Catches | +|-------|---------|-----------|---------| +| Package unit tests | `pnpm test` | [CONTRIBUTING.md](../../CONTRIBUTING.md) | Core/react/angular/shadcn/translations/styles logic | +| Compile (packages + examples) | `pnpm build` | [CONTRIBUTING.md](../../CONTRIBUTING.md) | TS, bundler, framework build errors | +| Lint / format | `pnpm lint:check`, `pnpm format:check` | [CONTRIBUTING.md](../../CONTRIBUTING.md) | Style regressions | +| Example smoke (browser + HTTP) | `pnpm test:e2e` | [work-queues/playwright-e2e-smoke.md](../work-queues/playwright-e2e-smoke.md) | Example dev-server load + basic UI interactivity (five UI examples) and `custom-auth-server` HTTP boot | +| Security audit | `pnpm audit` | [playbooks/dependency-update-verification.md](../playbooks/dependency-update-verification.md) | Known CVEs in lockfile | + +# CI today + +[`.github/workflows/test.yaml`](../../.github/workflows/test.yaml): `pnpm build`, Auth emulator start, `pnpm test`. **No browser smoke yet** — target of Playwright work queue. e2e will land as a **separate workflow** with broad path triggers — [AD-7](../decisions.md#ad-7-e2e-runs-in-a-separate-ci-workflow-with-broad-triggers). + +# Gaps + +* No example-level automated tests yet (Angular example `vitest` has no spec files) — closed by the Playwright work queue. +* Skipped package integration tests (`describe.skip`). +* `custom-auth-server` not built by root `build` (e2e builds it on demand). +* Production build artifacts not exercised by e2e — deferred, [AD-8](../decisions.md#ad-8-production-artifact-e2e-deferred-future-phase). +* `pnpm audit` not gated in CI. + +# Post-dependency-update gate (target) + +See [playbooks/dependency-update-verification.md](../playbooks/dependency-update-verification.md). diff --git a/developer-docs/decisions.md b/developer-docs/decisions.md new file mode 100644 index 00000000..80c379ab --- /dev/null +++ b/developer-docs/decisions.md @@ -0,0 +1,57 @@ +--- +type: Decision Log +title: Architecture decisions +description: Sequential decision log for firebaseui-web. Entries use AD-number identifiers. +tags: [adr, architecture] +timestamp: 2026-07-01T00:00:00Z +--- + +Decisions follow the shape in [ADR format (mattpocock)](https://github.com/mattpocock/skills/blob/main/skills/engineering/domain-modeling/ADR-FORMAT.md) (read that spec only during documentation maintenance runs). + +--- + +## AD-1: Dependabot cooldown per ecosystem + +Dependabot version-update PRs use a **7-day cooldown** on all ecosystems. Semver cooldown fields (`semver-major-days`, `semver-minor-days`, `semver-patch-days`) are set to 7 only where [GitHub documents SemVer-bump support](https://docs.github.com/en/code-security/reference/supply-chain-security/dependabot-options-reference#cooldown) for that package manager. GitHub Actions blocks use `default-days: 7` only. Initial config PRs (#1378 Android/iOS) merged without full cooldown; follow-ups align configs (#1380 web, #2355 Android, #1367 iOS). + +--- + +## AD-2: developer-docs OKF bundle at repository root + +Durable human+agent knowledge lives in `developer-docs/` as an [OKF v0.1](https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md) bundle. Root guides (`LOCAL_DEVELOPMENT.md`, etc.) remain the owners for contributor onboarding commands; this bundle owns architecture, decisions, playbooks, and work queues. Agents should start at [developer-docs/index.md](index.md) or [AGENTS.md](../AGENTS.md). + +--- + +## AD-3: Playwright example smoke tests (MVP scope, dev-server) + +Example apps are verified with **Playwright smoke tests**, not full user-flow e2e. MVP per UI example (react, shadcn, nextjs, nextjs-ssr, angular): deep-link to the sign-in-with-handlers screen, assert form render, empty submit shows validation, and the forgot-password control navigates to a rendered forgot-password screen. Assertions target **rendered UI**, not exact URLs, because the forgot-password route differs per example ([examples-inventory.md](architecture/examples-inventory.md)). `custom-auth-server` is covered by a **non-browser boot + HTTP smoke** ([AD-6](#ad-6-custom-auth-server-binds-4001-for-e2e)), not a browser flow. Smoke runs against **dev servers**, which auto-connect the Auth emulator in dev mode; production build artifacts are out of MVP ([AD-8](#ad-8-production-artifact-e2e-deferred-future-phase)). Out of MVP: OAuth, phone/MFA, real sign-in. Package unit tests (`pnpm test`) and compile checks (`pnpm build`) remain necessary but insufficient for runtime UI regression. + +--- + +## AD-4: Playwright-managed dev servers, serial, shared emulator + +Each example has a **unique e2e port** (react 5173, shadcn 5174, nextjs 3000, nextjs-ssr 3001, angular 4200, custom-auth-server 4001). Playwright's per-project **`webServer`** starts each example's dev server, waits for its URL, and stops it — replacing hand-rolled preflight/postflight/PID scripts. Execution is **serial** (`workers: 1`, one dev server up at a time selected via `E2E_PROJECT`) for resource predictability and clean logs; because ports are unique, parallelization is possible later but deferred ([Deferred](work-queues/playwright-e2e-smoke.md#deferred)). **`globalSetup`** builds packages (`build:packages`, asserting `dist/` exists — examples consume built `@firebase-oss/ui-*`) and ensures a single Auth emulator on `:9099` for the whole run; **`globalTeardown`** stops what it started. Angular reuses its package `start` semantics (`pnpm clean && ng serve`) rather than duplicating the `.angular/cache` clean. + +--- + +## AD-5: Auth-behavior E2E flags are optional (only if flaky) + +`SignInAuthScreen` renders the email/password form **regardless of auth state** (verified: no redirect or hide on `currentUser`; it only fires an `onSignIn` callback). Therefore `autoAnonymousLogin` (nextjs, nextjs-ssr) and `oneTapSignIn` (react, shadcn) do **not** block the smoke form-render assertions, and the E2E env flags (`VITE_E2E` / `NEXT_PUBLIC_E2E`) that skip these behaviors are a **flakiness mitigation, not a prerequisite** — decoupled from the test phase. The external One Tap script (`accounts.google.com`) is neutralized in the harness via a **documented Playwright `page.route` block**; the env flags are a backup only if that proves insufficient. Owner for emulator connection rules: [architecture/examples-inventory.md](architecture/examples-inventory.md). + +--- + +## AD-6: custom-auth-server binds :4001 for e2e + +The Express `custom-auth-server` defaults to `:4000`, which collides with the **Firebase Emulator UI** (`:4000`). For e2e it binds **`:4001`** (via its `PORT` env) so it never conflicts with emulator services. Its smoke is a **non-browser boot + HTTP (`fetch`/`curl`) assertion** — start the built server, assert it responds, tear down — not a Playwright browser flow. This brings every monorepo example (including `custom-auth-server`) under automated e2e coverage. + +--- + +## AD-7: e2e runs in a separate CI workflow with broad triggers + +Browser smoke runs in its **own workflow**, not folded into the unit `test.yaml`. Path-filtering is intentionally **broad**: examples depend on `packages/**` (built `@firebase-oss/ui-*`), the root `package.json`, `pnpm-lock.yaml`, and the `pnpm-workspace.yaml` catalog, so narrow `examples/**`-only filters would miss real regressions. Triggers therefore include packages, examples, root manifests, lockfile, workspace catalog, and the e2e/workflow files themselves. Playwright browser binaries are **cached keyed on the resolved Playwright version** so the cache restores the actual browser artifact; Chromium-only for MVP. + +--- + +## AD-8: Production-artifact e2e deferred (future phase) + +MVP validates **dev-server runtime only**. Validating built/deployed artifacts — Next.js SSG `output: "export"`, Angular production build, `next start` SSR, and `firebase.json` hosting rewrites — is a recognized gap: dev mode auto-connects the emulator via `import.meta.env.MODE` / `process.env.NODE_ENV` / `isDevMode()`, so production builds would need explicit emulator wiring. This is tracked as a **future design phase and is intentionally NOT in the MVP work queue** ([work-queues/playwright-e2e-smoke.md](work-queues/playwright-e2e-smoke.md)). diff --git a/developer-docs/documentation-policy.md b/developer-docs/documentation-policy.md new file mode 100644 index 00000000..bf896c27 --- /dev/null +++ b/developer-docs/documentation-policy.md @@ -0,0 +1,43 @@ +--- +type: Policy +title: Documentation policy +description: Rules for authoring and maintaining firebaseui-web documentation for humans and agents. +tags: [documentation, agents, okf] +timestamp: 2026-07-01T00:00:00Z +--- + +# Scope + +Applies to all durable documentation in this repository: the [developer-docs](index.md) OKF bundle, root markdown guides, package READMEs, and inline doc comments when they carry architectural meaning. + +**Read this document before editing any documentation.** + +# Principles + +* **Be concise.** Prefer short sentences, tables, and lists over long prose. If a fact fits in one line, do not use a paragraph. +* **Durable artifacts only.** Commits, code, and docs are long-lived. Do not store ephemeral work-queue state, session notes, or "current sprint" references in them unless the file lives under [work-queues/](work-queues/) and is explicitly treated as a living backlog. +* **Single owner per fact (document contract).** Each information item is owned by exactly one document (which may be outside this bundle). Other documents **refer** to that owner with a link; they do not duplicate the content. When the fact changes, update the owner only. + +# OKF bundle conventions + +* Bundle root: `developer-docs/` ([index.md](index.md)). +* Concept files: YAML frontmatter with required `type`; see [OKF v0.1](https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md) (consult the spec only during documentation maintenance runs, not on every code change). +* Decisions: append to [decisions.md](decisions.md) as `AD-` entries. ADR shape follows [mattpocock ADR format](https://github.com/mattpocock/skills/blob/main/skills/engineering/domain-modeling/ADR-FORMAT.md) (consult that spec only during documentation maintenance runs). +* Work queues: living backlogs under [work-queues/](work-queues/); may name phases and task IDs; not cited as normative architecture. + +# Where to put new content + +| Content | Owner document | +|---------|----------------| +| Architecture shape, inventories | `developer-docs/architecture/` | +| Hard-to-reverse decisions | `developer-docs/decisions.md` | +| Step-by-step procedures | `developer-docs/playbooks/` or root guides (pick one owner) | +| Implementation backlogs | `developer-docs/work-queues/` | +| Contributor onboarding | [CONTRIBUTING.md](../../CONTRIBUTING.md) | +| Local dev commands | [LOCAL_DEVELOPMENT.md](../../LOCAL_DEVELOPMENT.md) | +| Agent ephemeral output | `.agents/reports/` (gitignored) | + +# Citations + +[1] [Open Knowledge Format v0.1](https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md) +[2] [ADR format (mattpocock)](https://github.com/mattpocock/skills/blob/main/skills/engineering/domain-modeling/ADR-FORMAT.md) diff --git a/developer-docs/index.md b/developer-docs/index.md new file mode 100644 index 00000000..4aa85811 --- /dev/null +++ b/developer-docs/index.md @@ -0,0 +1,32 @@ +--- +okf_version: "0.1" +--- + +# developer-docs + +OKF knowledge bundle for firebaseui-web: architecture, decisions, playbooks, and work queues. + +**Before editing any file in this bundle:** read [documentation-policy.md](documentation-policy.md). + +# Start here + +* [documentation-policy.md](documentation-policy.md) — rules for writing and maintaining docs in this repo +* [decisions.md](decisions.md) — architecture decision log (`AD-` entries) + +# Architecture + +* [architecture/](architecture/) — monorepo layout, examples inventory, testing strategy + +# Playbooks + +* [playbooks/](playbooks/) — repeatable procedures (dependency updates, local verification) + +# Work queues + +* [work-queues/](work-queues/) — phased implementation backlogs (may contain ephemeral task state) + +# Related docs (outside this bundle) + +* [LOCAL_DEVELOPMENT.md](../LOCAL_DEVELOPMENT.md) — human onboarding: emulator, dev servers, package watch +* [GETTING_STARTED.md](../GETTING_STARTED.md) — library consumer getting started +* [CONTRIBUTING.md](../CONTRIBUTING.md) — contribution workflow and CI expectations diff --git a/developer-docs/log.md b/developer-docs/log.md new file mode 100644 index 00000000..4b91cbde --- /dev/null +++ b/developer-docs/log.md @@ -0,0 +1,13 @@ +# developer-docs Update Log + +## 2026-07-02 + +* **Update**: Revised AD-3/AD-4/AD-5 and added AD-6/AD-7/AD-8 in [decisions.md](decisions.md) after the Playwright e2e feasibility review (Playwright `webServer`/`globalSetup` orchestration; `custom-auth-server` on `:4001`; separate broadly-triggered e2e CI workflow; dev-server-only MVP with production-artifact validation deferred). +* **Update**: Rewrote [work-queues/playwright-e2e-smoke.md](work-queues/playwright-e2e-smoke.md) — renumbered phases (react vertical slice first), added an orchestrator-processable gate tracker using neutral OKF work-queue field conventions, and folded in all review findings. +* **Update**: Refreshed [architecture/examples-inventory.md](architecture/examples-inventory.md) (custom-auth-server in scope, forgot-password route divergence, optional auth flags), [architecture/testing-strategy.md](architecture/testing-strategy.md), and [playbooks/dependency-update-verification.md](playbooks/dependency-update-verification.md). + +## 2026-07-01 + +* **Creation**: Initialized OKF bundle at `/developer-docs/` with policy, decisions log, architecture references, playbooks, and Playwright e2e work queue. +* **Update**: Recorded AD-1 through AD-5 in [decisions.md](decisions.md). +* **Update**: Added `.agents/reports/` to repository `.gitignore`. diff --git a/developer-docs/playbooks/dependency-update-verification.md b/developer-docs/playbooks/dependency-update-verification.md new file mode 100644 index 00000000..e5bc56f3 --- /dev/null +++ b/developer-docs/playbooks/dependency-update-verification.md @@ -0,0 +1,32 @@ +--- +type: Playbook +title: Dependency update verification +description: Steps to validate firebaseui-web after updating dependencies to current stable. +tags: [dependencies, security, e2e] +timestamp: 2026-07-01T00:00:00Z +--- + +# When to use + +After bumping dependencies in the monorepo root, `packages/*`, `examples/*`, or `pnpm-workspace.yaml` catalog. + +# Steps + +1. `pnpm install` +2. `pnpm build` — compile all packages and five UI examples +3. `pnpm test` — package unit tests (emulator optional for skipped integration tests) +4. `pnpm lint:check` && `pnpm format:check` +5. `pnpm audit` — triage high/critical; example-path advisories called out in PR +6. `pnpm test:e2e` — serial example smoke across all examples incl. `custom-auth-server` HTTP boot (once Playwright queue is complete) + +# CI parity + +Match [`.github/workflows/test.yaml`](../../.github/workflows/test.yaml) plus future e2e job from [work-queues/playwright-e2e-smoke.md](../work-queues/playwright-e2e-smoke.md). + +# Owners + +| Topic | Document | +|-------|----------| +| Example ports and commands | [architecture/examples-inventory.md](../architecture/examples-inventory.md) | +| E2E scope | [decisions.md](../decisions.md) (AD-3, AD-4) | +| Local emulator setup | [LOCAL_DEVELOPMENT.md](../../LOCAL_DEVELOPMENT.md) | diff --git a/developer-docs/playbooks/index.md b/developer-docs/playbooks/index.md new file mode 100644 index 00000000..b01da9c5 --- /dev/null +++ b/developer-docs/playbooks/index.md @@ -0,0 +1,3 @@ +# Playbooks + +* [dependency-update-verification.md](dependency-update-verification.md) — verify monorepo after dependency bumps diff --git a/developer-docs/work-queues/index.md b/developer-docs/work-queues/index.md new file mode 100644 index 00000000..cf978860 --- /dev/null +++ b/developer-docs/work-queues/index.md @@ -0,0 +1,5 @@ +# Work queues + +Living implementation backlogs. Task IDs and phases may change; do not treat as normative architecture — see [documentation-policy.md](../documentation-policy.md). + +* [playwright-e2e-smoke.md](playwright-e2e-smoke.md) — Playwright example smoke tests and CI diff --git a/developer-docs/work-queues/playwright-e2e-smoke.md b/developer-docs/work-queues/playwright-e2e-smoke.md new file mode 100644 index 00000000..f4a179ec --- /dev/null +++ b/developer-docs/work-queues/playwright-e2e-smoke.md @@ -0,0 +1,221 @@ +--- +type: Work Queue +title: Playwright example e2e smoke +description: Phased, orchestrator-processable backlog to add Playwright smoke tests for every monorepo example, run them locally and in CI, then harden dependencies. +tags: [playwright, e2e, work-queue] +timestamp: 2026-07-01T00:00:00Z +status: active +--- + +# Goal + +A fully automated e2e framework that validates each monorepo example **loads and responds to basic interaction**, runnable by **local invocation and in CI**, with one minimum-viable smoke per example. Normative scope: [AD-3](../decisions.md#ad-3-playwright-example-smoke-tests-mvp-scope-dev-server). Execution model: [AD-4](../decisions.md#ad-4-playwright-managed-dev-servers-serial-shared-emulator). Production-artifact validation is deferred: [AD-8](../decisions.md#ad-8-production-artifact-e2e-deferred-future-phase). + +# Work-queue conventions + +Ephemeral tracker; policy: [documentation-policy.md](../documentation-policy.md). This queue records **state** (gates, next step) using neutral OKF work-queue field conventions — not agent roles, dispatch, or session choreography. + +**Work types** (`next_work_type`): `gap-analysis` (read-only feasibility) · `implementation` (author code + tests) · `independent-review` (verify a frozen diff) · `documentation` (durable doc/OKF updates) · `commit` (one focused commit). + +**Validation tiers** (`validation_tier`), mapped to this repo: + +| Tier | Meaning here | +|------|--------------| +| `unit-focused` | Fast local check while authoring: `pnpm build:packages`, the targeted example's spec (`pnpm test:e2e:`), `pnpm lint:check` on the diff | +| `area-focused` | Full smoke for the changed example(s) on a frozen tree, plus `pnpm test` / lint / format as applicable | +| `full` | `pnpm build` + `pnpm test` + whole `pnpm test:e2e` across all examples before merge | + +**Gates** (`open` | `closed`): `implementation_gate` (implementation complete + `unit-focused` green) · `review_gate` (independent review complete on frozen tree + `area-focused` green) · `commit_gate` (durable commit exists whose subject matches `commit_subject`). Code with `review_gate: open` is untrusted until review closes it. `commit_subject` is the planned Conventional Commit subject, set **before** `git commit` and staged in the same commit; never record SHAs. + +# Smoke scenarios (MVP) + +Per UI example, one shared spec (parameterized per project). Assert on **rendered UI, not exact URLs** — the forgot-password route differs per example ([examples-inventory.md](../architecture/examples-inventory.md)); [AD-3](../decisions.md#ad-3-playwright-example-smoke-tests-mvp-scope-dev-server). + +| Step | Action | Pass criterion | +|------|--------|----------------| +| S1 | `goto` sign-in-with-handlers path | Email + password fields and submit button visible | +| S2 | Click submit (empty) | Validation feedback (no successful auth required) | +| S3 | Click forgot-password control | Forgot-password screen renders (assert heading/email field, not a fixed path) | + +`custom-auth-server` is **not** a browser flow: boot the built Express server on `:4001` and assert an HTTP response ([AD-6](../decisions.md#ad-6-custom-auth-server-binds-4001-for-e2e)). + +# Orchestration model + +Playwright manages each example's dev server; no hand-rolled preflight/postflight/PID scripts ([AD-4](../decisions.md#ad-4-playwright-managed-dev-servers-serial-shared-emulator)). + +``` +scripts/e2e-run.mjs (pnpm test:e2e) + → build:packages once (assert dist/) + → start Auth emulator once (:9099, shared) + → for each example in [react, shadcn, nextjs, nextjs-ssr, angular, custom-auth-server]: + playwright test (E2E_PROJECT=) + → globalSetup: assert packages built + emulator reachable + → project webServer: start dev server on its port, wait for URL + → run smoke spec(s) for the project + → webServer: stop dev server + → stop emulator (globalTeardown / runner) +``` + +* **Serial:** `workers: 1`; `E2E_PROJECT` selects the single project + `webServer` so one dev server is up at a time. +* **Emulator:** started once by the runner (or first `globalSetup`, reuse-aware); shared `:9099`; stopped once. +* **Per-example debug:** `pnpm test:e2e:react` runs one project; `globalSetup` starts the emulator with reuse if not already running. + +# Port map (e2e servers) + +| Example | Port | Dev server command (e2e) | +|---------|------|---------------------------| +| react | 5173 | `pnpm --filter=react exec vite --port 5173 --strictPort` | +| shadcn | 5174 | `pnpm --filter=shadcn exec vite --port 5174 --strictPort` | +| nextjs | 3000 | `pnpm --filter=nextjs exec next dev --turbopack -p 3000` | +| nextjs-ssr | 3001 | `pnpm --filter=nextjs-ssr exec next dev -p 3001` (generous `webServer.timeout`, no turbopack) | +| angular-example | 4200 | `pnpm --filter=angular-example run start -- --port 4200` (reuses `clean && ng serve`) | +| custom-auth-server | 4001 | `PORT=4001 pnpm --filter=custom-auth-server start` (HTTP smoke only) | + +Auth emulator `:9099`; Emulator UI `:4000` (why custom-auth-server uses `:4001`). Ports are unique, so parallel e2e is possible later — deferred ([AD-4](../decisions.md#ad-4-playwright-managed-dev-servers-serial-shared-emulator)). + +# Proposed root scripts (not implemented yet) + +| Script | Purpose | +|--------|---------| +| `test:e2e` | Serial runner (`scripts/e2e-run.mjs`) over all examples | +| `test:e2e:react` | react only | +| `test:e2e:shadcn` | shadcn only | +| `test:e2e:nextjs` | nextjs only | +| `test:e2e:nextjs-ssr` | nextjs-ssr only | +| `test:e2e:angular` | angular-example only | +| `test:e2e:custom-auth-server` | custom-auth-server HTTP smoke only | + +# Per-item iteration protocol + +Each item runs one serial loop; the queue records the outcome after each step. + +| Step | Work type | Closes gate | +|------|-----------|-------------| +| 1 | `implementation` | `implementation_gate` (`unit-focused` green) | +| 2 | `independent-review` | `review_gate` (frozen tree, `area-focused` green; blocking findings → back to step 1) | +| 3 | `documentation` | — (only if durable docs/OKF changed) | +| 4 | `commit` | `commit_gate` (set `commit_subject`, stage queue with product change) | + +# Work items + +## Phase 1 — React vertical slice (infra + first test + CI proof) + +Prove the whole model end-to-end on one example before generalizing ([review finding #13](#review-notes)). + +| ID | Task | Depends | Done when | +|----|------|---------|-----------| +| 1.1 | `e2e/` workspace package; `@playwright/test` pinned via pnpm catalog; skeleton `playwright.config.ts` | — | Package installs; empty config runs | +| 1.2 | `globalSetup`/`globalTeardown`: run `build:packages` and assert `dist/`; ensure/start shared Auth emulator on `:9099`; stop what it started | 1.1 | Setup fails fast with clear errors; emulator reused if already up | +| 1.3 | `e2e/fixtures/example-meta.ts`: seed react (baseURL, sign-in path, trailing-slash rule, forgot-password target) | 1.1 | Per-example path rules centralized | +| 1.4 | react project `webServer` (`vite --port 5173 --strictPort`); harness `page.route` block of `accounts.google.com` **with a comment explaining why** (One Tap external/flaky — [AD-5](../decisions.md#ad-5-auth-behavior-e2e-flags-are-optional-only-if-flaky)) | 1.2, 1.3 | react dev server managed by Playwright; One Tap script never loaded | +| 1.5 | `e2e/tests/sign-in-handlers.spec.ts` S1–S3, asserting rendered UI, parameterized per project | 1.4 | react smoke green locally | +| 1.6 | Minimal CI job proving react e2e runs green (browser install + emulator + `test:e2e:react`) | 1.5 | react smoke green in CI | + +## Phase 2 — Generalize to remaining UI examples + +| ID | Task | Depends | Done when | +|----|------|---------|-----------| +| 2.1 | shadcn project + meta (`vite --port 5174`; forgot-password → `/screens/forgot-password-screen`) | 1.5 | shadcn smoke green | +| 2.2 | nextjs project + meta (`next dev -p 3000`; `trailingSlash`) | 1.5 | nextjs smoke green | +| 2.3 | nextjs-ssr project + meta (`next dev -p 3001`; generous `webServer.timeout`) | 1.5 | nextjs-ssr smoke green | +| 2.4 | angular-example project + meta (reuse `run start -- --port 4200`, i.e. `clean && ng serve`) | 1.5 | angular smoke green | +| 2.5 | `scripts/e2e-run.mjs` serial runner + root `test:e2e` / `test:e2e:` scripts | 2.1–2.4 | `pnpm test:e2e` runs all UI examples serially | + +## Phase 3 — CI hardening + +| ID | Task | Depends | Done when | +|----|------|---------|-----------| +| 3.1 | Separate `e2e` workflow: `playwright install --with-deps chromium` with **browser cache keyed on resolved Playwright version**; `pnpm build`; enable webframeworks; emulator; `pnpm test:e2e` | 2.5 | e2e green on PRs; browsers cached across runs | +| 3.2 | Broad path triggers: `packages/**`, `examples/**`, root `package.json`, `pnpm-lock.yaml`, `pnpm-workspace.yaml`, `e2e/**`, workflow file ([AD-7](../decisions.md#ad-7-e2e-runs-in-a-separate-ci-workflow-with-broad-triggers)) | 3.1 | Relevant PRs trigger e2e; shared-dependency changes not missed | + +## Phase 4 — custom-auth-server smoke + +| ID | Task | Depends | Done when | +|----|------|---------|-----------| +| 4.1 | Bind `custom-auth-server` to `:4001` for e2e; boot built server + assert HTTP response (non-browser); wire into runner + CI ([AD-6](../decisions.md#ad-6-custom-auth-server-binds-4001-for-e2e)) | 2.5, 3.1 | custom-auth-server smoke green locally and in CI | + +## Phase 5 — Optional auth-behavior flags (only if flaky) + +Skip entirely unless Phase 1–2 prove flaky ([AD-5](../decisions.md#ad-5-auth-behavior-e2e-flags-are-optional-only-if-flaky)). + +| ID | Task | Depends | Done when | +|----|------|---------|-----------| +| 5.1 | react + shadcn: skip `oneTapSignIn` when `VITE_E2E=1` | 2.1 | Only if `page.route` block insufficient | +| 5.2 | nextjs + nextjs-ssr: skip `autoAnonymousLogin` when `NEXT_PUBLIC_E2E=1` | 2.3 | Only if anon sign-in destabilizes smoke | + +## Phase 6 — Dependency hardening (after smoke green) + +| ID | Task | Depends | Done when | +|----|------|---------|-----------| +| 6.1 | Align example deps to pnpm catalog / current stable | 3.1 | CVE audit improved | +| 6.2 | Run [dependency-update-verification.md](../playbooks/dependency-update-verification.md) including `test:e2e` | 6.1 | Smoke passes on dep PR | +| 6.3 | Optional `pnpm audit --audit-level=high` in CI | 6.2 | Team decision | + +# Gate tracker + +Update immediately after each step closes a gate. All items start `open` / `implementation`. + +| Phase | Item | `implementation_gate` | `review_gate` | `commit_gate` | `commit_subject` | `next_work_type` | `validation_tier` | Notes | +|-------|------|----------------------|---------------|---------------|------------------|------------------|-------------------|-------| +| 1 | 1.1 e2e package + config skeleton | open | open | open | — | implementation | unit-focused | | +| 1 | 1.2 globalSetup/teardown (build + emulator) | open | open | open | — | implementation | unit-focused | | +| 1 | 1.3 example-meta (react seed) | open | open | open | — | implementation | unit-focused | | +| 1 | 1.4 react webServer + One Tap route-block | open | open | open | — | implementation | unit-focused | comment the `page.route` reason | +| 1 | 1.5 sign-in-handlers spec S1–S3 (react) | open | open | open | — | implementation | unit-focused | assert rendered UI | +| 1 | 1.6 minimal CI proof (react) | open | open | open | — | implementation | area-focused | | +| 2 | 2.1 shadcn | open | open | open | — | implementation | unit-focused | fp → `/screens/forgot-password-screen` | +| 2 | 2.2 nextjs | open | open | open | — | implementation | unit-focused | trailingSlash | +| 2 | 2.3 nextjs-ssr | open | open | open | — | implementation | unit-focused | generous timeout | +| 2 | 2.4 angular-example | open | open | open | — | implementation | unit-focused | reuse `start` (clean) | +| 2 | 2.5 serial runner + root scripts | open | open | open | — | implementation | area-focused | | +| 3 | 3.1 separate e2e workflow + browser cache | open | open | open | — | implementation | area-focused | | +| 3 | 3.2 broad path triggers | open | open | open | — | implementation | unit-focused | | +| 4 | 4.1 custom-auth-server HTTP smoke (:4001) | open | open | open | — | implementation | area-focused | | +| 5 | 5.1 VITE_E2E skip oneTapSignIn | open | open | open | — | implementation | unit-focused | only if flaky | +| 5 | 5.2 NEXT_PUBLIC_E2E skip autoAnonymousLogin | open | open | open | — | implementation | unit-focused | only if flaky | +| 6 | 6.1 align example deps | open | open | open | — | implementation | area-focused | | +| 6 | 6.2 dep-update playbook incl. test:e2e | open | open | open | — | implementation | full | | +| 6 | 6.3 optional audit gate | open | open | open | — | implementation | unit-focused | team decision | + +# File layout (target) + +``` +e2e/ +├── package.json +├── playwright.config.ts # projects + per-project webServer; globalSetup/teardown +├── global-setup.ts # build:packages assert + start/reuse emulator +├── global-teardown.ts # stop emulator if started here +├── fixtures/ +│ └── example-meta.ts # baseURL, sign-in path, trailing-slash, forgot-password target +└── tests/ + └── sign-in-handlers.spec.ts +scripts/ +└── e2e-run.mjs # serial per-example runner for `pnpm test:e2e` +``` + +# Deferred + +| Item | Reason | +|------|--------| +| Production-artifact e2e (SSG export, SSR `next start`, Angular prod build, hosting rewrites) | Future design phase; MVP is dev-server only — [AD-8](../decisions.md#ad-8-production-artifact-e2e-deferred-future-phase) | +| Parallel multi-example e2e | Unique ports make it possible later; serial sufficient for MVP — [AD-4](../decisions.md#ad-4-playwright-managed-dev-servers-serial-shared-emulator) | +| Real emulator sign-in flows | Post-MVP user scenarios | +| Multi-browser matrix | Chromium only for MVP | +| Angular-SSR smoke | Angular tested via CSR `ng serve`; SSR path deferred | + +# Review notes + +Feasibility review (verified against code) that shaped this queue: + +* Deep-link `/screens/sign-in-auth-screen-w-handlers` exists in all five UI examples; forgot-password target differs (shadcn `/screens/forgot-password-screen` vs react/angular `/screens/forgot-password-auth-screen`) → S3 asserts rendered UI. +* `SignInAuthScreen` renders the form regardless of auth state → auth-behavior flags decoupled (Phase 5, optional). +* Playwright `webServer` + `globalSetup` replace hand-rolled orchestration (biggest simplification). +* `custom-auth-server` default `:4000` collides with Emulator UI → `:4001`. +* CI path-filtering must be broad (examples depend on `packages/**`, root manifests, lockfile, catalog). +* #13: react-only vertical slice first, to validate the model cheaply. + +# Related + +* [architecture/examples-inventory.md](../architecture/examples-inventory.md) +* [architecture/testing-strategy.md](../architecture/testing-strategy.md) +* [playbooks/dependency-update-verification.md](../playbooks/dependency-update-verification.md) From 04530b90106d727ec916f4e9e50bb8bb27fc9d1f Mon Sep 17 00:00:00 2001 From: Mike Hardy Date: Thu, 2 Jul 2026 23:04:00 -0500 Subject: [PATCH 2/9] test(e2e): install/configure playwright, implement react e2e smoke test --- .github/workflows/e2e.yaml | 56 + .gitignore | 5 + .../work-queues/playwright-e2e-smoke.md | 42 +- e2e/fixtures/example-meta.ts | 53 + e2e/fixtures/test-harness.ts | 29 + e2e/global-setup.ts | 165 + e2e/global-teardown.ts | 53 + e2e/package.json | 12 + e2e/playwright.config.ts | 63 + e2e/tests/sign-in-handlers.spec.ts | 54 + package.json | 1 + pnpm-lock.yaml | 3155 +++++++++++++++-- pnpm-workspace.yaml | 2 + 13 files changed, 3421 insertions(+), 269 deletions(-) create mode 100644 .github/workflows/e2e.yaml create mode 100644 e2e/fixtures/example-meta.ts create mode 100644 e2e/fixtures/test-harness.ts create mode 100644 e2e/global-setup.ts create mode 100644 e2e/global-teardown.ts create mode 100644 e2e/package.json create mode 100644 e2e/playwright.config.ts create mode 100644 e2e/tests/sign-in-handlers.spec.ts diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml new file mode 100644 index 00000000..2df72db4 --- /dev/null +++ b/.github/workflows/e2e.yaml @@ -0,0 +1,56 @@ +name: E2E + +on: + push: + branches: + - main + pull_request: + +permissions: + contents: read + +jobs: + react-e2e: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + + - name: Setup node + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 + with: + node-version: 22.13.0 + check-latest: true + + - name: Setup pnpm + uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 + with: + version: 10 + + - name: Install dependencies + run: pnpm install + + - name: Build packages + run: pnpm build:packages + + - name: Install Firebase CLI + run: npm i -g firebase-tools@14.15.2 + + - name: Enable webframeworks experiment + run: firebase experiments:enable webframeworks + + - name: Start Firebase emulator + run: | + firebase emulators:start --only auth --project demo-test & + sleep 15 + until wget -q --spider http://localhost:9099 2>/dev/null; do + echo "Waiting for emulator to start..." + sleep 2 + done + echo "Emulator is ready" + + - name: Install Playwright browsers + run: pnpm --filter=e2e exec playwright install --with-deps chromium + + - name: Run react e2e smoke + run: pnpm test:e2e:react diff --git a/.gitignore b/.gitignore index cb71e84c..6ad7c017 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,11 @@ packages/angular/src/version.ts # Coverage coverage +# Playwright +e2e/test-results/ +e2e/.state/ +playwright-report/ + # Firebase .firebase diff --git a/developer-docs/work-queues/playwright-e2e-smoke.md b/developer-docs/work-queues/playwright-e2e-smoke.md index f4a179ec..b300465d 100644 --- a/developer-docs/work-queues/playwright-e2e-smoke.md +++ b/developer-docs/work-queues/playwright-e2e-smoke.md @@ -50,13 +50,13 @@ scripts/e2e-run.mjs (pnpm test:e2e) → for each example in [react, shadcn, nextjs, nextjs-ssr, angular, custom-auth-server]: playwright test (E2E_PROJECT=) → globalSetup: assert packages built + emulator reachable - → project webServer: start dev server on its port, wait for URL + → top-level webServer selected by E2E_PROJECT: start dev server on its port, wait for URL → run smoke spec(s) for the project → webServer: stop dev server → stop emulator (globalTeardown / runner) ``` -* **Serial:** `workers: 1`; `E2E_PROJECT` selects the single project + `webServer` so one dev server is up at a time. +* **Serial:** `workers: 1`; `E2E_PROJECT` selects both the single Playwright project and the top-level `webServer`, so one dev server is up at a time. * **Emulator:** started once by the runner (or first `globalSetup`, reuse-aware); shared `:9099`; stopped once. * **Per-example debug:** `pnpm test:e2e:react` runs one project; `globalSetup` starts the emulator with reuse if not already running. @@ -73,17 +73,17 @@ scripts/e2e-run.mjs (pnpm test:e2e) Auth emulator `:9099`; Emulator UI `:4000` (why custom-auth-server uses `:4001`). Ports are unique, so parallel e2e is possible later — deferred ([AD-4](../decisions.md#ad-4-playwright-managed-dev-servers-serial-shared-emulator)). -# Proposed root scripts (not implemented yet) +# Root scripts -| Script | Purpose | -|--------|---------| -| `test:e2e` | Serial runner (`scripts/e2e-run.mjs`) over all examples | -| `test:e2e:react` | react only | -| `test:e2e:shadcn` | shadcn only | -| `test:e2e:nextjs` | nextjs only | -| `test:e2e:nextjs-ssr` | nextjs-ssr only | -| `test:e2e:angular` | angular-example only | -| `test:e2e:custom-auth-server` | custom-auth-server HTTP smoke only | +| Script | Status | Purpose | +|--------|--------|---------| +| `test:e2e:react` | **implemented** | react smoke only (`E2E_PROJECT=react`) | +| `test:e2e` | planned (2.5) | Serial runner (`scripts/e2e-run.mjs`) over all examples | +| `test:e2e:shadcn` | planned (2.5) | shadcn only | +| `test:e2e:nextjs` | planned (2.5) | nextjs only | +| `test:e2e:nextjs-ssr` | planned (2.5) | nextjs-ssr only | +| `test:e2e:angular` | planned (2.5) | angular-example only | +| `test:e2e:custom-auth-server` | planned (4.1) | custom-auth-server HTTP smoke only | # Per-item iteration protocol @@ -157,13 +157,13 @@ Update immediately after each step closes a gate. All items start `open` / `impl | Phase | Item | `implementation_gate` | `review_gate` | `commit_gate` | `commit_subject` | `next_work_type` | `validation_tier` | Notes | |-------|------|----------------------|---------------|---------------|------------------|------------------|-------------------|-------| -| 1 | 1.1 e2e package + config skeleton | open | open | open | — | implementation | unit-focused | | -| 1 | 1.2 globalSetup/teardown (build + emulator) | open | open | open | — | implementation | unit-focused | | -| 1 | 1.3 example-meta (react seed) | open | open | open | — | implementation | unit-focused | | -| 1 | 1.4 react webServer + One Tap route-block | open | open | open | — | implementation | unit-focused | comment the `page.route` reason | -| 1 | 1.5 sign-in-handlers spec S1–S3 (react) | open | open | open | — | implementation | unit-focused | assert rendered UI | -| 1 | 1.6 minimal CI proof (react) | open | open | open | — | implementation | area-focused | | -| 2 | 2.1 shadcn | open | open | open | — | implementation | unit-focused | fp → `/screens/forgot-password-screen` | +| 1 | 1.1 e2e package + config skeleton | closed | closed | closed | test(e2e): install/configure playwright, implement react e2e smoke test | — | — | Shipped in Phase 1 commit. | +| 1 | 1.2 globalSetup/teardown (build + emulator) | closed | closed | closed | test(e2e): install/configure playwright, implement react e2e smoke test | — | — | | +| 1 | 1.3 example-meta (react seed) | closed | closed | closed | test(e2e): install/configure playwright, implement react e2e smoke test | — | — | | +| 1 | 1.4 react webServer + One Tap route-block | closed | closed | closed | test(e2e): install/configure playwright, implement react e2e smoke test | — | — | top-level webServer + `E2E_PROJECT`. | +| 1 | 1.5 sign-in-handlers spec S1–S3 (react) | closed | closed | closed | test(e2e): install/configure playwright, implement react e2e smoke test | — | — | 3/3 passed locally. | +| 1 | 1.6 minimal CI proof (react) | closed | closed | closed | test(e2e): install/configure playwright, implement react e2e smoke test | — | — | `.github/workflows/e2e.yaml`; **CI green** on PR #1389 (`pnpm test:e2e:react` 3/3). Zizmor follow-up: pin actions + `permissions: contents: read`. | +| 2 | 2.1 shadcn | open | open | open | — | implementation | unit-focused | **Next pickup.** fp → `/screens/forgot-password-screen` | | 2 | 2.2 nextjs | open | open | open | — | implementation | unit-focused | trailingSlash | | 2 | 2.3 nextjs-ssr | open | open | open | — | implementation | unit-focused | generous timeout | | 2 | 2.4 angular-example | open | open | open | — | implementation | unit-focused | reuse `start` (clean) | @@ -182,7 +182,7 @@ Update immediately after each step closes a gate. All items start `open` / `impl ``` e2e/ ├── package.json -├── playwright.config.ts # projects + per-project webServer; globalSetup/teardown +├── playwright.config.ts # projects + top-level webServer selected by E2E_PROJECT; globalSetup/teardown ├── global-setup.ts # build:packages assert + start/reuse emulator ├── global-teardown.ts # stop emulator if started here ├── fixtures/ @@ -209,7 +209,7 @@ Feasibility review (verified against code) that shaped this queue: * Deep-link `/screens/sign-in-auth-screen-w-handlers` exists in all five UI examples; forgot-password target differs (shadcn `/screens/forgot-password-screen` vs react/angular `/screens/forgot-password-auth-screen`) → S3 asserts rendered UI. * `SignInAuthScreen` renders the form regardless of auth state → auth-behavior flags decoupled (Phase 5, optional). -* Playwright `webServer` + `globalSetup` replace hand-rolled orchestration (biggest simplification). +* Playwright top-level `webServer` selected by `E2E_PROJECT` + `globalSetup` replace hand-rolled orchestration (biggest simplification). * `custom-auth-server` default `:4000` collides with Emulator UI → `:4001`. * CI path-filtering must be broad (examples depend on `packages/**`, root manifests, lockfile, catalog). * #13: react-only vertical slice first, to validate the model cheaply. diff --git a/e2e/fixtures/example-meta.ts b/e2e/fixtures/example-meta.ts new file mode 100644 index 00000000..bbb23418 --- /dev/null +++ b/e2e/fixtures/example-meta.ts @@ -0,0 +1,53 @@ +/** + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** Per-example routing and server metadata for Playwright smoke tests. */ +export type ExampleMeta = { + /** Playwright project name (matches pnpm filter where applicable). */ + name: string; + /** Dev server origin used as Playwright baseURL. */ + baseURL: string; + /** Deep-link path for the sign-in-with-handlers smoke entry screen. */ + signInWithHandlersPath: string; + /** Whether URLs for this example require a trailing slash (Next.js). */ + trailingSlash: boolean; + /** Forgot-password route from sign-in-with-handlers (S3 asserts UI, not this path). */ + forgotPasswordPath: string; + /** Optional dev-server command for Playwright webServer. */ + webServerCommand?: string; +}; + +export const exampleMeta: Record = { + react: { + name: "react", + baseURL: "http://localhost:5173", + signInWithHandlersPath: "/screens/sign-in-auth-screen-w-handlers", + trailingSlash: false, + forgotPasswordPath: "/screens/forgot-password-auth-screen", + webServerCommand: "pnpm --filter=react exec vite --port 5173 --strictPort", + }, +}; + +/** Returns the sign-in-with-handlers path respecting per-example trailing-slash rules. */ +export function signInWithHandlersUrl(meta: ExampleMeta): string { + const { signInWithHandlersPath, trailingSlash } = meta; + + if (trailingSlash) { + return signInWithHandlersPath.endsWith("/") ? signInWithHandlersPath : `${signInWithHandlersPath}/`; + } + + return signInWithHandlersPath.endsWith("/") ? signInWithHandlersPath.slice(0, -1) : signInWithHandlersPath; +} diff --git a/e2e/fixtures/test-harness.ts b/e2e/fixtures/test-harness.ts new file mode 100644 index 00000000..706b717a --- /dev/null +++ b/e2e/fixtures/test-harness.ts @@ -0,0 +1,29 @@ +/** + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { test as base, expect } from "@playwright/test"; + +export const test = base.extend({ + page: async ({ page }, use) => { + // Block Google One Tap (accounts.google.com): external script is flaky in e2e and + // unnecessary for sign-in form smoke tests (AD-5). Prefer route blocking over app flags. + await page.route("**/*accounts.google.com/**", (route) => route.abort()); + + await use(page); + }, +}); + +export { expect }; diff --git a/e2e/global-setup.ts b/e2e/global-setup.ts new file mode 100644 index 00000000..7d13e7a7 --- /dev/null +++ b/e2e/global-setup.ts @@ -0,0 +1,165 @@ +/** + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { execSync, spawn, type ChildProcess } from "node:child_process"; +import { existsSync, mkdirSync, writeFileSync } from "node:fs"; +import net from "node:net"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const E2E_DIR = path.dirname(fileURLToPath(import.meta.url)); +const REPO_ROOT = path.resolve(E2E_DIR, ".."); +const STATE_DIR = path.join(E2E_DIR, ".state"); +const STATE_FILE = path.join(STATE_DIR, "emulator.json"); +const AUTH_EMULATOR_URL = "http://127.0.0.1:9099"; + +/** Core library packages built by `build:packages`; examples import these artifacts. */ +const REQUIRED_DIST_ARTIFACTS = [ + "packages/translations/dist/index.js", + "packages/styles/dist/index.js", + "packages/core/dist/index.js", + "packages/react/dist/index.js", + "packages/angular/dist/fesm2022/firebase-oss-ui-angular.mjs", +] as const; + +type EmulatorState = { + startedBySetup: boolean; + pid?: number; +}; + +async function isAuthEmulatorReachable(): Promise { + return new Promise((resolve) => { + const socket = net.connect({ port: 9099, host: "127.0.0.1" }); + socket.once("connect", () => { + socket.destroy(); + resolve(true); + }); + socket.once("error", () => resolve(false)); + socket.setTimeout(2_000, () => { + socket.destroy(); + resolve(false); + }); + }); +} + +async function waitForAuthEmulator(timeoutMs = 120_000): Promise { + const deadline = Date.now() + timeoutMs; + + while (Date.now() < deadline) { + if (await isAuthEmulatorReachable()) { + return; + } + + await new Promise((resolve) => setTimeout(resolve, 2_000)); + } + + throw new Error(`Auth emulator did not become reachable at ${AUTH_EMULATOR_URL} within ${timeoutMs / 1000}s`); +} + +function assertPackagesBuilt(): void { + const missing = REQUIRED_DIST_ARTIFACTS.filter((artifact) => !existsSync(path.join(REPO_ROOT, artifact))); + + if (missing.length > 0) { + throw new Error( + `Expected built package artifacts are missing after build:packages:\n${missing.map((entry) => ` - ${entry}`).join("\n")}` + ); + } +} + +function runBuildPackages(): void { + try { + execSync("pnpm build:packages", { + cwd: REPO_ROOT, + stdio: "inherit", + }); + } catch { + throw new Error("pnpm build:packages failed — examples require built @firebase-oss/ui-* packages"); + } + + assertPackagesBuilt(); +} + +function writeEmulatorState(state: EmulatorState): void { + mkdirSync(STATE_DIR, { recursive: true }); + writeFileSync(STATE_FILE, JSON.stringify(state, null, 2)); +} + +function ensureFirebaseToolsCached(): void { + try { + execSync("npx --yes firebase-tools@14.15.2 --version", { + cwd: REPO_ROOT, + stdio: "pipe", + }); + } catch { + throw new Error("Failed to cache firebase-tools@14.15.2 via npx — Auth emulator cannot start"); + } +} + +function enableWebframeworksExperiment(): void { + try { + execSync("npx --yes firebase-tools@14.15.2 experiments:enable webframeworks", { + cwd: REPO_ROOT, + stdio: "pipe", + }); + } catch { + throw new Error( + "Failed to enable firebase webframeworks experiment — required because firebase.json includes framework hosting configs" + ); + } +} + +function startAuthEmulator(): ChildProcess { + const child = spawn("npx --yes firebase-tools@14.15.2 emulators:start --only auth --project demo-test", { + cwd: REPO_ROOT, + detached: true, + shell: true, + stdio: "ignore", + }); + + if (child.pid === undefined) { + throw new Error("Failed to start Auth emulator: spawn returned no PID"); + } + + child.unref(); + return child; +} + +export default async function globalSetup(): Promise { + runBuildPackages(); + + if (await isAuthEmulatorReachable()) { + writeEmulatorState({ startedBySetup: false }); + return; + } + + ensureFirebaseToolsCached(); + enableWebframeworksExperiment(); + const emulatorProcess = startAuthEmulator(); + + try { + await waitForAuthEmulator(); + } catch (error) { + try { + process.kill(-emulatorProcess.pid!, "SIGTERM"); + } catch { + // Process may already have exited. + } + + throw error; + } + + writeEmulatorState({ startedBySetup: true, pid: emulatorProcess.pid }); +} diff --git a/e2e/global-teardown.ts b/e2e/global-teardown.ts new file mode 100644 index 00000000..a3e931b0 --- /dev/null +++ b/e2e/global-teardown.ts @@ -0,0 +1,53 @@ +/** + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { readFileSync, rmSync } from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const E2E_DIR = path.dirname(fileURLToPath(import.meta.url)); +const STATE_FILE = path.join(E2E_DIR, ".state", "emulator.json"); + +type EmulatorState = { + startedBySetup: boolean; + pid?: number; +}; + +function readEmulatorState(): EmulatorState | null { + try { + return JSON.parse(readFileSync(STATE_FILE, "utf8")) as EmulatorState; + } catch { + return null; + } +} + +export default async function globalTeardown(): Promise { + const state = readEmulatorState(); + + if (state?.startedBySetup && state.pid !== undefined) { + try { + process.kill(-state.pid, "SIGTERM"); + } catch { + // Emulator may already have stopped. + } + } + + try { + rmSync(path.dirname(STATE_FILE), { recursive: true, force: true }); + } catch { + // Best-effort cleanup of ephemeral setup state. + } +} diff --git a/e2e/package.json b/e2e/package.json new file mode 100644 index 00000000..0de38612 --- /dev/null +++ b/e2e/package.json @@ -0,0 +1,12 @@ +{ + "name": "e2e", + "private": true, + "type": "module", + "scripts": { + "test": "playwright test" + }, + "devDependencies": { + "@firebase-oss/ui-translations": "workspace:*", + "@playwright/test": "catalog:" + } +} diff --git a/e2e/playwright.config.ts b/e2e/playwright.config.ts new file mode 100644 index 00000000..fc19892b --- /dev/null +++ b/e2e/playwright.config.ts @@ -0,0 +1,63 @@ +/** + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { defineConfig } from "@playwright/test"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { exampleMeta, type ExampleMeta } from "./fixtures/example-meta"; + +const REPO_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); + +function webServerForMeta(meta: ExampleMeta) { + if (!meta.webServerCommand) { + return undefined; + } + + return { + command: meta.webServerCommand, + url: meta.baseURL, + cwd: REPO_ROOT, + reuseExistingServer: !process.env.CI, + timeout: 120_000, + }; +} + +/** Playwright only reads top-level webServer (not per-project). Serial runner sets E2E_PROJECT. */ +function resolveWebServerMeta() { + const fromEnv = process.env.E2E_PROJECT ? exampleMeta[process.env.E2E_PROJECT] : undefined; + + if (fromEnv?.webServerCommand) { + return fromEnv; + } + + return Object.values(exampleMeta).find((meta) => meta.webServerCommand); +} + +const webServerMeta = resolveWebServerMeta(); + +export default defineConfig({ + testDir: "./tests", + workers: 1, + globalSetup: "./global-setup.ts", + globalTeardown: "./global-teardown.ts", + ...(webServerMeta ? { webServer: webServerForMeta(webServerMeta) } : {}), + projects: Object.values(exampleMeta).map((meta) => ({ + name: meta.name, + use: { + baseURL: meta.baseURL, + }, + })), +}); diff --git a/e2e/tests/sign-in-handlers.spec.ts b/e2e/tests/sign-in-handlers.spec.ts new file mode 100644 index 00000000..8f749b2c --- /dev/null +++ b/e2e/tests/sign-in-handlers.spec.ts @@ -0,0 +1,54 @@ +/** + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { enUs } from "@firebase-oss/ui-translations"; +import { exampleMeta, signInWithHandlersUrl } from "../fixtures/example-meta"; +import { expect, test } from "../fixtures/test-harness"; + +const { labels, errors } = enUs.translations; + +for (const [projectName, meta] of Object.entries(exampleMeta)) { + test.describe(`sign-in with handlers smoke (${projectName})`, () => { + test.beforeEach(({}, testInfo) => { + test.skip(testInfo.project.name !== projectName, `runs only on the ${projectName} project`); + }); + + test("S1: sign-in form shows email, password, and submit", async ({ page }) => { + await page.goto(signInWithHandlersUrl(meta)); + + await expect(page.getByRole("textbox", { name: labels.emailAddress })).toBeVisible(); + await expect(page.getByLabel(labels.password)).toBeVisible(); + await expect(page.getByRole("button", { name: labels.signIn, exact: true })).toBeVisible(); + }); + + test("S2: empty submit shows email validation feedback", async ({ page }) => { + await page.goto(signInWithHandlersUrl(meta)); + + await page.getByRole("button", { name: labels.signIn, exact: true }).click(); + + await expect(page.getByRole("alert").filter({ hasText: errors.invalidEmail })).toBeVisible(); + }); + + test("S3: forgot-password navigates to reset screen", async ({ page }) => { + await page.goto(signInWithHandlersUrl(meta)); + + await page.getByRole("button", { name: labels.forgotPassword }).click(); + + await expect(page.getByRole("heading", { name: labels.resetPassword })).toBeVisible(); + await expect(page.getByRole("textbox", { name: labels.emailAddress })).toBeVisible(); + }); + }); +} diff --git a/package.json b/package.json index 33892e09..d3a44a92 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "format:check": "prettier --check **/{src,tests}/**/*.{ts,tsx}", "format:write": "prettier --write **/{src,tests}/**/*.{ts,tsx}", "test": "pnpm --filter=@firebase-oss/ui-core run test && pnpm --filter=@firebase-oss/ui-translations run test && pnpm --filter=@firebase-oss/ui-styles run test && pnpm --filter=@firebase-oss/ui-react run test && pnpm --filter=@firebase-oss/ui-shadcn run test && pnpm --filter=@firebase-oss/ui-angular run test", + "test:e2e:react": "E2E_PROJECT=react pnpm --filter=e2e exec playwright test --project=react", "test:watch": "pnpm --filter=@firebase-oss/ui-core run test:unit:watch & pnpm --filter=@firebase-oss/ui-react run test:unit:watch & pnpm --filter=@firebase-oss/ui-angular run test:watch", "version:bump:all": "pnpm --filter=@firebase-oss/ui-core run version:bump && pnpm --filter=@firebase-oss/ui-translations run version:bump && pnpm --filter=@firebase-oss/ui-react run version:bump && pnpm --filter=@firebase-oss/ui-styles run version:bump && pnpm --filter=@firebase-oss/ui-angular run version:bump", "publish:tags:all": "pnpm i && pnpm --filter=@firebase-oss/ui-core run publish:tags && pnpm --filter=@firebase-oss/ui-translations run publish:tags && pnpm --filter=@firebase-oss/ui-react run publish:tags && pnpm --filter=@firebase-oss/ui-styles run publish:tags && pnpm --filter=@firebase-oss/ui-angular run publish:tags", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 321f45f1..209fd3a3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,9 @@ catalogs: '@nanostores/deepmap': specifier: ^0.0.1 version: 0.0.1 + '@playwright/test': + specifier: 1.61.1 + version: 1.61.1 '@tailwindcss/vite': specifier: ^4.1.14 version: 4.1.16 @@ -177,6 +180,15 @@ importers: specifier: ^8.45.0 version: 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + e2e: + devDependencies: + '@firebase-oss/ui-translations': + specifier: workspace:* + version: link:../packages/translations + '@playwright/test': + specifier: 'catalog:' + version: 1.61.1 + examples/angular: dependencies: '@angular/animations': @@ -193,7 +205,7 @@ importers: version: 20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/fire': specifier: ^20.0.1 - version: 20.0.1(224a9fe38983fbc914b248dcbaf6f32b) + version: 20.0.1(c610c615b258e4a2e05e35c7c07ea289) '@angular/forms': specifier: 'catalog:' version: 20.3.21(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.21(@angular/animations@20.3.21(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) @@ -251,7 +263,7 @@ importers: version: 0.2003.26(chokidar@4.0.3) '@angular-devkit/build-angular': specifier: 'catalog:' - version: 20.3.26(3e5f368b1c7a3c24585f0991739387fe) + version: 20.3.26(8785e174638123b2037b72df31a63ffb) '@angular-devkit/core': specifier: 'catalog:' version: 20.3.26(chokidar@4.0.3) @@ -317,10 +329,10 @@ importers: version: 5.9.3 vite: specifier: 'catalog:' - version: 7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6) + version: 7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 3.2.4(@types/node@20.19.24)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@25.0.1)(less@4.4.0)(lightningcss@1.30.2)(msw@2.11.6(@types/node@20.19.24)(typescript@5.9.3))(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6) + version: 3.2.4(@types/node@20.19.24)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@25.0.1)(less@4.4.0)(lightningcss@1.30.2)(msw@2.11.6(@types/node@20.19.24)(typescript@5.9.3))(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0) examples/custom-auth-server: dependencies: @@ -372,7 +384,7 @@ importers: version: 11.10.0 next: specifier: 'catalog:' - version: 15.5.18(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.3) + version: 15.5.18(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.3) react: specifier: 'catalog:' version: 19.2.3 @@ -400,7 +412,7 @@ importers: version: 8.5.14 postcss-load-config: specifier: ^6.0.1 - version: 6.0.1(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6) + version: 6.0.1(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6)(yaml@2.9.0) tailwindcss: specifier: ^4.0.6 version: 4.1.16 @@ -427,7 +439,7 @@ importers: version: 11.10.0 next: specifier: 'catalog:' - version: 15.5.18(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.3) + version: 15.5.18(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.3) react: specifier: 'catalog:' version: 19.2.3 @@ -455,7 +467,7 @@ importers: version: 8.5.14 postcss-load-config: specifier: ^6.0.1 - version: 6.0.1(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6) + version: 6.0.1(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6)(yaml@2.9.0) tailwindcss: specifier: ^4.0.6 version: 4.1.16 @@ -464,7 +476,7 @@ importers: version: 5.9.3 vite: specifier: 'catalog:' - version: 7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) + version: 7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) examples/react: dependencies: @@ -498,7 +510,7 @@ importers: version: 9.38.0 '@tailwindcss/vite': specifier: ^4.1.4 - version: 4.1.16(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)) + version: 4.1.16(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0)) '@types/react': specifier: 'catalog:' version: 19.2.7 @@ -507,7 +519,7 @@ importers: version: 19.2.3(@types/react@19.2.7) '@vitejs/plugin-react': specifier: 'catalog:' - version: 5.1.0(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)) + version: 5.1.0(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0)) eslint: specifier: ^9.22.0 version: 9.38.0(jiti@2.6.1) @@ -528,7 +540,7 @@ importers: version: 4.1.16 vite: specifier: 'catalog:' - version: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) + version: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) examples/shadcn: dependencies: @@ -691,7 +703,7 @@ importers: devDependencies: '@tailwindcss/vite': specifier: 'catalog:' - version: 4.1.16(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)) + version: 4.1.16(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0)) '@types/node': specifier: 'catalog:' version: 24.9.2 @@ -706,7 +718,7 @@ importers: version: 21.0.3 '@vitejs/plugin-react': specifier: 'catalog:' - version: 5.1.0(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)) + version: 5.1.0(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0)) tailwindcss: specifier: 'catalog:' version: 4.1.16 @@ -721,7 +733,7 @@ importers: version: 5.9.3 vite: specifier: 'catalog:' - version: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) + version: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) yargs-parser: specifier: ^22.0.0 version: 22.0.0 @@ -746,7 +758,7 @@ importers: devDependencies: '@angular-devkit/build-angular': specifier: 'catalog:' - version: 20.3.26(a053227dddd84e327a6ac3dd5622eac8) + version: 20.3.26(354cd8b8691501a425f00b11a2e47416) '@angular/cli': specifier: 'catalog:' version: 20.3.26(@types/node@24.9.2)(chokidar@4.0.3) @@ -764,7 +776,7 @@ importers: version: 20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/fire': specifier: 'catalog:' - version: 20.0.1(224a9fe38983fbc914b248dcbaf6f32b) + version: 20.0.1(c586ea394f2585d229502db3b5133a2e) '@angular/forms': specifier: 'catalog:' version: 20.3.21(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.21(@angular/animations@20.3.21(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) @@ -867,16 +879,16 @@ importers: version: 6.0.1 tsup: specifier: 'catalog:' - version: 8.5.0(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6)(typescript@5.9.3) + version: 8.5.0(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0) typescript: specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' - version: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) + version: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) vitest: specifier: 'catalog:' - version: 3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(lightningcss@1.30.2)(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) + version: 3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(lightningcss@1.30.2)(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) packages/react: dependencies: @@ -928,7 +940,7 @@ importers: version: 19.2.3(@types/react@19.2.7) '@vitejs/plugin-react': specifier: 'catalog:' - version: 5.1.0(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)) + version: 5.1.0(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0)) firebase: specifier: 'catalog:' version: 11.10.0 @@ -946,19 +958,19 @@ importers: version: 19.2.3(react@19.2.3) tsup: specifier: 'catalog:' - version: 8.5.0(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6)(typescript@5.9.3) + version: 8.5.0(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0) typescript: specifier: 'catalog:' version: 5.9.3 vite: specifier: 'catalog:' - version: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) + version: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) vite-plugin-svgr: specifier: ^4.5.0 - version: 4.5.0(rollup@4.62.0)(typescript@5.9.3)(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)) + version: 4.5.0(rollup@4.62.0)(typescript@5.9.3)(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0)) vitest: specifier: 'catalog:' - version: 3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(lightningcss@1.30.2)(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) + version: 3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(lightningcss@1.30.2)(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) packages/shadcn: dependencies: @@ -1010,7 +1022,7 @@ importers: version: link:../translations '@tailwindcss/vite': specifier: 'catalog:' - version: 4.1.16(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)) + version: 4.1.16(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0)) '@testing-library/jest-dom': specifier: 'catalog:' version: 6.9.1 @@ -1031,7 +1043,7 @@ importers: version: 21.0.3 '@vitejs/plugin-react': specifier: 'catalog:' - version: 5.1.0(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)) + version: 5.1.0(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0)) firebase: specifier: 'catalog:' version: 11.10.0 @@ -1049,7 +1061,7 @@ importers: version: 4.1.16 tsup: specifier: 'catalog:' - version: 8.5.0(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6)(typescript@5.9.3) + version: 8.5.0(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0) tsx: specifier: ^4.20.6 version: 4.20.6 @@ -1061,13 +1073,13 @@ importers: version: 5.9.3 vite: specifier: 'catalog:' - version: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) + version: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) vite-plugin-run: specifier: ^0.6.1 version: 0.6.1 vitest: specifier: 'catalog:' - version: 3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(lightningcss@1.30.2)(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) + version: 3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(lightningcss@1.30.2)(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) yargs-parser: specifier: ^22.0.0 version: 22.0.0 @@ -1086,13 +1098,13 @@ importers: version: 4.1.16 tsup: specifier: 'catalog:' - version: 8.5.0(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6)(typescript@5.9.3) + version: 8.5.0(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0) typescript: specifier: 'catalog:' version: 5.9.3 vitest: specifier: 'catalog:' - version: 3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(lightningcss@1.30.2)(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) + version: 3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(lightningcss@1.30.2)(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) zshy: specifier: 0.7.0 version: 0.7.0(typescript@5.9.3) @@ -1104,13 +1116,13 @@ importers: version: 6.0.1 tsup: specifier: 'catalog:' - version: 8.5.0(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6)(typescript@5.9.3) + version: 8.5.0(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0) typescript: specifier: 'catalog:' version: 5.9.3 vitest: specifier: 'catalog:' - version: 3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(lightningcss@1.30.2)(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) + version: 3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(lightningcss@1.30.2)(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) packages: @@ -1498,6 +1510,9 @@ packages: '@antfu/utils@0.7.10': resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + '@apidevtools/json-schema-ref-parser@9.1.2': + resolution: {integrity: sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==} + '@asamuzakjp/css-color@3.2.0': resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} @@ -2219,6 +2234,14 @@ packages: resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + + '@colors/colors@1.6.0': + resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} + engines: {node: '>=0.1.90'} + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -2251,6 +2274,9 @@ packages: resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} + '@dabh/diagnostics@2.0.8': + resolution: {integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==} + '@date-fns/tz@1.4.1': resolution: {integrity: sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==} @@ -2258,6 +2284,17 @@ packages: resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} engines: {node: '>=14.17.0'} + '@electric-sql/pglite-tools@0.2.21': + resolution: {integrity: sha512-kv8Z7UmmBVECHud63VblgQLp4A+qSklNP7H22VQqFQGrWFTodc73bubcjgmBqThFsIIiEeAEQQYwWGaK2lSDtA==} + peerDependencies: + '@electric-sql/pglite': 0.3.16 + + '@electric-sql/pglite@0.2.17': + resolution: {integrity: sha512-qEpKRT2oUaWDH6tjRxLHjdzMqRUGYDnGZlKrnL4dJ77JVMcP2Hpo3NYnOSPKdZdeec57B6QPprCUFg0picx5Pw==} + + '@electric-sql/pglite@0.3.16': + resolution: {integrity: sha512-mZkZfOd9OqTMHsK+1cje8OSzfAQcpD7JmILXTl5ahdempjUDdmg4euf1biDex5/LfQIDJ3gvCu6qDgdnDxfJmA==} + '@emnapi/core@1.6.0': resolution: {integrity: sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg==} @@ -3021,6 +3058,10 @@ packages: resolution: {integrity: sha512-GmzA9ckNokPypTg10pgpeHNQe7ph+iIKKmhKu3Ob9ANkswreCx7R3cKmY781K8QK3AqVL3xVh9A42JvIAbkkSA==} engines: {node: ^20.17.0 || >=22.9.0} + '@google-cloud/cloud-sql-connector@1.11.2': + resolution: {integrity: sha512-ImHGgHunHoAHnQ9Bbsuq9an0rwmMdaPL8nrdQkVNnuIb0GKE+rTyjKNV+po7DJLuk84JPUUbK0cWW9AjPiAblA==} + engines: {node: '>=22'} + '@google-cloud/firestore@7.11.6': resolution: {integrity: sha512-EW/O8ktzwLfyWBOsNuhRoMi8lrC3clHM5LVFhGvO1HCsLozCOOXRAlHrYBoE6HL42Sc8yYMuCb2XqcnJ4OOEpw==} engines: {node: '>=14.0.0'} @@ -3029,6 +3070,10 @@ packages: resolution: {integrity: sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==} engines: {node: '>=14.0.0'} + '@google-cloud/precise-date@4.0.0': + resolution: {integrity: sha512-1TUx3KdaU3cN7nfCdNf+UVqA/PSX29Cjcox3fZZBtINlRrXVTmUkQnCKv2MbBUbCopbK4olAT1IHl76uZyCiVA==} + engines: {node: '>=14.0.0'} + '@google-cloud/projectify@4.0.0': resolution: {integrity: sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==} engines: {node: '>=14.0.0'} @@ -3037,10 +3082,18 @@ packages: resolution: {integrity: sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==} engines: {node: '>=14'} + '@google-cloud/pubsub@4.11.0': + resolution: {integrity: sha512-xWxJAlyUGd6OPp97u8maMcI3xVXuHjxfwh6Dr7P/P+6NK9o446slJobsbgsmK0xKY4nTK8m5uuJrhEKapfZSmQ==} + engines: {node: '>=14.0.0'} + '@google-cloud/storage@7.18.0': resolution: {integrity: sha512-r3ZwDMiz4nwW6R922Z1pwpePxyRwE5GdevYX63hRmAQUkUQJcBH/79EnQPDv5cOv1mFBgevdNWQfi3tie3dHrQ==} engines: {node: '>=14'} + '@googleapis/sqladmin@37.0.0': + resolution: {integrity: sha512-LBxSb3V+avoqsTHY/KsSR4/3FGnRfUw8yhGjx6ihTE5w7Y6l1EZkcx62aCCfCNkaigCQDvgiJG2Pq2jxN1sfag==} + engines: {node: '>=12.0.0'} + '@grpc/grpc-js@1.14.3': resolution: {integrity: sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==} engines: {node: '>=12.10.0'} @@ -3239,10 +3292,6 @@ packages: cpu: [x64] os: [win32] - '@inquirer/ansi@1.0.1': - resolution: {integrity: sha512-yqq0aJW/5XPhi5xOAL1xRCpe1eh8UFVgYFpFsjEqmIR8rKLyP+HINvFXwUaxYICflJrVlxnp7lLN6As735kVpw==} - engines: {node: '>=18'} - '@inquirer/ansi@1.0.2': resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} engines: {node: '>=18'} @@ -3265,15 +3314,6 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.19': - resolution: {integrity: sha512-wQNz9cfcxrtEnUyG5PndC8g3gZ7lGDBzmWiXZkX8ot3vfZ+/BLjR8EvyGX4YzQLeVqtAlY/YScZpW7CW8qMoDQ==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/confirm@5.1.21': resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} engines: {node: '>=18'} @@ -3283,15 +3323,6 @@ packages: '@types/node': optional: true - '@inquirer/core@10.3.0': - resolution: {integrity: sha512-Uv2aPPPSK5jeCplQmQ9xadnFx2Zhj9b5Dj7bU6ZeCdDNNY11nhYy4btcSdtDguHqCT2h5oNeQTcUNSGGLA7NTA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/core@10.3.2': resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} engines: {node: '>=18'} @@ -3328,10 +3359,6 @@ packages: '@types/node': optional: true - '@inquirer/figures@1.0.14': - resolution: {integrity: sha512-DbFgdt+9/OZYFM+19dbpXOSeAstPy884FPy1KjDu4anWwymZeOYhMY1mdFri172htv6mvc/uvIAAi7b7tvjJBQ==} - engines: {node: '>=18'} - '@inquirer/figures@1.0.15': resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} engines: {node: '>=18'} @@ -3408,15 +3435,6 @@ packages: '@types/node': optional: true - '@inquirer/type@3.0.9': - resolution: {integrity: sha512-QPaNt/nmE2bLGQa9b7wwyRJoLZ7pN6rcyXvzU0YCmivmJyq1BVo94G98tStRWkoD1RgDX5C+dPlhhHzNdu/W/w==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@isaacs/balanced-match@4.0.1': resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} engines: {node: 20 || >=22} @@ -3558,6 +3576,9 @@ packages: '@js-sdsl/ordered-map@4.4.2': resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + '@jsdevtools/ono@7.1.3': + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + '@jsonjoy.com/base64@1.1.2': resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} engines: {node: '>=10.0'} @@ -3941,6 +3962,10 @@ packages: resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} + '@opentelemetry/semantic-conventions@1.30.0': + resolution: {integrity: sha512-4VlGgo32k2EQ2wcCY3vEU28A0O13aOtHz3Xt2/2U5FAh9EfhD6t6DqL5Z6yAnRCntbTFDU4YfbpyzSlHNWycPw==} + engines: {node: '>=14'} + '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} engines: {node: '>= 10.0.0'} @@ -4125,6 +4150,23 @@ packages: resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@playwright/test@1.61.1': + resolution: {integrity: sha512-8nKv6+0RJSL9FE4jYOEGXnPeM/Hg12qZpmqzZjRh3qM0Y7c3z1mrOTfFLids72RDQYVh9WpLEfR5WdpNX4fkig==} + engines: {node: '>=18'} + hasBin: true + + '@pnpm/config.env-replace@1.1.0': + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + + '@pnpm/network.ca-file@1.0.2': + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + + '@pnpm/npm-conf@3.0.3': + resolution: {integrity: sha512-//0sR/cow/s4ICQaYoAobOl4aU8cjU6x/V24V7XkKotb9+O+3zySIYp146vpaobYHnxa4pZX8NkV54Z5AwbDKA==} + engines: {node: '>=12'} + '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} @@ -5232,12 +5274,19 @@ packages: '@sinclair/typebox@0.34.41': resolution: {integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==} + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + '@sinonjs/commons@3.0.1': resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} '@sinonjs/fake-timers@13.0.5': resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==} + '@so-ric/colorspace@1.1.6': + resolution: {integrity: sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==} + '@standard-schema/utils@0.3.0': resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} @@ -5496,6 +5545,9 @@ packages: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} + '@tootallnate/quickjs-emscripten@0.23.0': + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + '@ts-morph/common@0.19.0': resolution: {integrity: sha512-Unz/WHmd4pGax91rdIKWi51wnVUW11QttMEPpBiBgIewnc9UQIX7UDLxr5vRlqeByXCwhkF6VabSsI0raWcyAQ==} @@ -5710,6 +5762,9 @@ packages: '@types/tough-cookie@4.0.5': resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + '@types/triple-beam@1.3.5': + resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} + '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} @@ -5998,6 +6053,10 @@ packages: resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==} engines: {node: ^20.17.0 || >=22.9.0} + abbrev@5.0.0: + resolution: {integrity: sha512-/XrFJgzQQQHpti1raDJC6m4ws6aNktmjBlhk8Fdlk7LwCEuDoieEJJY9OFHjfiFJFFRM2tK+Ky/IsfbbmlMu1w==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} + abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -6083,6 +6142,9 @@ packages: typescript: '*' typescript-eslint: ^8.0.0 + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -6127,6 +6189,14 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} + archiver-utils@5.0.2: + resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} + engines: {node: '>= 14'} + + archiver@7.0.1: + resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} + engines: {node: '>= 14'} + arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -6185,10 +6255,17 @@ packages: resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} engines: {node: '>=8'} + as-array@2.0.0: + resolution: {integrity: sha512-1Sd1LrodN0XYxYeZcN1J4xYZvmvTwD5tDWaPUGPIzH1mFsmzsPnVtd2exWhecMjtZk/wYWjNZJiD3b1SLCeJqg==} + assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + ast-types@0.13.4: + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} + engines: {node: '>=4'} + ast-types@0.16.1: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} @@ -6204,9 +6281,15 @@ packages: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} + async-lock@1.4.1: + resolution: {integrity: sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==} + async-retry@1.3.3: resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -6225,6 +6308,14 @@ packages: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} + b4a@1.8.1: + resolution: {integrity: sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==} + peerDependencies: + react-native-b4a: '*' + peerDependenciesMeta: + react-native-b4a: + optional: true + babel-jest@30.2.0: resolution: {integrity: sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -6279,6 +6370,47 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} + bare-events@2.9.1: + resolution: {integrity: sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg==} + peerDependencies: + bare-abort-controller: '*' + peerDependenciesMeta: + bare-abort-controller: + optional: true + + bare-fs@4.7.2: + resolution: {integrity: sha512-aTvMFUWkBmjzKtEQMDGGDNF8bkfpD5N1b/FCwt7A3wrU4t1o/e/85Wzkluh6JlODCjqVESYCkQCdTXqZ9G7VFg==} + engines: {bare: '>=1.16.0'} + peerDependencies: + bare-buffer: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + + bare-os@3.9.3: + resolution: {integrity: sha512-fF4Q7QsyKVF5Rj0qvI8BgUNjqzC2JvQlpTaPLjVJVxYVUX5Zr9un+y3w1HmA4nNKdFmRBT8z/WmrjvXzXVerKQ==} + engines: {bare: '>=1.14.0'} + + bare-path@3.0.1: + resolution: {integrity: sha512-ghj2DSK/2e99a1anTVPCV4m4YIYtrbXhfM7V3D7XZLOTsybnYyaJloymGqssQc8l/or0UoDyRtNQkmkEF/ysgQ==} + + bare-stream@2.13.3: + resolution: {integrity: sha512-Kc+brLqvEqGkjyfiwJmImAOqLZL7OsoLKuavx+hJjgVV3nLTOjloJyPMFxjUPerGGHrNH0fLU06jjykMLWrERQ==} + peerDependencies: + bare-abort-controller: '*' + bare-buffer: '*' + bare-events: '*' + peerDependenciesMeta: + bare-abort-controller: + optional: true + bare-buffer: + optional: true + bare-events: + optional: true + + bare-url@2.4.5: + resolution: {integrity: sha512-K+y9xF1tN+CdPu4qWwr0QiK1Al07eFPGYK5M2pDXcmHdMdgC/tT/bpmMe1hrmRHaidKLkXrC+cRNYf3XVDUhSQ==} + base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -6291,6 +6423,17 @@ packages: resolution: {integrity: sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==} hasBin: true + basic-auth-connect@1.1.0: + resolution: {integrity: sha512-rKcWjfiRZ3p5WS9e5q6msXa07s6DaFAMXoyowV+mb2xQG+oYdw2QEUyKi0Xp95JvXzShlM+oGy5QuqSK6TfC1Q==} + + basic-auth@2.0.1: + resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} + engines: {node: '>= 0.8'} + + basic-ftp@5.3.1: + resolution: {integrity: sha512-bopVNp6ugyA150DDuZfPFdt1KZ5a94ZDiwX4hMgZDzF+GttD80lEy8kj98kbyhLXnPvhtIo93mdnLIjpCAeeOw==} + engines: {node: '>=10.0.0'} + batch@0.6.1: resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} @@ -6308,6 +6451,9 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + bl@5.1.0: resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} @@ -6329,6 +6475,10 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + boxen@5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} + brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -6360,12 +6510,19 @@ packages: bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + buffer-crc32@1.0.0: + resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} + engines: {node: '>=8.0.0'} + buffer-equal-constant-time@1.0.1: resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -6403,6 +6560,9 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} + call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -6452,6 +6612,10 @@ packages: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + chownr@3.0.0: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} @@ -6460,6 +6624,9 @@ packages: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} + ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + ci-info@4.3.1: resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} engines: {node: '>=8'} @@ -6467,9 +6634,21 @@ packages: cjs-module-lexer@2.1.0: resolution: {integrity: sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==} + cjson@0.3.3: + resolution: {integrity: sha512-yKNcXi/Mvi5kb1uK0sahubYiyfUO2EUgOp4NcY9+8NX5Xmc+4yeNogZuLFkpLBBj7/QI9MjRUIuXrV9XOw5kVg==} + engines: {node: '>= 0.3.0'} + class-variance-authority@0.7.1: resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + cli-cursor@4.0.0: resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -6478,10 +6657,19 @@ packages: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} + cli-highlight@2.1.11: + resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true + cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + cli-truncate@4.0.0: resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} engines: {node: '>=18'} @@ -6493,6 +6681,9 @@ packages: client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -6533,9 +6724,25 @@ packages: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} + color-convert@3.1.3: + resolution: {integrity: sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==} + engines: {node: '>=14.6'} + color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-name@2.1.0: + resolution: {integrity: sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==} + engines: {node: '>=12.20'} + + color-string@2.1.4: + resolution: {integrity: sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==} + engines: {node: '>=18'} + + color@5.0.3: + resolution: {integrity: sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==} + engines: {node: '>=18'} + colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -6558,9 +6765,17 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} + commander@5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + compress-commons@6.0.2: + resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} + engines: {node: '>= 14'} + compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} @@ -6575,10 +6790,21 @@ packages: confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + configstore@5.0.1: + resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} + engines: {node: '>=8'} + connect-history-api-fallback@2.0.0: resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} engines: {node: '>=0.8'} + connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + consola@3.4.2: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} @@ -6657,13 +6883,31 @@ packages: typescript: optional: true + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + + crc32-stream@6.0.0: + resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} + engines: {node: '>= 14'} + create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + css-loader@7.1.2: resolution: {integrity: sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==} engines: {node: '>= 18.12.0'} @@ -6701,6 +6945,9 @@ packages: csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + csv-parse@5.6.0: + resolution: {integrity: sha512-l3nz3euub2QMg5ouu5U09Ew9Wf6/wQ8I++ch1loQ0ljmzhmfZYrH9fflS22i/PQEvsPvxCwxgz5q7UB8K1JO4Q==} + cva@1.0.0-beta.4: resolution: {integrity: sha512-F/JS9hScapq4DBVQXcK85l9U91M6ePeXoBMSp7vypzShoefUBxjQTo3g3935PUHgQd+IW77DjbPRIxugy4/GCQ==} peerDependencies: @@ -6757,6 +7004,10 @@ packages: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} + data-uri-to-buffer@6.0.2: + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} + engines: {node: '>= 14'} + data-urls@5.0.0: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} @@ -6787,6 +7038,15 @@ packages: supports-color: optional: true + debug@4.3.1: + resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -6817,6 +7077,16 @@ packages: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} + deep-equal-in-any-order@2.2.0: + resolution: {integrity: sha512-lUYf3Oz/HrPcNmKe+S+QSdY5/hzKleftcFBWLwbHNZ5007RUKgN0asWlAHuQGvT9djYd9PYQFiu0TyNS+h3j/g==} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deep-freeze@0.0.1: + resolution: {integrity: sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg==} + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -6847,6 +7117,10 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + degenerator@5.0.1: + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} + engines: {node: '>= 14'} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -6901,6 +7175,9 @@ packages: resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} + discontinuous-range@1.0.0: + resolution: {integrity: sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==} + dns-packet@5.6.1: resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} engines: {node: '>=6'} @@ -6934,6 +7211,10 @@ packages: dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + dotenv@16.6.1: resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} @@ -6986,10 +7267,16 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emojilib@2.4.0: + resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} + emojis-list@3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} + enabled@2.0.0: + resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} + encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -7105,6 +7392,10 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} + escape-goat@2.1.1: + resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} + engines: {node: '>=8'} + escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} @@ -7116,6 +7407,11 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + eslint-config-prettier@9.1.2: resolution: {integrity: sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==} hasBin: true @@ -7228,6 +7524,12 @@ packages: eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + events-listener@1.1.0: + resolution: {integrity: sha512-Kd3EgYfODHueq6GzVfs/VUolh2EgJsS8hkO3KpnDrxVjU3eq63eXM2ujXkhPP+OkeUOhL8CxdfZbQXzryb5C4g==} + + events-universal@1.0.1: + resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} + events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -7248,6 +7550,14 @@ packages: resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + exegesis-express@4.0.0: + resolution: {integrity: sha512-V2hqwTtYRj0bj43K4MCtm0caD97YWkqOUHFMRCBW5L1x9IjyqOEc7Xa4oQjjiFbeFOSQzzwPV+BzXsQjSz08fw==} + engines: {node: '>=6.0.0', npm: '>5.0.0'} + + exegesis@4.3.0: + resolution: {integrity: sha512-V90IJQ4XYO1SfH5qdJTOijXkQTF3hSpSHHqlf7MstUMDKP22iAvi63gweFLtPZ4Gj3Wnh8RgJX5TGu0WiwTyDQ==} + engines: {node: '>=10.0.0', npm: '>5.0.0'} + exit-x@0.2.2: resolution: {integrity: sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==} engines: {node: '>= 0.8.0'} @@ -7308,6 +7618,9 @@ packages: resolution: {integrity: sha512-6rxyATwPCkaFIL3JLqw8qXqMpIZ942pTX/tbQFkRsDGblS8tNGtlUauA/+mt6RUfqn/4MoEr+WDkYoIQbibWuQ==} engines: {node: '>=6.0.0'} + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -7344,6 +7657,9 @@ packages: picomatch: optional: true + fecha@4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -7355,10 +7671,18 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} + filesize@6.4.0: + resolution: {integrity: sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ==} + engines: {node: '>= 0.4.0'} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + finalhandler@1.3.1: resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} @@ -7387,6 +7711,11 @@ packages: resolution: {integrity: sha512-Zgc6yPtmPxAZo+FoK6LMG6zpSEsoSK8ifIR+IqF4oWuC3uWZU40OjxgfLTSFcsRlj/k/wD66zNv2UiTRreCNSw==} engines: {node: '>=18'} + firebase-tools@14.15.2: + resolution: {integrity: sha512-6wyA9F3tXToAKJR8IkDyHOlOwAOL6j9qoA1inF6psiC8lzMwJ9/t+Lc7HmvIgOb1KDdj82vxL3llX28wcHwonw==} + engines: {node: '>=20.0.0 || >=22.0.0'} + hasBin: true + firebase@11.10.0: resolution: {integrity: sha512-nKBXoDzF0DrXTBQJlZa+sbC5By99ysYU1D6PkMRYknm0nCW7rJly47q492Ht7Ndz5MeYSBuboKuhS1e6mFC03w==} @@ -7404,6 +7733,9 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + fn.name@1.1.0: + resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} + follow-redirects@1.15.11: resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} engines: {node: '>=4.0'} @@ -7448,10 +7780,18 @@ packages: resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} engines: {node: '>= 0.8'} + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + fs-extra@11.3.2: resolution: {integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==} engines: {node: '>=14.14'} + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + fs-minipass@3.0.3: resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -7459,6 +7799,11 @@ packages: fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -7477,14 +7822,34 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + fuzzy@0.1.3: + resolution: {integrity: sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w==} + engines: {node: '>= 0.6.0'} + gaxios@6.7.1: resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} engines: {node: '>=14'} + gaxios@7.1.3: + resolution: {integrity: sha512-YGGyuEdVIjqxkxVH1pUTMY/XtmmsApXrCVv5EU25iX6inEPbV+VakJfLealkBtJN69AQmh1eGOdCl9Sm1UP6XQ==} + engines: {node: '>=18'} + + gaxios@7.1.5: + resolution: {integrity: sha512-5FZy72Rh8LhtjmvDrKkI+lVhrsQrVKVsItxMoDm5mNQE+xR0WVIIs+jzPSJgBvKVsLi24fZhXJIsNI0bihDzFg==} + engines: {node: '>=18'} + gcp-metadata@6.1.1: resolution: {integrity: sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==} engines: {node: '>=14'} + gcp-metadata@8.1.2: + resolution: {integrity: sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==} + engines: {node: '>=18'} + + gcp-metadata@8.1.3: + resolution: {integrity: sha512-ziTrzUhhpL9Zk5k0HHzgP/KIpWDJT0VMBC/ynt/QIBvTW+UUcSivQRl6VlwTf/EilDxtSWklHoRsKy1c4k+59w==} + engines: {node: '>=18'} + generator-function@2.0.1: resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} engines: {node: '>= 0.4'} @@ -7532,6 +7897,10 @@ packages: get-tsconfig@4.13.0: resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} + get-uri@6.0.5: + resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==} + engines: {node: '>= 14'} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -7540,6 +7909,12 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob-slash@1.0.0: + resolution: {integrity: sha512-ZwFh34WZhZX28ntCMAP1mwyAJkn8+Omagvt/GvA+JQM/qgT0+MR2NPF3vhvgdshfdvDyGZXs8fPXW84K32Wjuw==} + + glob-slasher@1.0.1: + resolution: {integrity: sha512-5MUzqFiycIKLMD1B0dYOE4hGgLLUZUNGGYO4BExdwT32wUwW3DBOE7lMQars7vB1q43Fb3Tyt+HmgLKsJhDYdg==} + glob-to-regex.js@1.2.0: resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} engines: {node: '>=10.0'} @@ -7568,6 +7943,10 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + global-dirs@3.0.1: + resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} + engines: {node: '>=10'} + globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -7580,6 +7959,14 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} + google-auth-library@10.5.0: + resolution: {integrity: sha512-7ABviyMOlX5hIVD60YOfHw4/CxOfBhyduaYB+wbFWCWoni4N7SLcV46hrVRktuBbZjFC9ONyqamZITN7q3n32w==} + engines: {node: '>=18'} + + google-auth-library@10.9.0: + resolution: {integrity: sha512-xtvUqvINPhTaBm7nXqlYPcrMHJPm1lCNdSovxnKKhTm+4JsvQ+KGVYJViLoH9Yxu8w+T0Qv5HubzYT9BLrppJg==} + engines: {node: '>=18'} + google-auth-library@9.15.1: resolution: {integrity: sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==} engines: {node: '>=14'} @@ -7592,10 +7979,21 @@ packages: resolution: {integrity: sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==} engines: {node: '>=14'} + google-logging-utils@1.1.3: + resolution: {integrity: sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==} + engines: {node: '>=14'} + + googleapis-common@8.0.2: + resolution: {integrity: sha512-5MXeQzIZaqCH7B+HJWqhQm946VARpZep6acbWSr/fcgF2cQANq7allgX+i/G0EqF0WyUxB277gtWMzRYHMl9tg==} + engines: {node: '>=18.0.0'} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} + graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -7610,6 +8008,10 @@ packages: resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} engines: {node: '>=14.0.0'} + gtoken@8.0.0: + resolution: {integrity: sha512-+CqsMbHPiSTdtSO14O51eMNlrp9N79gmeqmXeouJOhfucAedHw9noVe/n5uJk3tbKE6a+6ZCQg3RPhVhHByAIw==} + engines: {node: '>=18'} + handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} @@ -7641,6 +8043,10 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} + has-yarn@2.1.0: + resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} + engines: {node: '>=8'} + hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -7648,6 +8054,13 @@ packages: headers-polyfill@4.0.3: resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} + heap-js@2.7.1: + resolution: {integrity: sha512-EQfezRg0NCZGNlhlDR3Evrw1FVL2G3LhU7EgPoxufQKruNBSYA8MiRPHeWbU+36o+Fhel0wMwM+sLEiBAlNLJA==} + engines: {node: '>=10.0.0'} + + highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + hono@4.12.18: resolution: {integrity: sha512-RWzP96k/yv0PQfyXnWjs6zot20TqfpfsNXhOnev8d1InAxubW93L11/oNUc3tQqn2G0bSdAOBpX+2uDFHV7kdQ==} engines: {node: '>=16.9.0'} @@ -7793,6 +8206,10 @@ packages: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} + import-lazy@2.1.0: + resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} + engines: {node: '>=4'} + import-local@3.2.0: resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} engines: {node: '>=8'} @@ -7816,6 +8233,13 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + ini@5.0.0: resolution: {integrity: sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==} engines: {node: ^18.17.0 || >=20.5.0} @@ -7833,6 +8257,11 @@ packages: react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc + install-artifact-from-github@1.6.0: + resolution: {integrity: sha512-wKsuzN8fy8QK7iEUqyWTQmvZ1QFGPn1xyl3/1iIIDthDjS7Hn9HoPwHlNakZirWbCsbad0lZMkr6Xfbpe1pUzw==} + engines: {node: '>=18'} + hasBin: true + internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} @@ -7841,14 +8270,14 @@ packages: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} - ip-address@10.0.1: - resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} - engines: {node: '>= 12'} - ip-address@10.2.0: resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==} engines: {node: '>= 12'} + ip-regex@2.1.0: + resolution: {integrity: sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==} + engines: {node: '>=4'} + ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -7880,10 +8309,17 @@ packages: resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} + is-ci@2.0.0: + resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} + hasBin: true + is-core-module@2.16.1: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} @@ -7938,6 +8374,14 @@ packages: engines: {node: '>=14.16'} hasBin: true + is-installed-globally@0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + is-interactive@2.0.0: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} @@ -7957,18 +8401,34 @@ packages: is-node-process@1.2.0: resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} + is-npm@5.0.0: + resolution: {integrity: sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==} + engines: {node: '>=10'} + is-number-object@1.1.1: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} + is-number@2.1.0: + resolution: {integrity: sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==} + engines: {node: '>=0.10.0'} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + is-obj@3.0.0: resolution: {integrity: sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==} engines: {node: '>=12'} + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + is-plain-obj@3.0.0: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} engines: {node: '>=10'} @@ -8003,6 +8463,9 @@ packages: resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} + is-stream-ended@0.1.4: + resolution: {integrity: sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==} + is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -8023,6 +8486,13 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + is-unicode-supported@1.3.0: resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} engines: {node: '>=12'} @@ -8031,6 +8501,9 @@ packages: resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} + is-url@1.2.4: + resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} + is-weakmap@2.0.2: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} @@ -8046,10 +8519,24 @@ packages: is-what@3.14.1: resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + is-wsl@3.1.0: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} + is-yarn-global@0.3.0: + resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} + + is2@2.0.1: + resolution: {integrity: sha512-+WaJvnaA7aJySz2q/8sLjMb2Mw14KTplHmSwcSpZ/fWJPkUmqw3YTzSWbPJ7OAwRvdYTWF2Wg+yYJ1AdP5Z8CA==} + engines: {node: '>=v0.10.0'} + + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -8067,6 +8554,9 @@ packages: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} + isomorphic-fetch@3.0.0: + resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} + istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -8259,7 +8749,13 @@ packages: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true - jose@4.15.9: + jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + + join-path@1.1.1: + resolution: {integrity: sha512-jnt9OC34sLXMLJ6YfPQ2ZEKrR9mB5ZbSnQb4LPaOx1c5rTzxpR33L18jjp0r75mGGTJmsil3qwN1B5IBeTnSSA==} + + jose@4.15.9: resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==} jose@6.2.3: @@ -8319,6 +8815,13 @@ packages: resolution: {integrity: sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==} engines: {node: ^20.17.0 || >=22.9.0} + json-parse-helpfulerror@1.0.3: + resolution: {integrity: sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg==} + + json-ptr@3.1.1: + resolution: {integrity: sha512-SiSJQ805W1sDUCD1+/t1/1BIrveq2Fe9HJqENxZmMCILmrPI7WhS/pePpIOx85v6/H2z1Vy7AI08GV2TzfXocg==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -8370,6 +8873,10 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -8382,9 +8889,16 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} + kuler@2.0.0: + resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} + launch-editor@2.12.0: resolution: {integrity: sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==} + lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + less-loader@12.3.0: resolution: {integrity: sha512-0M6+uYulvYIWs52y0LqN4+QM9TqWAohYSNTo4htE8Z7Cn3G/qQMEmktfHmyJT23k+20kU9zHH2wrfFXkxNLtVw==} engines: {node: '>= 18.12.0'} @@ -8419,6 +8933,12 @@ packages: libphonenumber-js@1.12.25: resolution: {integrity: sha512-u90tUu/SEF8b+RaDKCoW7ZNFDakyBtFlX1ex3J+VH+ElWes/UaitJLt/w4jGu8uAE41lltV/s+kMVtywcMEg7g==} + libsodium-wrappers@0.7.16: + resolution: {integrity: sha512-Gtr/WBx4dKjvRL1pvfwZqu7gO6AfrQ0u9vFL+kXihtHf6NfkROR8pjYWn98MFDI3jN19Ii1ZUfPR9afGiPyfHg==} + + libsodium@0.7.16: + resolution: {integrity: sha512-3HrzSPuzm6Yt9aTYCDxYEG8x8/6C0+ag655Y7rhhWZM9PT4NpdnbqlzXhGZlDnkgR6MeSTnOt/VIyHLs9aSf+Q==} + license-webpack-plugin@4.0.2: resolution: {integrity: sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==} peerDependencies: @@ -8543,6 +9063,9 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + lodash._objecttypes@2.4.1: + resolution: {integrity: sha512-XpqGh1e7hhkOzftBfWE7zt+Yn9mVHFkDhicVttvKLsoCMLVVL+xTQjfjB4X4vtznauxv0QZ5ZAeqjvat0dh62Q==} + lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} @@ -8564,6 +9087,9 @@ packages: lodash.isnumber@3.0.3: resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + lodash.isobject@2.4.1: + resolution: {integrity: sha512-sTebg2a1PoicYEZXD5PBdQcTlIJ6hUslrlWr7iV0O7n+i4596s2NQ9I5CaZ5FbXSfya/9WQsrYLANUJv9paYVA==} + lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} @@ -8579,6 +9105,9 @@ packages: lodash.once@4.1.1: resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + lodash.sortby@4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} @@ -8588,6 +9117,10 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + log-symbols@5.1.0: resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} engines: {node: '>=12'} @@ -8600,6 +9133,10 @@ packages: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} + logform@2.7.0: + resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} + engines: {node: '>= 12.0.0'} + long@5.3.2: resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} @@ -8627,9 +9164,16 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + lru-memoizer@2.3.0: resolution: {integrity: sha512-GXn7gyHAMhO13WSKrIiNfztwxodVsP8IoZ3XfrJV4yH2x0/OeTO/FIaAHTY5YekdGgW94njfuKmyyt1E0mR6Ug==} + lsofi@1.0.0: + resolution: {integrity: sha512-MKr9vM1MSm+TSKfI05IYxpKV1NCxpJaBLnELyIf784zYJ5KV9lGCE1EvpA2DtXDNM3fCuFeCwXUzim/fyQRi+A==} + lucide-react@0.544.0: resolution: {integrity: sha512-t5tS44bqd825zAW45UQxpG2CvcC4urOwn2TrwSH8u+MjeE+1NnWl6QqeQ/6NdjMqdOygyiT9p3Ev0p1NJykxjw==} peerDependencies: @@ -8652,6 +9196,10 @@ packages: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} @@ -8666,6 +9214,17 @@ packages: makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + marked-terminal@7.3.0: + resolution: {integrity: sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==} + engines: {node: '>=16.0.0'} + peerDependencies: + marked: '>=1 <16' + + marked@13.0.3: + resolution: {integrity: sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==} + engines: {node: '>= 18'} + hasBin: true + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -8727,6 +9286,11 @@ packages: engines: {node: '>=4'} hasBin: true + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + mime@3.0.0: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} @@ -8768,6 +9332,14 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@5.1.9: + resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} + engines: {node: '>=10'} + + minimatch@6.2.3: + resolution: {integrity: sha512-5rvZbDy5y2k40rre/0OBbYnl03en25XPU3gOVO7532beGMjAipq88VdS9OeLOZNrD+Tb0lDhBJHZ7Gcd8qKlPg==} + engines: {node: '>=10'} + minimatch@7.4.6: resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} engines: {node: '>=10'} @@ -8803,6 +9375,10 @@ packages: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} @@ -8811,10 +9387,19 @@ packages: resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} engines: {node: '>=16 || 14 >=14.17'} + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + minizlib@3.1.0: resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + mkdirp@2.1.6: resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==} engines: {node: '>=10'} @@ -8823,6 +9408,13 @@ packages: mlly@1.8.0: resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + moo@0.5.3: + resolution: {integrity: sha512-m2fmM2dDm7GZQsY7KK2cme8agi+AAljILjQnof7p1ZMDe6dQ4bdnSMx0cPppudoeNv5hEFQirN6u+O4fDE0IWA==} + + morgan@1.11.0: + resolution: {integrity: sha512-zSkVu3t18r39pw4ixfBKvfZi3y2UOqr7d4WYwcj3m8nXpEQK4rPO6GLzs/CExoRgmX3y9EjmmcXqv6jq0SK46g==} + engines: {node: '>= 0.8.0'} + mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} @@ -8830,6 +9422,9 @@ packages: ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -8861,6 +9456,9 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + nan@2.28.0: + resolution: {integrity: sha512-fTsDz99OTq2sVePhGdp4qQhggZFtKr64ZNVyVajRKtMOkJxYekplBh577PiJB12v/D3s2E5cGtOI45LWp6rnLQ==} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -8882,6 +9480,10 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + nearley@2.20.1: + resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==} + hasBin: true + needle@3.3.1: resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} engines: {node: '>= 4.4.x'} @@ -8902,6 +9504,10 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + netmask@2.1.1: + resolution: {integrity: sha512-eonl3sLUha+S1GzTPxychyhnUzKyeQkZ7jLjKrBagJgPla13F+uQ71HgpFefyHgqrjEbCPkDArxYsjY8/+gLKA==} + engines: {node: '>= 0.4.0'} + next-themes@0.4.6: resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==} peerDependencies: @@ -8956,6 +9562,10 @@ packages: engines: {node: '>=10.5.0'} deprecated: Use your platform's native DOMException instead + node-emoji@2.2.0: + resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} + engines: {node: '>=18'} + node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -8982,6 +9592,11 @@ packages: engines: {node: ^20.17.0 || >=22.9.0} hasBin: true + node-gyp@13.0.0: + resolution: {integrity: sha512-FYYyBDWdc+kzoyPd5PqHUgM9DGs1C/Z4jxBZAOnA2GRUVXPivKRREq5q+VVPXVr9aGVqGMaMqyFHbviy/yb7Hg==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} + hasBin: true + node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} @@ -8991,6 +9606,11 @@ packages: node-releases@2.0.36: resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} + nopt@10.0.1: + resolution: {integrity: sha512-df3sBr/6ax9hSGuC3CspvLlbnX8cP5L5nZwXF8cGN8l0zSWR6BvzmQ6jPUKjvo6+/xdpkNvEcucBNUdBeeV13g==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} + hasBin: true + nopt@9.0.0: resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==} engines: {node: ^20.17.0 || >=22.9.0} @@ -9081,6 +9701,10 @@ packages: obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -9092,6 +9716,9 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + one-time@1.0.0: + resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} + onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} @@ -9108,10 +9735,21 @@ packages: resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} engines: {node: '>=18'} + open@6.4.0: + resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} + engines: {node: '>=8'} + + openapi3-ts@3.2.0: + resolution: {integrity: sha512-/ykNWRV5Qs0Nwq7Pc0nJ78fgILvOT/60OxEmB3v7yQ8a8Bwcm43D4diaYazG/KBn6czA+52XYy931WFLMCUeSg==} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + ora@6.3.1: resolution: {integrity: sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -9130,6 +9768,10 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} + p-defer@3.0.0: + resolution: {integrity: sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==} + engines: {node: '>=8'} + p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -9154,10 +9796,22 @@ packages: resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} engines: {node: '>=16.17'} + p-throttle@7.0.0: + resolution: {integrity: sha512-aio0v+S0QVkH1O+9x4dHtD4dgCExACcL+3EtNaGqC01GBudS9ijMuUsmN8OVScyV4OOp0jqdLShZFuSlbL/AsA==} + engines: {node: '>=18'} + p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + pac-proxy-agent@7.2.0: + resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} + engines: {node: '>= 14'} + + pac-resolver@7.0.1: + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} + engines: {node: '>= 14'} + package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} @@ -9181,9 +9835,18 @@ packages: parse5-html-rewriting-stream@8.0.0: resolution: {integrity: sha512-wzh11mj8KKkno1pZEu+l2EVeWsuKDfR5KNWZOTsslfUX8lPDZx77m9T0kIoAVkFtD1nx6YF8oh4BnPHvxMtNMw==} + parse5-htmlparser2-tree-adapter@6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + parse5-sax-parser@8.0.0: resolution: {integrity: sha512-/dQ8UzHZwnrzs3EvDj6IkKrD/jIZyTlB+8XrHJvcjNgRdmWruNdN9i9RK/JtxakmlUdPwKubKPTCqvbTgzGhrw==} + parse5@5.1.1: + resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} @@ -9231,6 +9894,9 @@ packages: path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + path-to-regexp@1.9.0: + resolution: {integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==} + path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} @@ -9248,6 +9914,43 @@ packages: resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} + pg-cloudflare@1.4.0: + resolution: {integrity: sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==} + + pg-connection-string@2.14.0: + resolution: {integrity: sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg==} + + pg-gateway@0.3.0-beta.4: + resolution: {integrity: sha512-CTjsM7Z+0Nx2/dyZ6r8zRsc3f9FScoD5UAOlfUx1Fdv/JOIWvRbF7gou6l6vP+uypXQVoYPgw8xZDXgMGvBa4Q==} + + pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + + pg-pool@3.14.0: + resolution: {integrity: sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==} + peerDependencies: + pg: '>=8.0' + + pg-protocol@1.15.0: + resolution: {integrity: sha512-cq9sECI5s0+uPUXjbz8ioyPJni6RzsRib0US67i5IoTZKw8fNeYlVE7u8F4dG7vEJJtc5wdD1K189lCCUwqWTQ==} + + pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + + pg@8.22.0: + resolution: {integrity: sha512-8wih1vVIBMxoUM2oB4soJsD9tDnDpLv4OXBJ+EJzFsvycD+lfyIreC2gGHq78f8jbLLt+bvlPTFdFZfJkOuzAA==} + engines: {node: '>= 16.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + + pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -9290,6 +9993,20 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + playwright-core@1.61.1: + resolution: {integrity: sha512-h7Qlt6m4REp25qvIdvbDtVmD4LqVXfpRxhORv9L0jzETM05p4fuPJ3dKyuSXQxDSbXnmS79HAgi9589lGSpLkg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.61.1: + resolution: {integrity: sha512-DWnY5o3YbLWK4GovuAVwpqL+1VwGNdUGrRr++8j8PtQQzvAVZUIMjKQ90fY689sEJZJBbZVw1rXaOKSTitkzPQ==} + engines: {node: '>=18'} + hasBin: true + + portfinder@1.0.38: + resolution: {integrity: sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==} + engines: {node: '>= 10.12'} + possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} @@ -9371,6 +10088,22 @@ packages: resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} engines: {node: ^10 || ^12 || >=14} + postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + + postgres-bytea@1.0.1: + resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==} + engines: {node: '>=0.10.0'} + + postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + + postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -9404,9 +10137,24 @@ packages: resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==} engines: {node: ^20.17.0 || >=22.9.0} + proc-log@7.0.0: + resolution: {integrity: sha512-FYgfaA69XZ93zaXLoMNQ+ViDXGGBgR8aLh03txzcFhV+9xOXx7+8DLCULrKKpR9+GsH9ZfHm82aSUPpozX0Ztg==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + promise-breaker@6.0.0: + resolution: {integrity: sha512-BthzO9yTPswGf7etOBiHCVuugs2N01/Q/94dIPls48z2zCmrnDptUUZzfIb+41xq0MnYZ/BzmOd6ikDR4ibNZA==} + promise-retry@2.0.1: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} engines: {node: '>=10'} @@ -9418,6 +10166,9 @@ packages: prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + proto3-json-serializer@2.0.2: resolution: {integrity: sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==} engines: {node: '>=14.0.0'} @@ -9430,6 +10181,13 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} + proxy-agent@6.5.0: + resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} + engines: {node: '>= 14'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} @@ -9437,6 +10195,10 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + pupa@2.1.1: + resolution: {integrity: sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==} + engines: {node: '>=8'} + pure-rand@7.0.1: resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} @@ -9458,6 +10220,13 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + railroad-diagrams@1.0.0: + resolution: {integrity: sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==} + + randexp@0.4.6: + resolution: {integrity: sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==} + engines: {node: '>=0.12'} + range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -9470,6 +10239,14 @@ packages: resolution: {integrity: sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==} engines: {node: '>= 0.10'} + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + re2@1.25.0: + resolution: {integrity: sha512-mtxKjWS+VYIt2ijgt6ohEdwzNlGPom1whyaEKJD40cBc/wqkO1vJoOyK539Qb8Xa9m4GA6hiPGDIbW/d3egSRQ==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} + react-day-picker@9.11.1: resolution: {integrity: sha512-l3ub6o8NlchqIjPKrRFUCkTUEq6KwemQlfv3XZzzwpUeGwmDJ+0u0Upmt38hJyd7D/vn2dQoOoLV/qAp0o3uUw==} engines: {node: '>=18'} @@ -9582,6 +10359,13 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} + readable-stream@4.7.0: + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + readdir-glob@1.1.3: + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -9634,6 +10418,14 @@ packages: resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} engines: {node: '>=4'} + registry-auth-token@5.1.1: + resolution: {integrity: sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==} + engines: {node: '>=14'} + + registry-url@5.1.0: + resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} + engines: {node: '>=8'} + regjsgen@0.8.0: resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} @@ -9685,6 +10477,10 @@ packages: resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + restore-cursor@4.0.0: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -9693,6 +10489,10 @@ packages: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} + ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + retry-request@7.0.2: resolution: {integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==} engines: {node: '>=14'} @@ -9715,6 +10515,10 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} + hasBin: true + rimraf@6.0.1: resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} engines: {node: 20 || >=22} @@ -9786,6 +10590,10 @@ packages: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -9846,6 +10654,10 @@ packages: resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} engines: {node: '>=10'} + semver-diff@3.1.1: + resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} + engines: {node: '>=8'} + semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -9978,6 +10790,10 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + skin-tone@2.0.0: + resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} + engines: {node: '>=8'} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -10018,6 +10834,10 @@ packages: react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + sort-any@4.0.7: + resolution: {integrity: sha512-UuZVEXClHW+bVa6ZBQ4biTWmLXMP7y6/jv5arfA0rKk7ZExy+5Zm19uekIqqDx6ZuvUMu7z5Ba9FfBi6FlGXPQ==} + engines: {node: '>=12'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -10063,13 +10883,24 @@ packages: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + sql-formatter@15.8.2: + resolution: {integrity: sha512-kTYRg5FIcvsDtYUG2Qn9pYT6xKwiLJN5TTIvc5Mur6hIg4pSfdpHu8Yyu5bqESLHnVM3mXzD446cb2+uEaKZXg==} + hasBin: true + ssri@13.0.1: resolution: {integrity: sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==} engines: {node: ^20.17.0 || >=22.9.0} + stack-trace@0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -10104,12 +10935,21 @@ packages: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} + stream-chain@2.2.5: + resolution: {integrity: sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==} + stream-events@1.0.5: resolution: {integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==} + stream-json@1.9.1: + resolution: {integrity: sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==} + stream-shift@1.0.3: resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + streamx@2.28.0: + resolution: {integrity: sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw==} + strict-event-emitter@0.5.1: resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} @@ -10186,6 +11026,10 @@ packages: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -10217,6 +11061,11 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true + superstatic@9.2.0: + resolution: {integrity: sha512-QrJAJIpAij0jJT1nEwYTB0SzDi4k0wYygu6GxK0ko8twiQgfgaOAZ7Hu99p02MTAsGho753zhzSvsw8We4PBEQ==} + engines: {node: 18 || 20 || 22} + hasBin: true + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -10225,6 +11074,10 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} + supports-hyperlinks@3.2.0: + resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} + engines: {node: '>=14.18'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -10253,6 +11106,14 @@ packages: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} + tar-stream@3.2.0: + resolution: {integrity: sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==} + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + tar@7.5.1: resolution: {integrity: sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==} engines: {node: '>=18'} @@ -10262,10 +11123,16 @@ packages: resolution: {integrity: sha512-dzGK0boVlC4W5QFuQN1EFSl3bIDYsk7Tj40U6eIBnK2k/8ml7TZ5agbI5j5+qnoVcAA+rNtBml8SEiLxZpNqRQ==} engines: {node: '>=18'} + tcp-port-used@1.0.3: + resolution: {integrity: sha512-4CEQ3qRJYo+mtEbJ+OoQu3dF4TDkwaO3RDVC4UzP5cpAOIUWwuwPjD7sdxDFFqsMUjsXVVYBMlg/boAaloThMA==} + teeny-request@9.0.0: resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} engines: {node: '>=14'} + teex@1.0.1: + resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} + terser-webpack-plugin@5.4.0: resolution: {integrity: sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==} engines: {node: '>= 10.13.0'} @@ -10300,6 +11167,12 @@ packages: resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} engines: {node: '>=18'} + text-decoder@1.2.7: + resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==} + + text-hex@1.0.0: + resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} + thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -10313,6 +11186,9 @@ packages: peerDependencies: tslib: ^2 + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} @@ -10363,6 +11239,10 @@ packages: resolution: {integrity: sha512-Y1KQBgDd/NUc+LfOtKS6mNsC9CCaH+m2P1RoIZy7RAPo3C3/t8X45+zgut31cRZtZ3xKPjfn3TkGTrctC2TQIQ==} hasBin: true + tmp@0.2.7: + resolution: {integrity: sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==} + engines: {node: '>=14.14'} + tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -10386,6 +11266,9 @@ packages: resolution: {integrity: sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==} engines: {node: '>=16'} + toxic@1.0.1: + resolution: {integrity: sha512-WI3rIGdcaKULYg7KVoB0zcjikqvcYYvcuT6D89bFPz2rVR0Rl0PK6x8/X62rtdLtBKIE985NzVf/auTtGegIIg==} + tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -10406,6 +11289,10 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true + triple-beam@1.4.1: + resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} + engines: {node: '>= 14.0.0'} + ts-api-utils@2.1.0: resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} engines: {node: '>=18.12'} @@ -10466,6 +11353,10 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsscmp@1.0.6: + resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} + engines: {node: '>=0.6.x'} + tsup@8.5.0: resolution: {integrity: sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==} engines: {node: '>=18'} @@ -10505,6 +11396,10 @@ packages: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -10540,6 +11435,9 @@ packages: typed-assert@1.0.9: resolution: {integrity: sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==} + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + typescript-eslint@8.46.2: resolution: {integrity: sha512-vbw8bOmiuYNdzzV3lsiWv6sRwjyuKJMQqWulBOU7M0RrxedXledX8G8kBbQeiOYDnTfiXz0Y4081E1QMNB6iQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -10578,6 +11476,10 @@ packages: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} engines: {node: '>=4'} + unicode-emoji-modifier-base@1.0.0: + resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} + engines: {node: '>=4'} + unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} @@ -10590,6 +11492,14 @@ packages: resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} engines: {node: '>=4'} + unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} + + universal-analytics@0.5.4: + resolution: {integrity: sha512-db38BYsx+oZEx0bc+PeGmIwG+YiYH5Xluhxf9EBnL39U4+DAXJtXQHLJ+zzTH36lx/N54/WKQQYnh0kQWJ74yg==} + engines: {node: '>=22.0.0'} + universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -10616,9 +11526,19 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + update-notifier-cjs@5.1.7: + resolution: {integrity: sha512-eZWTh8F+VCEoC4UIh0pKmh8h4izj65VvLhCpJpVefUxdYe0fU3GBrC4Sbh1AoWA/miNPAb6UVlp2fUQNsfp+3g==} + engines: {node: '>=14'} + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + url-join@0.0.1: + resolution: {integrity: sha512-H6dnQ/yPAAVzMQRvEvyz01hhfQL5qRWSEt7BX8t9DqnPw9BjMb64fjIRq76Uvf1hkHp+mTZvEVJ5guXOT0Xqaw==} + + url-template@2.0.8: + resolution: {integrity: sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==} + use-callback-ref@1.3.3: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} @@ -10655,6 +11575,10 @@ packages: resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} hasBin: true + uuid@14.0.1: + resolution: {integrity: sha512-6ZxzVpzDXDa3bJWaHilVayA+BH/1zmxCJoVgvmqJnid/gPoKHxUrS/aC/T6LGQtNHT+XHG9fXPJB4d+IrU30Ew==} + hasBin: true + uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). @@ -10672,6 +11596,9 @@ packages: resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} + valid-url@1.0.9: + resolution: {integrity: sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==} + validate-npm-package-name@6.0.2: resolution: {integrity: sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -10926,14 +11853,31 @@ packages: engines: {node: ^20.17.0 || >=22.9.0} hasBin: true + which@7.0.0: + resolution: {integrity: sha512-RancgH2dmbLdHl6LRhEqvklWMgl/Hdnun0Y90KhBOLkMefg8Qa7/Zel8Sm+8HEcP6DEjzsWzpkuBQEZok58isA==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} + hasBin: true + why-is-node-running@2.3.0: resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} hasBin: true + widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + winston-transport@4.9.0: + resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==} + engines: {node: '>= 12.0.0'} + + winston@3.19.0: + resolution: {integrity: sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==} + engines: {node: '>= 12.0.0'} + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -10960,10 +11904,25 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + write-file-atomic@5.0.1: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + ws@7.5.11: + resolution: {integrity: sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + ws@8.18.3: resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} engines: {node: '>=10.0.0'} @@ -10980,6 +11939,10 @@ packages: resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} engines: {node: '>=18'} + xdg-basedir@4.0.0: + resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} + engines: {node: '>=8'} + xhr2@0.2.1: resolution: {integrity: sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==} engines: {node: '>= 6'} @@ -10991,6 +11954,10 @@ packages: xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -11005,6 +11972,15 @@ packages: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -11013,6 +11989,10 @@ packages: resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} + yargs@16.2.2: + resolution: {integrity: sha512-Nt9ZJjXTv5R8MHbqby/wXQ6Gi0Bb3TcYZkR1bzuL4yB2OxWPkXknz513gEF0GoA6tn00UpbPvERW8rzCuWCA6w==} + engines: {node: '>=10'} + yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} @@ -11033,6 +12013,10 @@ packages: resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} engines: {node: '>=18'} + zip-stream@6.0.1: + resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} + engines: {node: '>= 14'} + zod-to-json-schema@3.24.6: resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==} peerDependencies: @@ -11170,13 +12154,13 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.3.26(3e5f368b1c7a3c24585f0991739387fe)': + '@angular-devkit/build-angular@20.3.26(354cd8b8691501a425f00b11a2e47416)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2003.26(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2003.26(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.105.0))(webpack@5.105.0(esbuild@0.28.0)) + '@angular-devkit/build-webpack': 0.2003.26(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.105.0(esbuild@0.28.0)))(webpack@5.105.0(esbuild@0.28.0)) '@angular-devkit/core': 20.3.26(chokidar@4.0.3) - '@angular/build': 20.3.26(29b2aeca659b30afaf64f347b8d0b9ab) + '@angular/build': 20.3.26(892459dd01d51d39f98ca810f1824ad1) '@angular/compiler-cli': 20.3.21(@angular/compiler@20.3.25)(typescript@5.9.3) '@babel/core': 7.28.3 '@babel/generator': 7.28.3 @@ -11225,7 +12209,7 @@ snapshots: typescript: 5.9.3 webpack: 5.105.0(esbuild@0.28.0) webpack-dev-middleware: 7.4.2(webpack@5.105.0(esbuild@0.28.0)) - webpack-dev-server: 5.2.2(webpack@5.105.0) + webpack-dev-server: 5.2.2(webpack@5.105.0(esbuild@0.28.0)) webpack-merge: 6.0.1 webpack-subresource-integrity: 5.1.0(webpack@5.105.0(esbuild@0.28.0)) optionalDependencies: @@ -11234,7 +12218,7 @@ snapshots: '@angular/platform-server': 20.3.25(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.3.25)(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.21(@angular/animations@20.3.21(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/ssr': 20.3.26(cf5d6e644c41e8ccd7f957989714a299) esbuild: 0.28.0 - jest: 30.2.0(@types/node@20.19.24) + jest: 30.2.0(@types/node@24.9.2)(ts-node@10.9.2(@types/node@24.9.2)(typescript@5.9.3)) jest-environment-jsdom: 30.2.0 ng-packagr: 20.3.0(@angular/compiler-cli@20.3.21(@angular/compiler@20.3.25)(typescript@5.9.3))(tailwindcss@4.1.16)(tslib@2.8.1)(typescript@5.9.3) tailwindcss: 4.1.16 @@ -11261,13 +12245,13 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-angular@20.3.26(a053227dddd84e327a6ac3dd5622eac8)': + '@angular-devkit/build-angular@20.3.26(8785e174638123b2037b72df31a63ffb)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2003.26(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2003.26(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.105.0))(webpack@5.105.0(esbuild@0.28.0)) + '@angular-devkit/build-webpack': 0.2003.26(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.105.0(esbuild@0.28.0)))(webpack@5.105.0(esbuild@0.28.0)) '@angular-devkit/core': 20.3.26(chokidar@4.0.3) - '@angular/build': 20.3.26(30015dc94060e12dd9676286e19705fc) + '@angular/build': 20.3.26(cbb794e594450ca1eb21d6401ae650ab) '@angular/compiler-cli': 20.3.21(@angular/compiler@20.3.25)(typescript@5.9.3) '@babel/core': 7.28.3 '@babel/generator': 7.28.3 @@ -11316,7 +12300,7 @@ snapshots: typescript: 5.9.3 webpack: 5.105.0(esbuild@0.28.0) webpack-dev-middleware: 7.4.2(webpack@5.105.0(esbuild@0.28.0)) - webpack-dev-server: 5.2.2(webpack@5.105.0) + webpack-dev-server: 5.2.2(webpack@5.105.0(esbuild@0.28.0)) webpack-merge: 6.0.1 webpack-subresource-integrity: 5.1.0(webpack@5.105.0(esbuild@0.28.0)) optionalDependencies: @@ -11325,7 +12309,7 @@ snapshots: '@angular/platform-server': 20.3.25(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.3.25)(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.21(@angular/animations@20.3.21(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/ssr': 20.3.26(cf5d6e644c41e8ccd7f957989714a299) esbuild: 0.28.0 - jest: 30.2.0(@types/node@24.9.2)(ts-node@10.9.2(@types/node@24.9.2)(typescript@5.9.3)) + jest: 30.2.0(@types/node@20.19.24)(ts-node@10.9.2(@types/node@20.19.24)(typescript@5.9.3)) jest-environment-jsdom: 30.2.0 ng-packagr: 20.3.0(@angular/compiler-cli@20.3.21(@angular/compiler@20.3.25)(typescript@5.9.3))(tailwindcss@4.1.16)(tslib@2.8.1)(typescript@5.9.3) tailwindcss: 4.1.16 @@ -11352,12 +12336,12 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2003.26(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.105.0))(webpack@5.105.0(esbuild@0.28.0))': + '@angular-devkit/build-webpack@0.2003.26(chokidar@4.0.3)(webpack-dev-server@5.2.2(webpack@5.105.0(esbuild@0.28.0)))(webpack@5.105.0(esbuild@0.28.0))': dependencies: '@angular-devkit/architect': 0.2003.26(chokidar@4.0.3) rxjs: 7.8.2 webpack: 5.105.0(esbuild@0.28.0) - webpack-dev-server: 5.2.2(webpack@5.105.0) + webpack-dev-server: 5.2.2(webpack@5.105.0(esbuild@0.28.0)) transitivePeerDependencies: - chokidar @@ -11482,7 +12466,7 @@ snapshots: '@angular/core': 20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - '@angular/build@20.3.26(29b2aeca659b30afaf64f347b8d0b9ab)': + '@angular/build@20.3.26(892459dd01d51d39f98ca810f1824ad1)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2003.26(chokidar@4.0.3) @@ -11491,8 +12475,8 @@ snapshots: '@babel/core': 7.28.3 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-split-export-declaration': 7.24.7 - '@inquirer/confirm': 5.1.14(@types/node@20.19.24) - '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)) + '@inquirer/confirm': 5.1.14(@types/node@24.9.2) + '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0)) beasties: 0.3.5 browserslist: 4.28.1 esbuild: 0.28.0 @@ -11512,7 +12496,7 @@ snapshots: tinyglobby: 0.2.14 tslib: 2.8.1 typescript: 5.9.3 - vite: 7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6) + vite: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0) watchpack: 2.4.4 optionalDependencies: '@angular/core': 20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1) @@ -11524,7 +12508,7 @@ snapshots: ng-packagr: 20.3.0(@angular/compiler-cli@20.3.21(@angular/compiler@20.3.25)(typescript@5.9.3))(tailwindcss@4.1.16)(tslib@2.8.1)(typescript@5.9.3) postcss: 8.5.12 tailwindcss: 4.1.16 - vitest: 3.2.4(@types/node@20.19.24)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@25.0.1)(less@4.4.0)(lightningcss@1.30.2)(msw@2.11.6(@types/node@20.19.24)(typescript@5.9.3))(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6) + vitest: 3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@25.0.1)(less@4.4.2)(lightningcss@1.30.2)(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' - chokidar @@ -11538,7 +12522,7 @@ snapshots: - tsx - yaml - '@angular/build@20.3.26(30015dc94060e12dd9676286e19705fc)': + '@angular/build@20.3.26(cbb794e594450ca1eb21d6401ae650ab)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2003.26(chokidar@4.0.3) @@ -11547,8 +12531,8 @@ snapshots: '@babel/core': 7.28.3 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-split-export-declaration': 7.24.7 - '@inquirer/confirm': 5.1.14(@types/node@24.9.2) - '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)) + '@inquirer/confirm': 5.1.14(@types/node@20.19.24) + '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0)) beasties: 0.3.5 browserslist: 4.28.1 esbuild: 0.28.0 @@ -11568,7 +12552,7 @@ snapshots: tinyglobby: 0.2.14 tslib: 2.8.1 typescript: 5.9.3 - vite: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6) + vite: 7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0) watchpack: 2.4.4 optionalDependencies: '@angular/core': 20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1) @@ -11580,7 +12564,7 @@ snapshots: ng-packagr: 20.3.0(@angular/compiler-cli@20.3.21(@angular/compiler@20.3.25)(typescript@5.9.3))(tailwindcss@4.1.16)(tslib@2.8.1)(typescript@5.9.3) postcss: 8.5.12 tailwindcss: 4.1.16 - vitest: 3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@25.0.1)(less@4.4.2)(lightningcss@1.30.2)(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) + vitest: 3.2.4(@types/node@20.19.24)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@25.0.1)(less@4.4.0)(lightningcss@1.30.2)(msw@2.11.6(@types/node@20.19.24)(typescript@5.9.3))(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' - chokidar @@ -11680,7 +12664,26 @@ snapshots: '@angular/compiler': 20.3.25 zone.js: 0.15.1 - '@angular/fire@20.0.1(224a9fe38983fbc914b248dcbaf6f32b)': + '@angular/fire@20.0.1(c586ea394f2585d229502db3b5133a2e)': + dependencies: + '@angular-devkit/schematics': 20.3.7(chokidar@4.0.3) + '@angular/common': 20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 20.3.21(@angular/animations@20.3.21(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/platform-browser-dynamic': 20.3.21(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.3.25)(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.21(@angular/animations@20.3.21(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))) + '@schematics/angular': 20.3.7(chokidar@4.0.3) + firebase: 11.10.0 + rxfire: 6.1.0(firebase@11.10.0)(rxjs@7.8.2) + rxjs: 7.8.2 + tslib: 2.8.1 + optionalDependencies: + '@angular/platform-server': 20.3.25(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.3.25)(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.21(@angular/animations@20.3.21(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + firebase-tools: 14.15.2(@types/node@24.9.2)(encoding@0.1.13) + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + - chokidar + + '@angular/fire@20.0.1(c610c615b258e4a2e05e35c7c07ea289)': dependencies: '@angular-devkit/schematics': 20.3.7(chokidar@4.0.3) '@angular/common': 20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) @@ -11694,6 +12697,7 @@ snapshots: tslib: 2.8.1 optionalDependencies: '@angular/platform-server': 20.3.25(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.3.25)(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.21(@angular/animations@20.3.21(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + firebase-tools: 14.15.2(@types/node@20.19.24)(encoding@0.1.13) transitivePeerDependencies: - '@react-native-async-storage/async-storage' - chokidar @@ -11753,6 +12757,14 @@ snapshots: '@antfu/utils@0.7.10': {} + '@apidevtools/json-schema-ref-parser@9.1.2': + dependencies: + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.15 + call-me-maybe: 1.0.2 + js-yaml: 4.1.0 + optional: true + '@asamuzakjp/css-color@3.2.0': dependencies: '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) @@ -11825,7 +12837,7 @@ snapshots: '@babel/core@7.29.0': dependencies: - '@babel/code-frame': 7.29.0 + '@babel/code-frame': 7.29.7 '@babel/generator': 7.29.1 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) @@ -11967,7 +12979,7 @@ snapshots: dependencies: '@babel/core': 7.28.3 '@babel/helper-module-imports': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 + '@babel/helper-validator-identifier': 7.29.7 '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color @@ -11976,7 +12988,7 @@ snapshots: dependencies: '@babel/core': 7.29.0 '@babel/helper-module-imports': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 + '@babel/helper-validator-identifier': 7.29.7 '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color @@ -12687,7 +13699,7 @@ snapshots: '@babel/template@7.28.6': dependencies: - '@babel/code-frame': 7.29.0 + '@babel/code-frame': 7.29.7 '@babel/parser': 7.29.2 '@babel/types': 7.29.0 @@ -12705,7 +13717,7 @@ snapshots: '@babel/traverse@7.29.0': dependencies: - '@babel/code-frame': 7.29.0 + '@babel/code-frame': 7.29.7 '@babel/generator': 7.29.1 '@babel/helper-globals': 7.28.0 '@babel/parser': 7.29.2 @@ -12723,13 +13735,19 @@ snapshots: '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 + '@babel/helper-validator-identifier': 7.29.7 '@bcoe/v8-coverage@0.2.3': {} '@bcoe/v8-coverage@1.0.2': {} - '@cspotcode/source-map-support@0.8.1': + '@colors/colors@1.5.0': + optional: true + + '@colors/colors@1.6.0': + optional: true + + '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 @@ -12753,10 +13771,28 @@ snapshots: '@csstools/css-tokenizer@3.0.4': {} + '@dabh/diagnostics@2.0.8': + dependencies: + '@so-ric/colorspace': 1.1.6 + enabled: 2.0.0 + kuler: 2.0.0 + optional: true + '@date-fns/tz@1.4.1': {} '@discoveryjs/json-ext@0.6.3': {} + '@electric-sql/pglite-tools@0.2.21(@electric-sql/pglite@0.3.16)': + dependencies: + '@electric-sql/pglite': 0.3.16 + optional: true + + '@electric-sql/pglite@0.2.17': + optional: true + + '@electric-sql/pglite@0.3.16': + optional: true + '@emnapi/core@1.6.0': dependencies: '@emnapi/wasi-threads': 1.1.0 @@ -13412,6 +14448,16 @@ snapshots: '@gar/promise-retry@1.0.3': {} + '@google-cloud/cloud-sql-connector@1.11.2': + dependencies: + '@googleapis/sqladmin': 37.0.0 + gaxios: 7.1.5 + google-auth-library: 10.9.0 + p-throttle: 7.0.0 + transitivePeerDependencies: + - supports-color + optional: true + '@google-cloud/firestore@7.11.6(encoding@0.1.13)': dependencies: '@opentelemetry/api': 1.9.0 @@ -13430,12 +14476,36 @@ snapshots: extend: 3.0.2 optional: true + '@google-cloud/precise-date@4.0.0': + optional: true + '@google-cloud/projectify@4.0.0': optional: true '@google-cloud/promisify@4.0.0': optional: true + '@google-cloud/pubsub@4.11.0(encoding@0.1.13)': + dependencies: + '@google-cloud/paginator': 5.0.2 + '@google-cloud/precise-date': 4.0.0 + '@google-cloud/projectify': 4.0.0 + '@google-cloud/promisify': 4.0.0 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.30.0 + arrify: 2.0.1 + extend: 3.0.2 + google-auth-library: 9.15.1(encoding@0.1.13) + google-gax: 4.6.1(encoding@0.1.13) + heap-js: 2.7.1 + is-stream-ended: 0.1.4 + lodash.snakecase: 4.1.1 + p-defer: 3.0.0 + transitivePeerDependencies: + - encoding + - supports-color + optional: true + '@google-cloud/storage@7.18.0(encoding@0.1.13)': dependencies: '@google-cloud/paginator': 5.0.2 @@ -13458,6 +14528,13 @@ snapshots: - supports-color optional: true + '@googleapis/sqladmin@37.0.0': + dependencies: + googleapis-common: 8.0.2 + transitivePeerDependencies: + - supports-color + optional: true + '@grpc/grpc-js@1.14.3': dependencies: '@grpc/proto-loader': 0.8.0 @@ -13601,8 +14678,6 @@ snapshots: '@img/sharp-win32-x64@0.34.5': optional: true - '@inquirer/ansi@1.0.1': {} - '@inquirer/ansi@1.0.2': {} '@inquirer/checkbox@4.3.0(@types/node@20.19.24)': @@ -13639,21 +14714,6 @@ snapshots: optionalDependencies: '@types/node': 24.9.2 - '@inquirer/confirm@5.1.19(@types/node@20.19.24)': - dependencies: - '@inquirer/core': 10.3.0(@types/node@20.19.24) - '@inquirer/type': 3.0.9(@types/node@20.19.24) - optionalDependencies: - '@types/node': 20.19.24 - optional: true - - '@inquirer/confirm@5.1.19(@types/node@24.9.2)': - dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.2) - '@inquirer/type': 3.0.9(@types/node@24.9.2) - optionalDependencies: - '@types/node': 24.9.2 - '@inquirer/confirm@5.1.21(@types/node@20.19.24)': dependencies: '@inquirer/core': 10.3.2(@types/node@20.19.24) @@ -13668,33 +14728,6 @@ snapshots: optionalDependencies: '@types/node': 24.9.2 - '@inquirer/core@10.3.0(@types/node@20.19.24)': - dependencies: - '@inquirer/ansi': 1.0.1 - '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@20.19.24) - cli-width: 4.1.0 - mute-stream: 2.0.0 - signal-exit: 4.1.0 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 20.19.24 - optional: true - - '@inquirer/core@10.3.0(@types/node@24.9.2)': - dependencies: - '@inquirer/ansi': 1.0.1 - '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.9.2) - cli-width: 4.1.0 - mute-stream: 2.0.0 - signal-exit: 4.1.0 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.3 - optionalDependencies: - '@types/node': 24.9.2 - '@inquirer/core@10.3.2(@types/node@20.19.24)': dependencies: '@inquirer/ansi': 1.0.2 @@ -13756,19 +14789,17 @@ snapshots: '@inquirer/external-editor@1.0.2(@types/node@20.19.24)': dependencies: chardet: 2.1.0 - iconv-lite: 0.7.0 + iconv-lite: 0.7.2 optionalDependencies: '@types/node': 20.19.24 '@inquirer/external-editor@1.0.2(@types/node@24.9.2)': dependencies: chardet: 2.1.0 - iconv-lite: 0.7.0 + iconv-lite: 0.7.2 optionalDependencies: '@types/node': 24.9.2 - '@inquirer/figures@1.0.14': {} - '@inquirer/figures@1.0.15': {} '@inquirer/input@4.2.5(@types/node@20.19.24)': @@ -13907,15 +14938,6 @@ snapshots: optionalDependencies: '@types/node': 24.9.2 - '@inquirer/type@3.0.9(@types/node@20.19.24)': - optionalDependencies: - '@types/node': 20.19.24 - optional: true - - '@inquirer/type@3.0.9(@types/node@24.9.2)': - optionalDependencies: - '@types/node': 24.9.2 - '@isaacs/balanced-match@4.0.1': {} '@isaacs/brace-expansion@5.0.0': @@ -13933,7 +14955,7 @@ snapshots: '@isaacs/fs-minipass@4.0.1': dependencies: - minipass: 7.1.2 + minipass: 7.1.3 '@istanbuljs/load-nyc-config@1.1.0': dependencies: @@ -13954,6 +14976,43 @@ snapshots: jest-util: 30.2.0 slash: 3.0.0 + '@jest/core@30.2.0(ts-node@10.9.2(@types/node@20.19.24)(typescript@5.9.3))': + dependencies: + '@jest/console': 30.2.0 + '@jest/pattern': 30.0.1 + '@jest/reporters': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 20.19.24 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 4.3.1 + exit-x: 0.2.2 + graceful-fs: 4.2.11 + jest-changed-files: 30.2.0 + jest-config: 30.2.0(@types/node@20.19.24)(ts-node@10.9.2(@types/node@20.19.24)(typescript@5.9.3)) + jest-haste-map: 30.2.0 + jest-message-util: 30.2.0 + jest-regex-util: 30.0.1 + jest-resolve: 30.2.0 + jest-resolve-dependencies: 30.2.0 + jest-runner: 30.2.0 + jest-runtime: 30.2.0 + jest-snapshot: 30.2.0 + jest-util: 30.2.0 + jest-validate: 30.2.0 + jest-watcher: 30.2.0 + micromatch: 4.0.8 + pretty-format: 30.2.0 + slash: 3.0.0 + transitivePeerDependencies: + - babel-plugin-macros + - esbuild-register + - supports-color + - ts-node + optional: true + '@jest/core@30.2.0(ts-node@10.9.2(@types/node@24.9.2)(typescript@5.9.3))': dependencies: '@jest/console': 30.2.0 @@ -14178,6 +15237,9 @@ snapshots: '@js-sdsl/ordered-map@4.4.2': optional: true + '@jsdevtools/ono@7.1.3': + optional: true + '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': dependencies: tslib: 2.8.1 @@ -14270,6 +15332,29 @@ snapshots: transitivePeerDependencies: - supports-color + '@modelcontextprotocol/sdk@1.26.0(zod@3.25.76)': + dependencies: + '@hono/node-server': 1.19.14(hono@4.12.18) + ajv: 8.18.0 + ajv-formats: 3.0.1(ajv@8.18.0) + content-type: 1.0.5 + cors: 2.8.5 + cross-spawn: 7.0.6 + eventsource: 3.0.7 + eventsource-parser: 3.0.6 + express: 5.2.1 + express-rate-limit: 8.5.2(express@5.2.1) + hono: 4.12.18 + jose: 6.2.3 + json-schema-typed: 8.0.2 + pkce-challenge: 5.0.0 + raw-body: 3.0.1 + zod: 3.25.76 + zod-to-json-schema: 3.25.2(zod@3.25.76) + transitivePeerDependencies: + - supports-color + optional: true + '@modelcontextprotocol/sdk@1.26.0(zod@4.1.13)': dependencies: '@hono/node-server': 1.19.14(hono@4.12.18) @@ -14519,6 +15604,9 @@ snapshots: '@opentelemetry/api@1.9.0': optional: true + '@opentelemetry/semantic-conventions@1.30.0': + optional: true + '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -14646,6 +15734,25 @@ snapshots: '@pkgr/core@0.2.9': {} + '@playwright/test@1.61.1': + dependencies: + playwright: 1.61.1 + + '@pnpm/config.env-replace@1.1.0': + optional: true + + '@pnpm/network.ca-file@1.0.2': + dependencies: + graceful-fs: 4.2.10 + optional: true + + '@pnpm/npm-conf@3.0.3': + dependencies: + '@pnpm/config.env-replace': 1.1.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + optional: true + '@polka/url@1.0.0-next.29': {} '@protobufjs/aspromise@1.1.2': {} @@ -15622,6 +16729,9 @@ snapshots: '@sinclair/typebox@0.34.41': {} + '@sindresorhus/is@4.6.0': + optional: true + '@sinonjs/commons@3.0.1': dependencies: type-detect: 4.0.8 @@ -15630,6 +16740,12 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 + '@so-ric/colorspace@1.1.6': + dependencies: + color: 5.0.3 + text-hex: 1.0.0 + optional: true + '@standard-schema/utils@0.3.0': {} '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.28.5)': @@ -15775,12 +16891,12 @@ snapshots: postcss: 8.5.14 tailwindcss: 4.1.16 - '@tailwindcss/vite@4.1.16(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6))': + '@tailwindcss/vite@4.1.16(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0))': dependencies: '@tailwindcss/node': 4.1.16 '@tailwindcss/oxide': 4.1.16 tailwindcss: 4.1.16 - vite: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) + vite: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) '@tanstack/angular-form@0.42.1(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: @@ -15889,6 +17005,9 @@ snapshots: '@tootallnate/once@2.0.0': optional: true + '@tootallnate/quickjs-emscripten@0.23.0': + optional: true + '@ts-morph/common@0.19.0': dependencies: fast-glob: 3.3.3 @@ -15909,7 +17028,7 @@ snapshots: '@tufjs/models@4.1.0': dependencies: '@tufjs/canonical-json': 2.0.0 - minimatch: 10.1.1 + minimatch: 10.2.5 '@tybys/wasm-util@0.10.1': dependencies: @@ -16151,6 +17270,9 @@ snapshots: '@types/tough-cookie@4.0.5': {} + '@types/triple-beam@1.3.5': + optional: true + '@types/ws@8.18.1': dependencies: '@types/node': 20.19.24 @@ -16315,15 +17437,15 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0))': dependencies: - vite: 7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6) + vite: 7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0) - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0))': dependencies: - vite: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6) + vite: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0) - '@vitejs/plugin-react@5.1.0(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6))': + '@vitejs/plugin-react@5.1.0(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) @@ -16331,7 +17453,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.43 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) + vite: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) transitivePeerDependencies: - supports-color @@ -16350,7 +17472,7 @@ snapshots: std-env: 3.10.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@20.19.24)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@25.0.1)(less@4.4.0)(lightningcss@1.30.2)(msw@2.11.6(@types/node@20.19.24)(typescript@5.9.3))(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6) + vitest: 3.2.4(@types/node@20.19.24)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@25.0.1)(less@4.4.0)(lightningcss@1.30.2)(msw@2.11.6(@types/node@20.19.24)(typescript@5.9.3))(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0) transitivePeerDependencies: - supports-color @@ -16362,23 +17484,23 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(msw@2.11.6(@types/node@20.19.24)(typescript@5.9.3))(vite@7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6))': + '@vitest/mocker@3.2.4(msw@2.11.6(@types/node@20.19.24)(typescript@5.9.3))(vite@7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.11.6(@types/node@20.19.24)(typescript@5.9.3) - vite: 7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6) + vite: 7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0) - '@vitest/mocker@3.2.4(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6))': + '@vitest/mocker@3.2.4(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.11.6(@types/node@24.9.2)(typescript@5.9.3) - vite: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) + vite: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -16409,7 +17531,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@20.19.24)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@25.0.1)(less@4.4.0)(lightningcss@1.30.2)(msw@2.11.6(@types/node@20.19.24)(typescript@5.9.3))(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6) + vitest: 3.2.4(@types/node@20.19.24)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@25.0.1)(less@4.4.0)(lightningcss@1.30.2)(msw@2.11.6(@types/node@20.19.24)(typescript@5.9.3))(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0) '@vitest/utils@3.2.4': dependencies: @@ -16501,6 +17623,9 @@ snapshots: abbrev@4.0.0: {} + abbrev@5.0.0: + optional: true + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -16617,6 +17742,11 @@ snapshots: - chokidar - supports-color + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + optional: true + ansi-colors@4.1.3: {} ansi-escapes@4.3.2: @@ -16648,6 +17778,32 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.2 + archiver-utils@5.0.2: + dependencies: + glob: 10.4.5 + graceful-fs: 4.2.11 + is-stream: 2.0.1 + lazystream: 1.0.1 + lodash: 4.17.21 + normalize-path: 3.0.0 + readable-stream: 4.7.0 + optional: true + + archiver@7.0.1: + dependencies: + archiver-utils: 5.0.2 + async: 3.2.6 + buffer-crc32: 1.0.0 + readable-stream: 4.7.0 + readdir-glob: 1.1.3 + tar-stream: 3.2.0 + zip-stream: 6.0.1 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - react-native-b4a + optional: true + arg@4.1.3: {} arg@5.0.2: {} @@ -16730,8 +17886,16 @@ snapshots: arrify@2.0.1: optional: true + as-array@2.0.0: + optional: true + assertion-error@2.0.1: {} + ast-types@0.13.4: + dependencies: + tslib: 2.8.1 + optional: true + ast-types@0.16.1: dependencies: tslib: 2.8.1 @@ -16746,11 +17910,17 @@ snapshots: async-function@1.0.0: {} + async-lock@1.4.1: + optional: true + async-retry@1.3.3: dependencies: retry: 0.13.1 optional: true + async@3.2.6: + optional: true + asynckit@0.4.0: {} autoprefixer@10.4.21(postcss@8.5.12): @@ -16769,6 +17939,9 @@ snapshots: axobject-query@4.1.0: {} + b4a@1.8.1: + optional: true + babel-jest@30.2.0(@babel/core@7.29.0): dependencies: '@babel/core': 7.29.0 @@ -16855,12 +18028,64 @@ snapshots: balanced-match@4.0.4: {} + bare-events@2.9.1: + optional: true + + bare-fs@4.7.2: + dependencies: + bare-events: 2.9.1 + bare-path: 3.0.1 + bare-stream: 2.13.3(bare-events@2.9.1) + bare-url: 2.4.5 + fast-fifo: 1.3.2 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + optional: true + + bare-os@3.9.3: + optional: true + + bare-path@3.0.1: + dependencies: + bare-os: 3.9.3 + optional: true + + bare-stream@2.13.3(bare-events@2.9.1): + dependencies: + b4a: 1.8.1 + streamx: 2.28.0 + teex: 1.0.1 + optionalDependencies: + bare-events: 2.9.1 + transitivePeerDependencies: + - react-native-b4a + optional: true + + bare-url@2.4.5: + dependencies: + bare-path: 3.0.1 + optional: true + base64-js@1.5.1: {} baseline-browser-mapping@2.10.10: {} baseline-browser-mapping@2.8.20: {} + basic-auth-connect@1.1.0: + dependencies: + tsscmp: 1.0.6 + optional: true + + basic-auth@2.0.1: + dependencies: + safe-buffer: 5.1.2 + optional: true + + basic-ftp@5.3.1: + optional: true + batch@0.6.1: {} beasties@0.3.5: @@ -16880,6 +18105,13 @@ snapshots: binary-extensions@2.3.0: {} + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + optional: true + bl@5.1.0: dependencies: buffer: 6.0.3 @@ -16923,7 +18155,7 @@ snapshots: content-type: 1.0.5 debug: 4.4.3 http-errors: 2.0.0 - iconv-lite: 0.7.0 + iconv-lite: 0.7.2 on-finished: 2.4.1 qs: 6.15.1 raw-body: 3.0.1 @@ -16938,6 +18170,18 @@ snapshots: boolbase@1.0.0: {} + boxen@5.1.2: + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.3 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 + optional: true + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -16979,10 +18223,19 @@ snapshots: dependencies: node-int64: 0.4.0 + buffer-crc32@1.0.0: + optional: true + buffer-equal-constant-time@1.0.1: {} buffer-from@1.1.2: {} + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + optional: true + buffer@6.0.3: dependencies: base64-js: 1.5.1 @@ -17007,7 +18260,7 @@ snapshots: fs-minipass: 3.0.3 glob: 13.0.6 lru-cache: 11.2.2 - minipass: 7.1.2 + minipass: 7.1.3 minipass-collect: 2.0.1 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 @@ -17031,6 +18284,9 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 + call-me-maybe@1.0.2: + optional: true + callsites@3.1.0: {} camelcase@5.3.1: {} @@ -17078,19 +18334,38 @@ snapshots: dependencies: readdirp: 4.1.2 + chownr@2.0.0: + optional: true + chownr@3.0.0: {} chrome-trace-event@1.0.4: {} + ci-info@2.0.0: + optional: true + ci-info@4.3.1: {} cjs-module-lexer@2.1.0: {} + cjson@0.3.3: + dependencies: + json-parse-helpfulerror: 1.0.3 + optional: true + class-variance-authority@0.7.1: dependencies: clsx: 2.1.1 - cli-cursor@4.0.0: + cli-boxes@2.2.1: + optional: true + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + optional: true + + cli-cursor@4.0.0: dependencies: restore-cursor: 4.0.0 @@ -17098,8 +18373,25 @@ snapshots: dependencies: restore-cursor: 5.1.0 + cli-highlight@2.1.11: + dependencies: + chalk: 4.1.2 + highlight.js: 10.7.3 + mz: 2.7.0 + parse5: 5.1.1 + parse5-htmlparser2-tree-adapter: 6.0.1 + yargs: 16.2.2 + optional: true + cli-spinners@2.9.2: {} + cli-table3@0.6.5: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + optional: true + cli-truncate@4.0.0: dependencies: slice-ansi: 5.0.0 @@ -17109,6 +18401,13 @@ snapshots: client-only@0.0.1: {} + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + optional: true + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -17153,8 +18452,27 @@ snapshots: dependencies: color-name: 1.1.4 + color-convert@3.1.3: + dependencies: + color-name: 2.1.0 + optional: true + color-name@1.1.4: {} + color-name@2.1.0: + optional: true + + color-string@2.1.4: + dependencies: + color-name: 2.1.0 + optional: true + + color@5.0.3: + dependencies: + color-convert: 3.1.3 + color-string: 2.1.4 + optional: true + colorette@2.0.20: {} combined-stream@1.0.8: @@ -17169,8 +18487,20 @@ snapshots: commander@4.1.1: {} + commander@5.1.0: + optional: true + common-path-prefix@3.0.0: {} + compress-commons@6.0.2: + dependencies: + crc-32: 1.2.2 + crc32-stream: 6.0.0 + is-stream: 2.0.1 + normalize-path: 3.0.0 + readable-stream: 4.7.0 + optional: true + compressible@2.0.18: dependencies: mime-db: 1.54.0 @@ -17191,8 +18521,34 @@ snapshots: confbox@0.1.8: {} + config-chain@1.1.13: + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + optional: true + + configstore@5.0.1: + dependencies: + dot-prop: 5.3.0 + graceful-fs: 4.2.11 + make-dir: 3.1.0 + unique-string: 2.0.0 + write-file-atomic: 3.0.3 + xdg-basedir: 4.0.0 + optional: true + connect-history-api-fallback@2.0.0: {} + connect@3.7.0: + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + optional: true + consola@3.4.2: {} content-disposition@0.5.4: @@ -17261,14 +18617,31 @@ snapshots: optionalDependencies: typescript: 5.9.3 + crc-32@1.2.2: + optional: true + + crc32-stream@6.0.0: + dependencies: + crc-32: 1.2.2 + readable-stream: 4.7.0 + optional: true + create-require@1.1.1: {} + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.6 + optional: true + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 + crypto-random-string@2.0.0: + optional: true + css-loader@7.1.2(webpack@5.105.0(esbuild@0.28.0)): dependencies: icss-utils: 5.1.0(postcss@8.5.14) @@ -17305,6 +18678,9 @@ snapshots: csstype@3.2.3: {} + csv-parse@5.6.0: + optional: true + cva@1.0.0-beta.4(typescript@5.9.3): dependencies: clsx: 2.1.1 @@ -17351,6 +18727,9 @@ snapshots: data-uri-to-buffer@4.0.1: {} + data-uri-to-buffer@6.0.2: + optional: true + data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 @@ -17382,6 +18761,11 @@ snapshots: dependencies: ms: 2.0.0 + debug@4.3.1: + dependencies: + ms: 2.1.2 + optional: true + debug@4.4.3: dependencies: ms: 2.1.3 @@ -17396,6 +18780,17 @@ snapshots: deep-eql@5.0.2: {} + deep-equal-in-any-order@2.2.0: + dependencies: + sort-any: 4.0.7 + optional: true + + deep-extend@0.6.0: + optional: true + + deep-freeze@0.0.1: + optional: true + deep-is@0.1.4: {} deepmerge@4.3.1: {} @@ -17425,6 +18820,13 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + degenerator@5.0.1: + dependencies: + ast-types: 0.13.4 + escodegen: 2.1.0 + esprima: 4.0.1 + optional: true + delayed-stream@1.0.0: {} depd@1.1.2: {} @@ -17454,6 +18856,9 @@ snapshots: diff@5.2.0: {} + discontinuous-range@1.0.0: + optional: true + dns-packet@5.6.1: dependencies: '@leichtgewicht/ip-codec': 2.0.5 @@ -17494,6 +18899,11 @@ snapshots: no-case: 3.0.4 tslib: 2.8.1 + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + optional: true + dotenv@16.6.1: {} dunder-proto@1.0.1: @@ -17542,8 +18952,14 @@ snapshots: emoji-regex@9.2.2: {} + emojilib@2.4.0: + optional: true + emojis-list@3.0.0: {} + enabled@2.0.0: + optional: true + encodeurl@1.0.2: {} encodeurl@2.0.0: {} @@ -17785,12 +19201,24 @@ snapshots: escalade@3.2.0: {} + escape-goat@2.1.1: + optional: true + escape-html@1.0.3: {} escape-string-regexp@2.0.0: {} escape-string-regexp@4.0.0: {} + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + optional: true + eslint-config-prettier@9.1.2(eslint@9.38.0(jiti@2.6.1)): dependencies: eslint: 9.38.0(jiti@2.6.1) @@ -17927,6 +19355,16 @@ snapshots: eventemitter3@5.0.1: {} + events-listener@1.1.0: + optional: true + + events-universal@1.0.1: + dependencies: + bare-events: 2.9.1 + transitivePeerDependencies: + - bare-abort-controller + optional: true + events@3.3.0: {} eventsource-parser@3.0.6: {} @@ -17959,6 +19397,35 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 3.0.0 + exegesis-express@4.0.0: + dependencies: + exegesis: 4.3.0 + transitivePeerDependencies: + - supports-color + optional: true + + exegesis@4.3.0: + dependencies: + '@apidevtools/json-schema-ref-parser': 9.1.2 + ajv: 8.18.0 + ajv-formats: 2.1.1(ajv@8.18.0) + body-parser: 1.20.3 + content-type: 1.0.5 + deep-freeze: 0.0.1 + events-listener: 1.1.0 + glob: 10.4.5 + json-ptr: 3.1.1 + json-schema-traverse: 1.0.0 + lodash: 4.17.21 + openapi3-ts: 3.2.0 + promise-breaker: 6.0.0 + qs: 6.15.1 + raw-body: 2.5.2 + semver: 7.7.4 + transitivePeerDependencies: + - supports-color + optional: true + exit-x@0.2.2: {} expect-type@1.2.2: {} @@ -18109,7 +19576,7 @@ snapshots: once: 1.4.0 parseurl: 1.3.3 proxy-addr: 2.0.7 - qs: 6.14.0 + qs: 6.15.1 range-parser: 1.2.1 router: 2.2.0 send: 1.2.0 @@ -18130,6 +19597,9 @@ snapshots: fast-equals@5.3.2: {} + fast-fifo@1.3.2: + optional: true + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -18165,6 +19635,9 @@ snapshots: optionalDependencies: picomatch: 4.0.4 + fecha@4.2.3: + optional: true + fetch-blob@3.2.0: dependencies: node-domexception: 1.0.0 @@ -18176,10 +19649,26 @@ snapshots: dependencies: flat-cache: 4.0.1 + filesize@6.4.0: + optional: true + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 + finalhandler@1.1.2: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + optional: true + finalhandler@1.3.1: dependencies: debug: 2.6.9 @@ -18240,6 +19729,184 @@ snapshots: - encoding - supports-color + firebase-tools@14.15.2(@types/node@20.19.24)(encoding@0.1.13): + dependencies: + '@electric-sql/pglite': 0.3.16 + '@electric-sql/pglite-tools': 0.2.21(@electric-sql/pglite@0.3.16) + '@google-cloud/cloud-sql-connector': 1.11.2 + '@google-cloud/pubsub': 4.11.0(encoding@0.1.13) + '@inquirer/prompts': 7.8.2(@types/node@20.19.24) + '@modelcontextprotocol/sdk': 1.26.0(zod@3.25.76) + abort-controller: 3.0.0 + ajv: 8.18.0 + ajv-formats: 3.0.1(ajv@8.18.0) + archiver: 7.0.1 + async-lock: 1.4.1 + body-parser: 1.20.3 + chokidar: 3.6.0 + cjson: 0.3.3 + cli-table3: 0.6.5 + colorette: 2.0.20 + commander: 5.1.0 + configstore: 5.0.1 + cors: 2.8.5 + cross-env: 7.0.3 + cross-spawn: 7.0.6 + csv-parse: 5.6.0 + deep-equal-in-any-order: 2.2.0 + exegesis: 4.3.0 + exegesis-express: 4.0.0 + express: 4.22.1 + filesize: 6.4.0 + form-data: 4.0.4 + fs-extra: 10.1.0 + fuzzy: 0.1.3 + gaxios: 6.7.1(encoding@0.1.13) + glob: 10.4.5 + google-auth-library: 9.15.1(encoding@0.1.13) + ignore: 7.0.5 + js-yaml: 3.14.1 + jsonwebtoken: 9.0.3 + leven: 3.1.0 + libsodium-wrappers: 0.7.16 + lodash: 4.17.21 + lsofi: 1.0.0 + marked: 13.0.3 + marked-terminal: 7.3.0(marked@13.0.3) + mime: 2.6.0 + minimatch: 3.1.2 + morgan: 1.11.0 + node-fetch: 2.7.0(encoding@0.1.13) + open: 6.4.0 + ora: 5.4.1 + p-limit: 3.1.0 + pg: 8.22.0 + pg-gateway: 0.3.0-beta.4 + pglite-2: '@electric-sql/pglite@0.2.17' + portfinder: 1.0.38 + progress: 2.0.3 + proxy-agent: 6.5.0 + retry: 0.13.1 + semver: 7.7.4 + sql-formatter: 15.8.2 + stream-chain: 2.2.5 + stream-json: 1.9.1 + superstatic: 9.2.0(encoding@0.1.13) + tar: 6.2.1 + tcp-port-used: 1.0.3 + tmp: 0.2.7 + triple-beam: 1.4.1 + universal-analytics: 0.5.4 + update-notifier-cjs: 5.1.7(encoding@0.1.13) + uuid: 8.3.2 + winston: 3.19.0 + winston-transport: 4.9.0 + ws: 7.5.11 + yaml: 2.9.0 + zod: 3.25.76 + zod-to-json-schema: 3.25.2(zod@3.25.76) + transitivePeerDependencies: + - '@cfworker/json-schema' + - '@types/node' + - bare-abort-controller + - bare-buffer + - bufferutil + - encoding + - pg-native + - react-native-b4a + - supports-color + - utf-8-validate + optional: true + + firebase-tools@14.15.2(@types/node@24.9.2)(encoding@0.1.13): + dependencies: + '@electric-sql/pglite': 0.3.16 + '@electric-sql/pglite-tools': 0.2.21(@electric-sql/pglite@0.3.16) + '@google-cloud/cloud-sql-connector': 1.11.2 + '@google-cloud/pubsub': 4.11.0(encoding@0.1.13) + '@inquirer/prompts': 7.8.2(@types/node@24.9.2) + '@modelcontextprotocol/sdk': 1.26.0(zod@3.25.76) + abort-controller: 3.0.0 + ajv: 8.18.0 + ajv-formats: 3.0.1(ajv@8.18.0) + archiver: 7.0.1 + async-lock: 1.4.1 + body-parser: 1.20.3 + chokidar: 3.6.0 + cjson: 0.3.3 + cli-table3: 0.6.5 + colorette: 2.0.20 + commander: 5.1.0 + configstore: 5.0.1 + cors: 2.8.5 + cross-env: 7.0.3 + cross-spawn: 7.0.6 + csv-parse: 5.6.0 + deep-equal-in-any-order: 2.2.0 + exegesis: 4.3.0 + exegesis-express: 4.0.0 + express: 4.22.1 + filesize: 6.4.0 + form-data: 4.0.4 + fs-extra: 10.1.0 + fuzzy: 0.1.3 + gaxios: 6.7.1(encoding@0.1.13) + glob: 10.4.5 + google-auth-library: 9.15.1(encoding@0.1.13) + ignore: 7.0.5 + js-yaml: 3.14.1 + jsonwebtoken: 9.0.3 + leven: 3.1.0 + libsodium-wrappers: 0.7.16 + lodash: 4.17.21 + lsofi: 1.0.0 + marked: 13.0.3 + marked-terminal: 7.3.0(marked@13.0.3) + mime: 2.6.0 + minimatch: 3.1.2 + morgan: 1.11.0 + node-fetch: 2.7.0(encoding@0.1.13) + open: 6.4.0 + ora: 5.4.1 + p-limit: 3.1.0 + pg: 8.22.0 + pg-gateway: 0.3.0-beta.4 + pglite-2: '@electric-sql/pglite@0.2.17' + portfinder: 1.0.38 + progress: 2.0.3 + proxy-agent: 6.5.0 + retry: 0.13.1 + semver: 7.7.4 + sql-formatter: 15.8.2 + stream-chain: 2.2.5 + stream-json: 1.9.1 + superstatic: 9.2.0(encoding@0.1.13) + tar: 6.2.1 + tcp-port-used: 1.0.3 + tmp: 0.2.7 + triple-beam: 1.4.1 + universal-analytics: 0.5.4 + update-notifier-cjs: 5.1.7(encoding@0.1.13) + uuid: 8.3.2 + winston: 3.19.0 + winston-transport: 4.9.0 + ws: 7.5.11 + yaml: 2.9.0 + zod: 3.25.76 + zod-to-json-schema: 3.25.2(zod@3.25.76) + transitivePeerDependencies: + - '@cfworker/json-schema' + - '@types/node' + - bare-abort-controller + - bare-buffer + - bufferutil + - encoding + - pg-native + - react-native-b4a + - supports-color + - utf-8-validate + optional: true + firebase@11.10.0: dependencies: '@firebase/ai': 1.4.1(@firebase/app-types@0.9.3)(@firebase/app@0.13.2) @@ -18288,6 +19955,9 @@ snapshots: flatted@3.3.3: {} + fn.name@1.1.0: + optional: true + follow-redirects@1.15.11(debug@4.4.3): optionalDependencies: debug: 4.4.3 @@ -18331,18 +20001,33 @@ snapshots: fresh@2.0.0: {} + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + optional: true + fs-extra@11.3.2: dependencies: graceful-fs: 4.2.11 jsonfile: 6.2.0 universalify: 2.0.1 + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + optional: true + fs-minipass@3.0.3: dependencies: - minipass: 7.1.2 + minipass: 7.1.3 fs.realpath@1.0.0: {} + fsevents@2.3.2: + optional: true + fsevents@2.3.3: optional: true @@ -18362,6 +20047,9 @@ snapshots: functions-have-names@1.2.3: {} + fuzzy@0.1.3: + optional: true + gaxios@6.7.1(encoding@0.1.13): dependencies: extend: 3.0.2 @@ -18373,6 +20061,25 @@ snapshots: - encoding - supports-color + gaxios@7.1.3: + dependencies: + extend: 3.0.2 + https-proxy-agent: 7.0.6 + node-fetch: 3.3.2 + rimraf: 5.0.10 + transitivePeerDependencies: + - supports-color + optional: true + + gaxios@7.1.5: + dependencies: + extend: 3.0.2 + https-proxy-agent: 7.0.6 + node-fetch: 3.3.2 + transitivePeerDependencies: + - supports-color + optional: true + gcp-metadata@6.1.1(encoding@0.1.13): dependencies: gaxios: 6.7.1(encoding@0.1.13) @@ -18382,6 +20089,24 @@ snapshots: - encoding - supports-color + gcp-metadata@8.1.2: + dependencies: + gaxios: 7.1.5 + google-logging-utils: 1.1.3 + json-bigint: 1.0.0 + transitivePeerDependencies: + - supports-color + optional: true + + gcp-metadata@8.1.3: + dependencies: + gaxios: 7.1.3 + google-logging-utils: 1.1.3 + json-bigint: 1.0.0 + transitivePeerDependencies: + - supports-color + optional: true + generator-function@2.0.1: {} gensync@1.0.0-beta.2: {} @@ -18426,6 +20151,15 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + get-uri@6.0.5: + dependencies: + basic-ftp: 5.3.1 + data-uri-to-buffer: 6.0.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + optional: true + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -18434,6 +20168,16 @@ snapshots: dependencies: is-glob: 4.0.3 + glob-slash@1.0.0: + optional: true + + glob-slasher@1.0.1: + dependencies: + glob-slash: 1.0.0 + lodash.isobject: 2.4.1 + toxic: 1.0.1 + optional: true + glob-to-regex.js@1.2.0(tslib@2.8.1): dependencies: tslib: 2.8.1 @@ -18445,7 +20189,7 @@ snapshots: foreground-child: 3.3.1 jackspeak: 3.4.3 minimatch: 9.0.5 - minipass: 7.1.2 + minipass: 7.1.3 package-json-from-dist: 1.0.1 path-scurry: 1.11.1 @@ -18473,6 +20217,11 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 + global-dirs@3.0.1: + dependencies: + ini: 2.0.0 + optional: true + globals@14.0.0: {} globals@16.4.0: {} @@ -18482,6 +20231,31 @@ snapshots: define-properties: 1.2.1 gopd: 1.2.0 + google-auth-library@10.5.0: + dependencies: + base64-js: 1.5.1 + ecdsa-sig-formatter: 1.0.11 + gaxios: 7.1.5 + gcp-metadata: 8.1.3 + google-logging-utils: 1.1.3 + gtoken: 8.0.0 + jws: 4.0.1 + transitivePeerDependencies: + - supports-color + optional: true + + google-auth-library@10.9.0: + dependencies: + base64-js: 1.5.1 + ecdsa-sig-formatter: 1.0.11 + gaxios: 7.1.5 + gcp-metadata: 8.1.2 + google-logging-utils: 1.1.3 + jws: 4.0.1 + transitivePeerDependencies: + - supports-color + optional: true + google-auth-library@9.15.1(encoding@0.1.13): dependencies: base64-js: 1.5.1 @@ -18515,8 +20289,26 @@ snapshots: google-logging-utils@0.0.2: {} + google-logging-utils@1.1.3: + optional: true + + googleapis-common@8.0.2: + dependencies: + extend: 3.0.2 + gaxios: 7.1.3 + google-auth-library: 10.5.0 + google-logging-utils: 1.1.3 + qs: 6.15.1 + url-template: 2.0.8 + transitivePeerDependencies: + - supports-color + optional: true + gopd@1.2.0: {} + graceful-fs@4.2.10: + optional: true + graceful-fs@4.2.11: {} graphemer@1.4.0: {} @@ -18531,6 +20323,14 @@ snapshots: - encoding - supports-color + gtoken@8.0.0: + dependencies: + gaxios: 7.1.5 + jws: 4.0.1 + transitivePeerDependencies: + - supports-color + optional: true + handle-thing@2.0.1: {} handlebars@4.7.8: @@ -18560,12 +20360,21 @@ snapshots: dependencies: has-symbols: 1.1.0 + has-yarn@2.1.0: + optional: true + hasown@2.0.2: dependencies: function-bind: 1.1.2 headers-polyfill@4.0.3: {} + heap-js@2.7.1: + optional: true + + highlight.js@10.7.3: + optional: true + hono@4.12.18: {} hosted-git-info@9.0.2: @@ -18706,7 +20515,6 @@ snapshots: iconv-lite@0.7.2: dependencies: safer-buffer: 2.1.2 - optional: true icss-utils@5.1.0(postcss@8.5.14): dependencies: @@ -18718,7 +20526,7 @@ snapshots: ignore-walk@8.0.0: dependencies: - minimatch: 10.1.1 + minimatch: 10.2.5 ignore@5.3.2: {} @@ -18737,6 +20545,9 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 + import-lazy@2.1.0: + optional: true + import-local@3.2.0: dependencies: pkg-dir: 4.2.0 @@ -18755,6 +20566,12 @@ snapshots: inherits@2.0.4: {} + ini@1.3.8: + optional: true + + ini@2.0.0: + optional: true + ini@5.0.0: {} ini@6.0.0: {} @@ -18768,6 +20585,9 @@ snapshots: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) + install-artifact-from-github@1.6.0: + optional: true + internal-slot@1.1.0: dependencies: es-errors: 1.3.0 @@ -18776,10 +20596,11 @@ snapshots: internmap@2.0.3: {} - ip-address@10.0.1: {} - ip-address@10.2.0: {} + ip-regex@2.1.0: + optional: true + ipaddr.js@1.9.1: {} ipaddr.js@2.2.0: {} @@ -18813,8 +20634,16 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 + is-buffer@1.1.6: + optional: true + is-callable@1.2.7: {} + is-ci@2.0.0: + dependencies: + ci-info: 2.0.0 + optional: true + is-core-module@2.16.1: dependencies: hasown: 2.0.2 @@ -18864,6 +20693,15 @@ snapshots: dependencies: is-docker: 3.0.0 + is-installed-globally@0.4.0: + dependencies: + global-dirs: 3.0.1 + is-path-inside: 3.0.3 + optional: true + + is-interactive@1.0.0: + optional: true + is-interactive@2.0.0: {} is-map@2.0.3: {} @@ -18874,15 +20712,29 @@ snapshots: is-node-process@1.2.0: {} + is-npm@5.0.0: + optional: true + is-number-object@1.1.1: dependencies: call-bound: 1.0.4 has-tostringtag: 1.0.2 + is-number@2.1.0: + dependencies: + kind-of: 3.2.2 + optional: true + is-number@7.0.0: {} + is-obj@2.0.0: + optional: true + is-obj@3.0.0: {} + is-path-inside@3.0.3: + optional: true + is-plain-obj@3.0.0: {} is-plain-object@2.0.4: @@ -18910,6 +20762,9 @@ snapshots: dependencies: call-bound: 1.0.4 + is-stream-ended@0.1.4: + optional: true + is-stream@2.0.1: {} is-stream@3.0.0: {} @@ -18929,10 +20784,19 @@ snapshots: dependencies: which-typed-array: 1.1.19 + is-typedarray@1.0.0: + optional: true + + is-unicode-supported@0.1.0: + optional: true + is-unicode-supported@1.3.0: {} is-unicode-supported@2.1.0: {} + is-url@1.2.4: + optional: true + is-weakmap@2.0.2: {} is-weakref@1.1.1: @@ -18946,10 +20810,26 @@ snapshots: is-what@3.14.1: {} + is-wsl@1.1.0: + optional: true + is-wsl@3.1.0: dependencies: is-inside-container: 1.0.0 + is-yarn-global@0.3.0: + optional: true + + is2@2.0.1: + dependencies: + deep-is: 0.1.4 + ip-regex: 2.1.0 + is-url: 1.2.4 + optional: true + + isarray@0.0.1: + optional: true + isarray@1.0.0: {} isarray@2.0.5: {} @@ -18960,6 +20840,14 @@ snapshots: isobject@3.0.1: {} + isomorphic-fetch@3.0.0(encoding@0.1.13): + dependencies: + node-fetch: 2.7.0(encoding@0.1.13) + whatwg-fetch: 3.6.20 + transitivePeerDependencies: + - encoding + optional: true + istanbul-lib-coverage@3.2.2: {} istanbul-lib-instrument@6.0.3: @@ -19042,15 +20930,15 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@30.2.0(@types/node@20.19.24): + jest-cli@30.2.0(@types/node@20.19.24)(ts-node@10.9.2(@types/node@20.19.24)(typescript@5.9.3)): dependencies: - '@jest/core': 30.2.0(ts-node@10.9.2(@types/node@24.9.2)(typescript@5.9.3)) + '@jest/core': 30.2.0(ts-node@10.9.2(@types/node@20.19.24)(typescript@5.9.3)) '@jest/test-result': 30.2.0 '@jest/types': 30.2.0 chalk: 4.1.2 exit-x: 0.2.2 import-local: 3.2.0 - jest-config: 30.2.0(@types/node@20.19.24)(ts-node@10.9.2(@types/node@24.9.2)(typescript@5.9.3)) + jest-config: 30.2.0(@types/node@20.19.24)(ts-node@10.9.2(@types/node@20.19.24)(typescript@5.9.3)) jest-util: 30.2.0 jest-validate: 30.2.0 yargs: 17.7.2 @@ -19068,18 +20956,52 @@ snapshots: '@jest/test-result': 30.2.0 '@jest/types': 30.2.0 chalk: 4.1.2 - exit-x: 0.2.2 - import-local: 3.2.0 - jest-config: 30.2.0(@types/node@24.9.2)(ts-node@10.9.2(@types/node@24.9.2)(typescript@5.9.3)) + exit-x: 0.2.2 + import-local: 3.2.0 + jest-config: 30.2.0(@types/node@24.9.2)(ts-node@10.9.2(@types/node@24.9.2)(typescript@5.9.3)) + jest-util: 30.2.0 + jest-validate: 30.2.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - esbuild-register + - supports-color + - ts-node + + jest-config@30.2.0(@types/node@20.19.24)(ts-node@10.9.2(@types/node@20.19.24)(typescript@5.9.3)): + dependencies: + '@babel/core': 7.29.0 + '@jest/get-type': 30.1.0 + '@jest/pattern': 30.0.1 + '@jest/test-sequencer': 30.2.0 + '@jest/types': 30.2.0 + babel-jest: 30.2.0(@babel/core@7.29.0) + chalk: 4.1.2 + ci-info: 4.3.1 + deepmerge: 4.3.1 + glob: 10.4.5 + graceful-fs: 4.2.11 + jest-circus: 30.2.0 + jest-docblock: 30.2.0 + jest-environment-node: 30.2.0 + jest-regex-util: 30.0.1 + jest-resolve: 30.2.0 + jest-runner: 30.2.0 jest-util: 30.2.0 jest-validate: 30.2.0 - yargs: 17.7.2 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 30.2.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.19.24 + ts-node: 10.9.2(@types/node@20.19.24)(typescript@5.9.3) transitivePeerDependencies: - - '@types/node' - babel-plugin-macros - - esbuild-register - supports-color - - ts-node + optional: true jest-config@30.2.0(@types/node@20.19.24)(ts-node@10.9.2(@types/node@24.9.2)(typescript@5.9.3)): dependencies: @@ -19217,7 +21139,7 @@ snapshots: jest-message-util@30.2.0: dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.29.7 '@jest/types': 30.2.0 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -19338,10 +21260,10 @@ snapshots: jest-snapshot@30.2.0: dependencies: '@babel/core': 7.29.0 - '@babel/generator': 7.28.5 + '@babel/generator': 7.29.1 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.29.0) - '@babel/types': 7.28.5 + '@babel/types': 7.29.0 '@jest/expect-utils': 30.2.0 '@jest/get-type': 30.1.0 '@jest/snapshot-utils': 30.2.0 @@ -19404,12 +21326,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@30.2.0(@types/node@20.19.24): + jest@30.2.0(@types/node@20.19.24)(ts-node@10.9.2(@types/node@20.19.24)(typescript@5.9.3)): dependencies: - '@jest/core': 30.2.0(ts-node@10.9.2(@types/node@24.9.2)(typescript@5.9.3)) + '@jest/core': 30.2.0(ts-node@10.9.2(@types/node@20.19.24)(typescript@5.9.3)) '@jest/types': 30.2.0 import-local: 3.2.0 - jest-cli: 30.2.0(@types/node@20.19.24) + jest-cli: 30.2.0(@types/node@20.19.24)(ts-node@10.9.2(@types/node@20.19.24)(typescript@5.9.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -19435,6 +21357,16 @@ snapshots: jiti@2.6.1: {} + jju@1.4.0: + optional: true + + join-path@1.1.1: + dependencies: + as-array: 2.0.0 + url-join: 0.0.1 + valid-url: 1.0.9 + optional: true + jose@4.15.9: {} jose@6.2.3: {} @@ -19521,6 +21453,14 @@ snapshots: json-parse-even-better-errors@5.0.0: {} + json-parse-helpfulerror@1.0.3: + dependencies: + jju: 1.4.0 + optional: true + + json-ptr@3.1.1: + optional: true + json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -19590,17 +21530,30 @@ snapshots: dependencies: json-buffer: 3.0.1 + kind-of@3.2.2: + dependencies: + is-buffer: 1.1.6 + optional: true + kind-of@6.0.3: {} kleur@3.0.3: {} kleur@4.1.5: {} + kuler@2.0.0: + optional: true + launch-editor@2.12.0: dependencies: picocolors: 1.1.1 shell-quote: 1.8.3 + lazystream@1.0.1: + dependencies: + readable-stream: 2.3.8 + optional: true + less-loader@12.3.0(less@4.4.0)(webpack@5.105.0(esbuild@0.28.0)): dependencies: less: 4.4.0 @@ -19644,6 +21597,14 @@ snapshots: libphonenumber-js@1.12.25: {} + libsodium-wrappers@0.7.16: + dependencies: + libsodium: 0.7.16 + optional: true + + libsodium@0.7.16: + optional: true + license-webpack-plugin@4.0.2(webpack@5.105.0(esbuild@0.28.0)): dependencies: webpack-sources: 3.3.3 @@ -19751,6 +21712,9 @@ snapshots: dependencies: p-locate: 5.0.0 + lodash._objecttypes@2.4.1: + optional: true + lodash.camelcase@4.3.0: {} lodash.clonedeep@4.5.0: {} @@ -19765,6 +21729,11 @@ snapshots: lodash.isnumber@3.0.3: {} + lodash.isobject@2.4.1: + dependencies: + lodash._objecttypes: 2.4.1 + optional: true + lodash.isplainobject@4.0.6: {} lodash.isstring@4.0.1: {} @@ -19775,12 +21744,21 @@ snapshots: lodash.once@4.1.1: {} + lodash.snakecase@4.1.1: + optional: true + lodash.sortby@4.7.0: {} lodash.truncate@4.4.2: {} lodash@4.17.21: {} + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + optional: true + log-symbols@5.1.0: dependencies: chalk: 5.6.2 @@ -19799,6 +21777,16 @@ snapshots: strip-ansi: 7.1.2 wrap-ansi: 9.0.2 + logform@2.7.0: + dependencies: + '@colors/colors': 1.6.0 + '@types/triple-beam': 1.3.5 + fecha: 4.2.3 + ms: 2.1.3 + safe-stable-stringify: 2.5.0 + triple-beam: 1.4.1 + optional: true + long@5.3.2: {} loose-envify@1.4.0: @@ -19823,11 +21811,20 @@ snapshots: dependencies: yallist: 4.0.0 + lru-cache@7.18.3: + optional: true + lru-memoizer@2.3.0: dependencies: lodash.clonedeep: 4.5.0 lru-cache: 6.0.0 + lsofi@1.0.0: + dependencies: + is-number: 2.1.0 + through2: 2.0.5 + optional: true + lucide-react@0.544.0(react@19.2.3): dependencies: react: 19.2.3 @@ -19854,6 +21851,11 @@ snapshots: semver: 5.7.2 optional: true + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + optional: true + make-dir@4.0.0: dependencies: semver: 7.7.4 @@ -19867,7 +21869,7 @@ snapshots: '@npmcli/redact': 4.0.0 cacache: 20.0.4 http-cache-semantics: 4.2.0 - minipass: 7.1.2 + minipass: 7.1.3 minipass-fetch: 5.0.2 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 @@ -19881,6 +21883,21 @@ snapshots: dependencies: tmpl: 1.0.5 + marked-terminal@7.3.0(marked@13.0.3): + dependencies: + ansi-escapes: 7.1.1 + ansi-regex: 6.2.2 + chalk: 5.6.2 + cli-highlight: 2.1.11 + cli-table3: 0.6.5 + marked: 13.0.3 + node-emoji: 2.2.0 + supports-hyperlinks: 3.2.0 + optional: true + + marked@13.0.3: + optional: true + math-intrinsics@1.1.0: {} mdn-data@2.23.0: {} @@ -19927,6 +21944,9 @@ snapshots: mime@1.6.0: {} + mime@2.6.0: + optional: true + mime@3.0.0: optional: true @@ -19958,6 +21978,16 @@ snapshots: dependencies: brace-expansion: 1.1.12 + minimatch@5.1.9: + dependencies: + brace-expansion: 2.0.2 + optional: true + + minimatch@6.2.3: + dependencies: + brace-expansion: 2.0.2 + optional: true + minimatch@7.4.6: dependencies: brace-expansion: 2.0.2 @@ -19970,11 +22000,11 @@ snapshots: minipass-collect@2.0.1: dependencies: - minipass: 7.1.2 + minipass: 7.1.3 minipass-fetch@5.0.2: dependencies: - minipass: 7.1.2 + minipass: 7.1.3 minipass-sized: 2.0.0 minizlib: 3.1.0 optionalDependencies: @@ -19990,19 +22020,31 @@ snapshots: minipass-sized@2.0.0: dependencies: - minipass: 7.1.2 + minipass: 7.1.3 minipass@3.3.6: dependencies: yallist: 4.0.0 + minipass@5.0.0: + optional: true + minipass@7.1.2: {} minipass@7.1.3: {} + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + optional: true + minizlib@3.1.0: dependencies: - minipass: 7.1.2 + minipass: 7.1.3 + + mkdirp@1.0.4: + optional: true mkdirp@2.1.6: {} @@ -20013,10 +22055,27 @@ snapshots: pkg-types: 1.3.1 ufo: 1.6.1 + moo@0.5.3: + optional: true + + morgan@1.11.0: + dependencies: + basic-auth: 2.0.1 + debug: 2.6.9 + depd: 2.0.0 + on-finished: 2.4.1 + on-headers: 1.1.0 + transitivePeerDependencies: + - supports-color + optional: true + mrmime@2.0.1: {} ms@2.0.0: {} + ms@2.1.2: + optional: true + ms@2.1.3: {} msgpackr-extract@3.0.3: @@ -20038,7 +22097,7 @@ snapshots: msw@2.11.6(@types/node@20.19.24)(typescript@5.9.3): dependencies: - '@inquirer/confirm': 5.1.19(@types/node@20.19.24) + '@inquirer/confirm': 5.1.21(@types/node@20.19.24) '@mswjs/interceptors': 0.40.0 '@open-draft/deferred-promise': 2.2.0 '@types/statuses': 2.0.6 @@ -20064,7 +22123,7 @@ snapshots: msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3): dependencies: - '@inquirer/confirm': 5.1.19(@types/node@24.9.2) + '@inquirer/confirm': 5.1.21(@types/node@24.9.2) '@mswjs/interceptors': 0.40.0 '@open-draft/deferred-promise': 2.2.0 '@types/statuses': 2.0.6 @@ -20100,6 +22159,9 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 + nan@2.28.0: + optional: true + nanoid@3.3.11: {} nanostores@0.11.4: {} @@ -20110,6 +22172,14 @@ snapshots: natural-compare@1.4.0: {} + nearley@2.20.1: + dependencies: + commander: 2.20.3 + moo: 0.5.3 + railroad-diagrams: 1.0.0 + randexp: 0.4.6 + optional: true + needle@3.3.1: dependencies: iconv-lite: 0.6.3 @@ -20124,12 +22194,15 @@ snapshots: neo-async@2.6.2: {} + netmask@2.1.1: + optional: true + next-themes@0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - next@15.5.18(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.3): + next@15.5.18(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.3): dependencies: '@next/env': 15.5.18 '@swc/helpers': 0.5.15 @@ -20148,6 +22221,7 @@ snapshots: '@next/swc-win32-arm64-msvc': 15.5.18 '@next/swc-win32-x64-msvc': 15.5.18 '@opentelemetry/api': 1.9.0 + '@playwright/test': 1.61.1 sass: 1.97.3 sharp: 0.34.5 transitivePeerDependencies: @@ -20197,6 +22271,14 @@ snapshots: node-domexception@1.0.0: {} + node-emoji@2.2.0: + dependencies: + '@sindresorhus/is': 4.6.0 + char-regex: 1.0.2 + emojilib: 2.4.0 + skin-tone: 2.0.0 + optional: true + node-fetch@2.7.0(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 @@ -20229,12 +22311,31 @@ snapshots: undici: 6.25.0 which: 6.0.1 + node-gyp@13.0.0: + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.3 + graceful-fs: 4.2.11 + nopt: 10.0.1 + proc-log: 7.0.0 + semver: 7.7.4 + tar: 7.5.15 + tinyglobby: 0.2.17 + undici: 6.25.0 + which: 7.0.0 + optional: true + node-int64@0.4.0: {} node-releases@2.0.26: {} node-releases@2.0.36: {} + nopt@10.0.1: + dependencies: + abbrev: 5.0.0 + optional: true + nopt@9.0.0: dependencies: abbrev: 4.0.0 @@ -20277,7 +22378,7 @@ snapshots: '@npmcli/redact': 4.0.0 jsonparse: 1.3.1 make-fetch-happen: 15.0.5 - minipass: 7.1.2 + minipass: 7.1.3 minipass-fetch: 5.0.2 minizlib: 3.1.0 npm-package-arg: 13.0.0 @@ -20340,6 +22441,11 @@ snapshots: obuf@1.1.2: {} + on-finished@2.3.0: + dependencies: + ee-first: 1.1.1 + optional: true + on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -20350,6 +22456,11 @@ snapshots: dependencies: wrappy: 1.0.2 + one-time@1.0.0: + dependencies: + fn.name: 1.1.0 + optional: true + onetime@5.1.2: dependencies: mimic-fn: 2.1.0 @@ -20369,6 +22480,16 @@ snapshots: is-inside-container: 1.0.0 wsl-utils: 0.1.0 + open@6.4.0: + dependencies: + is-wsl: 1.1.0 + optional: true + + openapi3-ts@3.2.0: + dependencies: + yaml: 2.9.0 + optional: true + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -20378,6 +22499,19 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + optional: true + ora@6.3.1: dependencies: chalk: 5.6.2 @@ -20413,6 +22547,9 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 + p-defer@3.0.0: + optional: true + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -20437,8 +22574,31 @@ snapshots: is-network-error: 1.3.0 retry: 0.13.1 + p-throttle@7.0.0: + optional: true + p-try@2.2.0: {} + pac-proxy-agent@7.2.0: + dependencies: + '@tootallnate/quickjs-emscripten': 0.23.0 + agent-base: 7.1.4 + debug: 4.4.3 + get-uri: 6.0.5 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + pac-resolver: 7.0.1 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + optional: true + + pac-resolver@7.0.1: + dependencies: + degenerator: 5.0.1 + netmask: 2.1.1 + optional: true + package-json-from-dist@1.0.1: {} pacote@21.0.4: @@ -20482,10 +22642,21 @@ snapshots: parse5: 8.0.0 parse5-sax-parser: 8.0.0 + parse5-htmlparser2-tree-adapter@6.0.1: + dependencies: + parse5: 6.0.1 + optional: true + parse5-sax-parser@8.0.0: dependencies: parse5: 8.0.0 + parse5@5.1.1: + optional: true + + parse5@6.0.1: + optional: true + parse5@7.3.0: dependencies: entities: 6.0.1 @@ -20511,12 +22682,12 @@ snapshots: path-scurry@1.11.1: dependencies: lru-cache: 10.4.3 - minipass: 7.1.2 + minipass: 7.1.3 path-scurry@2.0.0: dependencies: lru-cache: 11.2.2 - minipass: 7.1.2 + minipass: 7.1.3 path-scurry@2.0.2: dependencies: @@ -20525,6 +22696,11 @@ snapshots: path-to-regexp@0.1.12: {} + path-to-regexp@1.9.0: + dependencies: + isarray: 0.0.1 + optional: true + path-to-regexp@6.3.0: {} path-to-regexp@8.3.0: {} @@ -20535,6 +22711,51 @@ snapshots: pathval@2.0.1: {} + pg-cloudflare@1.4.0: + optional: true + + pg-connection-string@2.14.0: + optional: true + + pg-gateway@0.3.0-beta.4: + optional: true + + pg-int8@1.0.1: + optional: true + + pg-pool@3.14.0(pg@8.22.0): + dependencies: + pg: 8.22.0 + optional: true + + pg-protocol@1.15.0: + optional: true + + pg-types@2.2.0: + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.1 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + optional: true + + pg@8.22.0: + dependencies: + pg-connection-string: 2.14.0 + pg-pool: 3.14.0(pg@8.22.0) + pg-protocol: 1.15.0 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.4.0 + optional: true + + pgpass@1.0.5: + dependencies: + split2: 4.2.0 + optional: true + picocolors@1.1.1: {} picomatch@2.3.2: {} @@ -20568,15 +22789,32 @@ snapshots: mlly: 1.8.0 pathe: 2.0.3 + playwright-core@1.61.1: {} + + playwright@1.61.1: + dependencies: + playwright-core: 1.61.1 + optionalDependencies: + fsevents: 2.3.2 + + portfinder@1.0.38: + dependencies: + async: 3.2.6 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + optional: true + possible-typed-array-names@1.1.0: {} - postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6): + postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6)(yaml@2.9.0): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 2.6.1 postcss: 8.5.14 tsx: 4.20.6 + yaml: 2.9.0 postcss-loader@8.1.1(postcss@8.5.12)(typescript@5.9.3)(webpack@5.105.0(esbuild@0.28.0)): dependencies: @@ -20637,6 +22875,20 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postgres-array@2.0.0: + optional: true + + postgres-bytea@1.0.1: + optional: true + + postgres-date@1.0.7: + optional: true + + postgres-interval@1.2.0: + dependencies: + xtend: 4.0.2 + optional: true + prelude-ls@1.2.1: {} prettier-linter-helpers@1.0.0: @@ -20663,8 +22915,20 @@ snapshots: proc-log@6.1.0: {} + proc-log@7.0.0: + optional: true + process-nextick-args@2.0.1: {} + process@0.11.10: + optional: true + + progress@2.0.3: + optional: true + + promise-breaker@6.0.0: + optional: true + promise-retry@2.0.1: dependencies: err-code: 2.0.3 @@ -20681,6 +22945,9 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 + proto-list@1.2.4: + optional: true + proto3-json-serializer@2.0.2: dependencies: protobufjs: 7.5.4 @@ -20706,11 +22973,33 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 + proxy-agent@6.5.0: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + lru-cache: 7.18.3 + pac-proxy-agent: 7.2.0 + proxy-from-env: 1.1.0 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + optional: true + + proxy-from-env@1.1.0: + optional: true + prr@1.0.1: optional: true punycode@2.3.1: {} + pupa@2.1.1: + dependencies: + escape-goat: 2.1.1 + optional: true + pure-rand@7.0.1: {} qrcode-generator@2.0.4: {} @@ -20729,6 +23018,15 @@ snapshots: queue-microtask@1.2.3: {} + railroad-diagrams@1.0.0: + optional: true + + randexp@0.4.6: + dependencies: + discontinuous-range: 1.0.0 + ret: 0.1.15 + optional: true + range-parser@1.2.1: {} raw-body@2.5.2: @@ -20745,6 +23043,21 @@ snapshots: iconv-lite: 0.7.0 unpipe: 1.0.0 + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + optional: true + + re2@1.25.0: + dependencies: + install-artifact-from-github: 1.6.0 + nan: 2.28.0 + node-gyp: 13.0.0 + optional: true + react-day-picker@9.11.1(react@19.2.3): dependencies: '@date-fns/tz': 1.4.1 @@ -20856,6 +23169,20 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 + readable-stream@4.7.0: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + optional: true + + readdir-glob@1.1.3: + dependencies: + minimatch: 5.1.9 + optional: true + readdirp@3.6.0: dependencies: picomatch: 2.3.2 @@ -20931,6 +23258,16 @@ snapshots: unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.2.1 + registry-auth-token@5.1.1: + dependencies: + '@pnpm/npm-conf': 3.0.3 + optional: true + + registry-url@5.1.0: + dependencies: + rc: 1.2.8 + optional: true + regjsgen@0.8.0: {} regjsparser@0.13.0: @@ -20979,6 +23316,12 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + optional: true + restore-cursor@4.0.0: dependencies: onetime: 5.1.2 @@ -20989,6 +23332,9 @@ snapshots: onetime: 7.0.0 signal-exit: 4.1.0 + ret@0.1.15: + optional: true + retry-request@7.0.2(encoding@0.1.13): dependencies: '@types/request': 2.48.13 @@ -21009,6 +23355,11 @@ snapshots: rfdc@1.4.1: {} + rimraf@5.0.10: + dependencies: + glob: 10.4.5 + optional: true + rimraf@6.0.1: dependencies: glob: 11.0.3 @@ -21164,6 +23515,9 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 + safe-stable-stringify@2.5.0: + optional: true + safer-buffer@2.1.2: {} sass-loader@16.0.5(sass@1.90.0)(webpack@5.105.0(esbuild@0.28.0)): @@ -21221,6 +23575,11 @@ snapshots: '@types/node-forge': 1.3.14 node-forge: 1.3.1 + semver-diff@3.1.1: + dependencies: + semver: 6.3.1 + optional: true + semver@5.7.2: optional: true @@ -21457,6 +23816,11 @@ snapshots: sisteransi@1.0.5: {} + skin-tone@2.0.0: + dependencies: + unicode-emoji-modifier-base: 1.0.0 + optional: true + slash@3.0.0: {} slice-ansi@4.0.0: @@ -21498,7 +23862,7 @@ snapshots: socks@2.8.7: dependencies: - ip-address: 10.0.1 + ip-address: 10.2.0 smart-buffer: 4.2.0 sonner@2.0.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3): @@ -21506,6 +23870,9 @@ snapshots: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) + sort-any@4.0.7: + optional: true + source-map-js@1.2.1: {} source-map-loader@5.0.0(webpack@5.105.0(esbuild@0.28.0)): @@ -21562,11 +23929,23 @@ snapshots: transitivePeerDependencies: - supports-color + split2@4.2.0: + optional: true + sprintf-js@1.0.3: {} + sql-formatter@15.8.2: + dependencies: + argparse: 2.0.1 + nearley: 2.20.1 + optional: true + ssri@13.0.1: dependencies: - minipass: 7.1.2 + minipass: 7.1.3 + + stack-trace@0.0.10: + optional: true stack-utils@2.0.6: dependencies: @@ -21593,14 +23972,32 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 + stream-chain@2.2.5: + optional: true + stream-events@1.0.5: dependencies: stubs: 3.0.0 optional: true + stream-json@1.9.1: + dependencies: + stream-chain: 2.2.5 + optional: true + stream-shift@1.0.3: optional: true + streamx@2.28.0: + dependencies: + events-universal: 1.0.1 + fast-fifo: 1.3.2 + text-decoder: 1.2.7 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + optional: true + strict-event-emitter@0.5.1: {} string-length@4.0.2: @@ -21704,6 +24101,9 @@ snapshots: dependencies: min-indent: 1.0.1 + strip-json-comments@2.0.1: + optional: true + strip-json-comments@3.1.1: {} strip-literal@3.1.0: @@ -21731,6 +24131,32 @@ snapshots: pirates: 4.0.7 ts-interface-checker: 0.1.13 + superstatic@9.2.0(encoding@0.1.13): + dependencies: + basic-auth-connect: 1.1.0 + commander: 10.0.1 + compression: 1.8.1 + connect: 3.7.0 + destroy: 1.2.0 + glob-slasher: 1.0.1 + is-url: 1.2.4 + join-path: 1.1.1 + lodash: 4.17.21 + mime-types: 2.1.35 + minimatch: 6.2.3 + morgan: 1.11.0 + on-finished: 2.4.1 + on-headers: 1.1.0 + path-to-regexp: 1.9.0 + router: 2.2.0 + update-notifier-cjs: 5.1.7(encoding@0.1.13) + optionalDependencies: + re2: 1.25.0 + transitivePeerDependencies: + - encoding + - supports-color + optional: true + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -21739,6 +24165,12 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-hyperlinks@3.2.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + optional: true + supports-preserve-symlinks-flag@1.0.0: {} svg-parser@2.0.4: {} @@ -21763,11 +24195,33 @@ snapshots: tapable@2.3.0: {} + tar-stream@3.2.0: + dependencies: + b4a: 1.8.1 + bare-fs: 4.7.2 + fast-fifo: 1.3.2 + streamx: 2.28.0 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - react-native-b4a + optional: true + + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + optional: true + tar@7.5.1: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 - minipass: 7.1.2 + minipass: 7.1.3 minizlib: 3.1.0 yallist: 5.0.0 @@ -21775,10 +24229,18 @@ snapshots: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 - minipass: 7.1.2 + minipass: 7.1.3 minizlib: 3.1.0 yallist: 5.0.0 + tcp-port-used@1.0.3: + dependencies: + debug: 4.3.1 + is2: 2.0.1 + transitivePeerDependencies: + - supports-color + optional: true + teeny-request@9.0.0(encoding@0.1.13): dependencies: http-proxy-agent: 5.0.0 @@ -21791,7 +24253,15 @@ snapshots: - supports-color optional: true - terser-webpack-plugin@5.4.0(esbuild@0.28.0)(webpack@5.105.0): + teex@1.0.1: + dependencies: + streamx: 2.28.0 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + optional: true + + terser-webpack-plugin@5.4.0(esbuild@0.28.0)(webpack@5.105.0(esbuild@0.28.0)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 @@ -21827,6 +24297,16 @@ snapshots: glob: 10.4.5 minimatch: 9.0.5 + text-decoder@1.2.7: + dependencies: + b4a: 1.8.1 + transitivePeerDependencies: + - react-native-b4a + optional: true + + text-hex@1.0.0: + optional: true + thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -21839,6 +24319,12 @@ snapshots: dependencies: tslib: 2.8.1 + through2@2.0.5: + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + optional: true + thunky@1.1.0: {} tiny-invariant@1.3.3: {} @@ -21880,6 +24366,9 @@ snapshots: dependencies: tldts-core: 7.0.17 + tmp@0.2.7: + optional: true + tmpl@1.0.5: {} to-regex-range@5.0.1: @@ -21898,6 +24387,11 @@ snapshots: dependencies: tldts: 7.0.17 + toxic@1.0.1: + dependencies: + lodash: 4.17.21 + optional: true + tr46@0.0.3: {} tr46@1.0.1: @@ -21914,6 +24408,9 @@ snapshots: tree-kill@1.2.2: {} + triple-beam@1.4.1: + optional: true + ts-api-utils@2.1.0(typescript@5.9.3): dependencies: typescript: 5.9.3 @@ -21946,6 +24443,25 @@ snapshots: '@ts-morph/common': 0.19.0 code-block-writer: 12.0.0 + ts-node@10.9.2(@types/node@20.19.24)(typescript@5.9.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.19.24 + acorn: 8.15.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.9.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optional: true + ts-node@10.9.2(@types/node@24.9.2)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -21972,7 +24488,10 @@ snapshots: tslib@2.8.1: {} - tsup@8.5.0(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6)(typescript@5.9.3): + tsscmp@1.0.6: + optional: true + + tsup@8.5.0(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0): dependencies: bundle-require: 5.1.0(esbuild@0.25.11) cac: 6.7.14 @@ -21983,7 +24502,7 @@ snapshots: fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6) + postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6)(yaml@2.9.0) resolve-from: 5.0.0 rollup: 4.52.5 source-map: 0.8.0-beta.0 @@ -22023,6 +24542,9 @@ snapshots: type-detect@4.0.8: {} + type-fest@0.20.2: + optional: true + type-fest@0.21.3: {} type-fest@4.41.0: {} @@ -22073,6 +24595,11 @@ snapshots: typed-assert@1.0.9: {} + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + optional: true + typescript-eslint@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3): dependencies: '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) @@ -22106,6 +24633,9 @@ snapshots: unicode-canonical-property-names-ecmascript@2.0.1: {} + unicode-emoji-modifier-base@1.0.0: + optional: true + unicode-match-property-ecmascript@2.0.0: dependencies: unicode-canonical-property-names-ecmascript: 2.0.1 @@ -22115,6 +24645,19 @@ snapshots: unicode-property-aliases-ecmascript@2.2.0: {} + unique-string@2.0.0: + dependencies: + crypto-random-string: 2.0.0 + optional: true + + universal-analytics@0.5.4: + dependencies: + debug: 4.4.3 + uuid: 14.0.1 + transitivePeerDependencies: + - supports-color + optional: true + universalify@2.0.1: {} unpipe@1.0.0: {} @@ -22157,10 +24700,38 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + update-notifier-cjs@5.1.7(encoding@0.1.13): + dependencies: + boxen: 5.1.2 + chalk: 4.1.2 + configstore: 5.0.1 + has-yarn: 2.1.0 + import-lazy: 2.1.0 + is-ci: 2.0.0 + is-installed-globally: 0.4.0 + is-npm: 5.0.0 + is-yarn-global: 0.3.0 + isomorphic-fetch: 3.0.0(encoding@0.1.13) + pupa: 2.1.1 + registry-auth-token: 5.1.1 + registry-url: 5.1.0 + semver: 7.7.4 + semver-diff: 3.1.1 + xdg-basedir: 4.0.0 + transitivePeerDependencies: + - encoding + optional: true + uri-js@4.4.1: dependencies: punycode: 2.3.1 + url-join@0.0.1: + optional: true + + url-template@2.0.8: + optional: true + use-callback-ref@1.3.3(@types/react@19.2.7)(react@19.2.3): dependencies: react: 19.2.3 @@ -22186,6 +24757,9 @@ snapshots: uuid@11.1.0: {} + uuid@14.0.1: + optional: true + uuid@8.3.2: {} uuid@9.0.1: {} @@ -22198,6 +24772,9 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 + valid-url@1.0.9: + optional: true + validate-npm-package-name@6.0.2: {} vary@1.1.2: {} @@ -22228,13 +24805,13 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 - vite-node@3.2.4(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6): + vite-node@3.2.4(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6) + vite: 7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' - jiti @@ -22249,13 +24826,13 @@ snapshots: - tsx - yaml - vite-node@3.2.4(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6): + vite-node@3.2.4(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) + vite: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' - jiti @@ -22280,18 +24857,18 @@ snapshots: transitivePeerDependencies: - supports-color - vite-plugin-svgr@4.5.0(rollup@4.62.0)(typescript@5.9.3)(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)): + vite-plugin-svgr@4.5.0(rollup@4.62.0)(typescript@5.9.3)(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0)): dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.62.0) '@svgr/core': 8.1.0(typescript@5.9.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.9.3)) - vite: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) + vite: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) transitivePeerDependencies: - rollup - supports-color - typescript - vite@7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6): + vite@7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0): dependencies: esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) @@ -22308,8 +24885,9 @@ snapshots: sass: 1.90.0 terser: 5.43.1 tsx: 4.20.6 + yaml: 2.9.0 - vite@7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6): + vite@7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0): dependencies: esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) @@ -22326,8 +24904,9 @@ snapshots: sass: 1.97.3 terser: 5.46.0 tsx: 4.20.6 + yaml: 2.9.0 - vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6): + vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0): dependencies: esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) @@ -22344,8 +24923,9 @@ snapshots: sass: 1.90.0 terser: 5.43.1 tsx: 4.20.6 + yaml: 2.9.0 - vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6): + vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0): dependencies: esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) @@ -22362,12 +24942,13 @@ snapshots: sass: 1.97.3 terser: 5.46.0 tsx: 4.20.6 + yaml: 2.9.0 - vitest@3.2.4(@types/node@20.19.24)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@25.0.1)(less@4.4.0)(lightningcss@1.30.2)(msw@2.11.6(@types/node@20.19.24)(typescript@5.9.3))(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6): + vitest@3.2.4(@types/node@20.19.24)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@25.0.1)(less@4.4.0)(lightningcss@1.30.2)(msw@2.11.6(@types/node@20.19.24)(typescript@5.9.3))(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(msw@2.11.6(@types/node@20.19.24)(typescript@5.9.3))(vite@7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)) + '@vitest/mocker': 3.2.4(msw@2.11.6(@types/node@20.19.24)(typescript@5.9.3))(vite@7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -22385,8 +24966,8 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6) - vite-node: 3.2.4(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6) + vite: 7.3.2(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0) + vite-node: 3.2.4(@types/node@20.19.24)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.6)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.19.24 @@ -22406,11 +24987,11 @@ snapshots: - tsx - yaml - vitest@3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@25.0.1)(less@4.4.2)(lightningcss@1.30.2)(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6): + vitest@3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@25.0.1)(less@4.4.2)(lightningcss@1.30.2)(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)) + '@vitest/mocker': 3.2.4(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -22428,8 +25009,8 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) - vite-node: 3.2.4(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) + vite: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) + vite-node: 3.2.4(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.9.2 @@ -22450,11 +25031,11 @@ snapshots: - yaml optional: true - vitest@3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(lightningcss@1.30.2)(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6): + vitest@3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@26.1.0)(less@4.4.2)(lightningcss@1.30.2)(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)) + '@vitest/mocker': 3.2.4(msw@2.11.6(@types/node@24.9.2)(typescript@5.9.3))(vite@7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -22472,8 +25053,8 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) - vite-node: 3.2.4(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6) + vite: 7.3.2(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) + vite-node: 3.2.4(@types/node@24.9.2)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.6)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.9.2 @@ -22543,7 +25124,7 @@ snapshots: optionalDependencies: webpack: 5.105.0(esbuild@0.28.0) - webpack-dev-middleware@7.4.5(webpack@5.105.0): + webpack-dev-middleware@7.4.5(webpack@5.105.0(esbuild@0.28.0)): dependencies: colorette: 2.0.20 memfs: 4.50.0 @@ -22554,7 +25135,7 @@ snapshots: optionalDependencies: webpack: 5.105.0(esbuild@0.28.0) - webpack-dev-server@5.2.2(webpack@5.105.0): + webpack-dev-server@5.2.2(webpack@5.105.0(esbuild@0.28.0)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -22582,7 +25163,7 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.105.0) + webpack-dev-middleware: 7.4.5(webpack@5.105.0(esbuild@0.28.0)) ws: 8.18.3 optionalDependencies: webpack: 5.105.0(esbuild@0.28.0) @@ -22629,7 +25210,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.4.0(esbuild@0.28.0)(webpack@5.105.0) + terser-webpack-plugin: 5.4.0(esbuild@0.28.0)(webpack@5.105.0(esbuild@0.28.0)) watchpack: 2.5.1 webpack-sources: 3.3.3 transitivePeerDependencies: @@ -22718,13 +25299,45 @@ snapshots: dependencies: isexe: 4.0.0 + which@7.0.0: + dependencies: + isexe: 4.0.0 + optional: true + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 stackback: 0.0.2 + widest-line@3.1.0: + dependencies: + string-width: 4.2.3 + optional: true + wildcard@2.0.1: {} + winston-transport@4.9.0: + dependencies: + logform: 2.7.0 + readable-stream: 3.6.2 + triple-beam: 1.4.1 + optional: true + + winston@3.19.0: + dependencies: + '@colors/colors': 1.6.0 + '@dabh/diagnostics': 2.0.8 + async: 3.2.6 + is-stream: 2.0.1 + logform: 2.7.0 + one-time: 1.0.0 + readable-stream: 3.6.2 + safe-stable-stringify: 2.5.0 + stack-trace: 0.0.10 + triple-beam: 1.4.1 + winston-transport: 4.9.0 + optional: true + word-wrap@1.2.5: {} wordwrap@1.0.0: {} @@ -22755,23 +25368,40 @@ snapshots: wrappy@1.0.2: {} + write-file-atomic@3.0.3: + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + optional: true + write-file-atomic@5.0.1: dependencies: imurmurhash: 0.1.4 signal-exit: 4.1.0 + ws@7.5.11: + optional: true + ws@8.18.3: {} wsl-utils@0.1.0: dependencies: is-wsl: 3.1.0 + xdg-basedir@4.0.0: + optional: true + xhr2@0.2.1: {} xml-name-validator@5.0.0: {} xmlchars@2.2.0: {} + xtend@4.0.2: + optional: true + y18n@5.0.8: {} yallist@3.1.1: {} @@ -22780,10 +25410,27 @@ snapshots: yallist@5.0.0: {} + yaml@2.9.0: + optional: true + + yargs-parser@20.2.9: + optional: true + yargs-parser@21.1.1: {} yargs-parser@22.0.0: {} + yargs@16.2.2: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + optional: true + yargs@17.7.2: dependencies: cliui: 8.0.1 @@ -22809,10 +25456,22 @@ snapshots: yoctocolors-cjs@2.1.3: {} + zip-stream@6.0.1: + dependencies: + archiver-utils: 5.0.2 + compress-commons: 6.0.2 + readable-stream: 4.7.0 + optional: true + zod-to-json-schema@3.24.6(zod@3.25.76): dependencies: zod: 3.25.76 + zod-to-json-schema@3.25.2(zod@3.25.76): + dependencies: + zod: 3.25.76 + optional: true + zod-to-json-schema@3.25.2(zod@4.1.13): dependencies: zod: 4.1.13 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index f5486d2b..0ce5677e 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,6 +1,7 @@ packages: - packages/* - examples/* + - e2e catalog: "@angular-devkit/architect": ^0.2003.21 @@ -29,6 +30,7 @@ catalog: "@vitest/coverage-v8": ^3.2.4 "@vitest/ui": ^3.2.4 "@nanostores/deepmap": ^0.0.1 + "@playwright/test": 1.61.1 "@vitejs/plugin-react": ^5.0.2 eslint: ^9.35.0 firebase: ^11.10.0 From 93911c1f2bb056e9c0b1045da6d3747ebfda5cdb Mon Sep 17 00:00:00 2001 From: Mike Hardy Date: Fri, 3 Jul 2026 01:14:10 -0500 Subject: [PATCH 3/9] test: working e2e tests for shadcn, nextjs, and nextjs-ssr --- .github/workflows/e2e.yaml | 15 ++-- .../work-queues/playwright-e2e-smoke.md | 72 ++++++++++++++----- e2e/fixtures/example-meta.ts | 29 ++++++++ e2e/global-setup.ts | 6 +- e2e/playwright.config.ts | 9 ++- e2e/tests/sign-in-handlers.spec.ts | 18 +++-- .../sign-in-auth-screen-w-handlers/page.tsx | 6 ++ .../sign-in-auth-screen-w-handlers/page.tsx | 6 ++ package.json | 4 ++ scripts/e2e-run.mjs | 63 ++++++++++++++++ 10 files changed, 195 insertions(+), 33 deletions(-) create mode 100644 scripts/e2e-run.mjs diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index 2df72db4..145672f2 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -10,29 +10,26 @@ permissions: contents: read jobs: - react-e2e: + ui-e2e: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Setup node - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: 22.13.0 check-latest: true - name: Setup pnpm - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 + uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 with: version: 10 - name: Install dependencies run: pnpm install - - name: Build packages - run: pnpm build:packages - - name: Install Firebase CLI run: npm i -g firebase-tools@14.15.2 @@ -52,5 +49,5 @@ jobs: - name: Install Playwright browsers run: pnpm --filter=e2e exec playwright install --with-deps chromium - - name: Run react e2e smoke - run: pnpm test:e2e:react + - name: Run UI e2e smoke (react, shadcn, nextjs, nextjs-ssr) + run: pnpm test:e2e diff --git a/developer-docs/work-queues/playwright-e2e-smoke.md b/developer-docs/work-queues/playwright-e2e-smoke.md index b300465d..7762b47a 100644 --- a/developer-docs/work-queues/playwright-e2e-smoke.md +++ b/developer-docs/work-queues/playwright-e2e-smoke.md @@ -47,7 +47,7 @@ Playwright manages each example's dev server; no hand-rolled preflight/postfligh scripts/e2e-run.mjs (pnpm test:e2e) → build:packages once (assert dist/) → start Auth emulator once (:9099, shared) - → for each example in [react, shadcn, nextjs, nextjs-ssr, angular, custom-auth-server]: + → for each example in [react, shadcn, nextjs, nextjs-ssr] (angular deferred — [Phase 2b](#phase-2b--angular-example-e2e-blocked)): playwright test (E2E_PROJECT=) → globalSetup: assert packages built + emulator reachable → top-level webServer selected by E2E_PROJECT: start dev server on its port, wait for URL @@ -77,14 +77,23 @@ Auth emulator `:9099`; Emulator UI `:4000` (why custom-auth-server uses `:4001`) | Script | Status | Purpose | |--------|--------|---------| +| `test:e2e` | **implemented** | Serial runner over react, shadcn, nextjs, nextjs-ssr | | `test:e2e:react` | **implemented** | react smoke only (`E2E_PROJECT=react`) | -| `test:e2e` | planned (2.5) | Serial runner (`scripts/e2e-run.mjs`) over all examples | -| `test:e2e:shadcn` | planned (2.5) | shadcn only | -| `test:e2e:nextjs` | planned (2.5) | nextjs only | -| `test:e2e:nextjs-ssr` | planned (2.5) | nextjs-ssr only | -| `test:e2e:angular` | planned (2.5) | angular-example only | +| `test:e2e:shadcn` | **implemented** | shadcn only | +| `test:e2e:nextjs` | **implemented** | nextjs only | +| `test:e2e:nextjs-ssr` | **implemented** | nextjs-ssr only | +| `test:e2e:angular` | planned (2b) | angular-example — blocked on bootstrap (see Phase 2b) | | `test:e2e:custom-auth-server` | planned (4.1) | custom-auth-server HTTP smoke only | +# CI coverage + +| What | Status | +|------|--------| +| Local `pnpm test:e2e` | **4 UI examples** (react, shadcn, nextjs, nextjs-ssr) — green | +| [`.github/workflows/e2e.yaml`](../../.github/workflows/e2e.yaml) | **`pnpm test:e2e`** — same four examples in CI; actions pinned (checkout v7, setup-node v6, pnpm v6) | + +When angular e2e closes ([Phase 2b](#phase-2b--angular-example-e2e-blocked)), add it to the serial runner and confirm **five** examples green in CI ([2b.4](#phase-2b--angular-example-e2e-blocked)). + # Per-item iteration protocol Each item runs one serial loop; the queue records the outcome after each step. @@ -111,21 +120,46 @@ Prove the whole model end-to-end on one example before generalizing ([review fin | 1.5 | `e2e/tests/sign-in-handlers.spec.ts` S1–S3, asserting rendered UI, parameterized per project | 1.4 | react smoke green locally | | 1.6 | Minimal CI job proving react e2e runs green (browser install + emulator + `test:e2e:react`) | 1.5 | react smoke green in CI | -## Phase 2 — Generalize to remaining UI examples +## Phase 2 — Generalize Vite/Next examples + serial runner | ID | Task | Depends | Done when | |----|------|---------|-----------| | 2.1 | shadcn project + meta (`vite --port 5174`; forgot-password → `/screens/forgot-password-screen`) | 1.5 | shadcn smoke green | | 2.2 | nextjs project + meta (`next dev -p 3000`; `trailingSlash`) | 1.5 | nextjs smoke green | | 2.3 | nextjs-ssr project + meta (`next dev -p 3001`; generous `webServer.timeout`) | 1.5 | nextjs-ssr smoke green | -| 2.4 | angular-example project + meta (reuse `run start -- --port 4200`, i.e. `clean && ng serve`) | 1.5 | angular smoke green | -| 2.5 | `scripts/e2e-run.mjs` serial runner + root `test:e2e` / `test:e2e:` scripts | 2.1–2.4 | `pnpm test:e2e` runs all UI examples serially | +| 2.5 | `scripts/e2e-run.mjs` serial runner + root `test:e2e` / `test:e2e:` scripts; **CI** runs `pnpm test:e2e` (four UI examples) with pinned modern actions | 2.1–2.3 | `pnpm test:e2e` green locally and in CI | + +## Phase 2b — Angular-example e2e (blocked) + +Split from Phase 2 after e2e attempt failed; angular is **not** in `example-meta`, `e2e-run.mjs`, or CI until resolved. + +| ID | Task | Depends | Done when | +|----|------|---------|-----------| +| 2b.1 | angular-example project + meta (reuse `run start -- --port 4200`, i.e. `clean && ng serve`) | 2.5 | meta + `test:e2e:angular` wired | +| 2b.2 | Fix client bootstrap so sign-in form renders in Playwright | 2b.1 | S1–S3 green locally | +| 2b.3 | Add angular-example to `e2e-run.mjs` + `pnpm test:e2e` | 2b.2 | full serial runner includes angular (five UI examples) | +| 2b.4 | Add angular-example to CI: confirm `pnpm test:e2e` (five UI examples) green on a PR | 2b.3 | CI serial smoke includes angular | + +### Angular e2e blocker (observed 2026-07-03) + +Playwright loads `http://localhost:4200/screens/sign-in-auth-screen-w-handlers` but the sign-in form never appears (`input[name="email"]` times out after 30s). Browser console: + +``` +NG0201: No provider found for `FirebaseApps`. Source: Environment Injector. + Path: firebaseui.store → FirebaseApps +``` + +`examples/angular/src/app/app.config.ts` registers `provideFirebaseApp(...)` and `provideFirebaseUI(...)`, but under `ng serve` the `FIREBASE_UI_STORE` factory still fails to resolve `FirebaseApps` in the client injector. A partial `useFactory(apps: FirebaseApps)` deps change in `packages/angular/src/lib/provider.ts` did not fix e2e. + +**Next steps:** reproduce with `E2E_PROJECT=angular-example pnpm --filter=e2e exec playwright test --project=angular-example`; fix provider/DI wiring in the example app and/or `@firebase-oss/ui-angular` before re-adding angular to the serial runner. ## Phase 3 — CI hardening +Depends on Phase 2 CI baseline ([2.5](#phase-2--generalize-vitenext-examples--serial-runner)); browser-cache work applies once the runner is stable in GHA. + | ID | Task | Depends | Done when | |----|------|---------|-----------| -| 3.1 | Separate `e2e` workflow: `playwright install --with-deps chromium` with **browser cache keyed on resolved Playwright version**; `pnpm build`; enable webframeworks; emulator; `pnpm test:e2e` | 2.5 | e2e green on PRs; browsers cached across runs | +| 3.1 | E2e workflow hardening: `playwright install --with-deps chromium` with **browser cache keyed on resolved Playwright version**; confirm `pnpm test:e2e` green in CI | 2.5 | e2e green on PRs; browsers cached across runs | | 3.2 | Broad path triggers: `packages/**`, `examples/**`, root `package.json`, `pnpm-lock.yaml`, `pnpm-workspace.yaml`, `e2e/**`, workflow file ([AD-7](../decisions.md#ad-7-e2e-runs-in-a-separate-ci-workflow-with-broad-triggers)) | 3.1 | Relevant PRs trigger e2e; shared-dependency changes not missed | ## Phase 4 — custom-auth-server smoke @@ -162,13 +196,16 @@ Update immediately after each step closes a gate. All items start `open` / `impl | 1 | 1.3 example-meta (react seed) | closed | closed | closed | test(e2e): install/configure playwright, implement react e2e smoke test | — | — | | | 1 | 1.4 react webServer + One Tap route-block | closed | closed | closed | test(e2e): install/configure playwright, implement react e2e smoke test | — | — | top-level webServer + `E2E_PROJECT`. | | 1 | 1.5 sign-in-handlers spec S1–S3 (react) | closed | closed | closed | test(e2e): install/configure playwright, implement react e2e smoke test | — | — | 3/3 passed locally. | -| 1 | 1.6 minimal CI proof (react) | closed | closed | closed | test(e2e): install/configure playwright, implement react e2e smoke test | — | — | `.github/workflows/e2e.yaml`; **CI green** on PR #1389 (`pnpm test:e2e:react` 3/3). Zizmor follow-up: pin actions + `permissions: contents: read`. | -| 2 | 2.1 shadcn | open | open | open | — | implementation | unit-focused | **Next pickup.** fp → `/screens/forgot-password-screen` | -| 2 | 2.2 nextjs | open | open | open | — | implementation | unit-focused | trailingSlash | -| 2 | 2.3 nextjs-ssr | open | open | open | — | implementation | unit-focused | generous timeout | -| 2 | 2.4 angular-example | open | open | open | — | implementation | unit-focused | reuse `start` (clean) | -| 2 | 2.5 serial runner + root scripts | open | open | open | — | implementation | area-focused | | -| 3 | 3.1 separate e2e workflow + browser cache | open | open | open | — | implementation | area-focused | | +| 1 | 1.6 minimal CI proof (react) | closed | closed | closed | test(e2e): install/configure playwright, implement react e2e smoke test | — | — | Phase 1 react-only proof; expanded to 4-example `pnpm test:e2e` in Phase 2 commit. | +| 2 | 2.1 shadcn | closed | closed | closed | test: working e2e tests for shadcn, nextjs, and nextjs-ssr | — | — | 3/3 green. | +| 2 | 2.2 nextjs | closed | closed | closed | test: working e2e tests for shadcn, nextjs, and nextjs-ssr | — | — | 3/3; forgot-password handler added to example page. | +| 2 | 2.3 nextjs-ssr | closed | closed | closed | test: working e2e tests for shadcn, nextjs, and nextjs-ssr | — | — | 3/3 green. | +| 2 | 2.5 serial runner + root scripts | closed | closed | closed | test: working e2e tests for shadcn, nextjs, and nextjs-ssr | — | — | `pnpm test:e2e` local + CI (4 examples); modern pinned actions. | +| 2b | 2b.1 angular meta + script | open | open | open | — | implementation | unit-focused | **Next pickup.** | +| 2b | 2b.2 fix NG0201 bootstrap | open | open | open | — | implementation | unit-focused | see [Phase 2b blocker](#angular-e2e-blocker-observed-2026-07-03) | +| 2b | 2b.3 wire angular into serial runner | open | open | open | — | implementation | area-focused | five UI examples in `pnpm test:e2e` | +| 2b | 2b.4 add angular to CI + verify | open | open | open | — | implementation | area-focused | blocked on 2b.3 | +| 3 | 3.1 e2e workflow browser cache | open | open | open | — | implementation | area-focused | blocked on 2.5 CI baseline | | 3 | 3.2 broad path triggers | open | open | open | — | implementation | unit-focused | | | 4 | 4.1 custom-auth-server HTTP smoke (:4001) | open | open | open | — | implementation | area-focused | | | 5 | 5.1 VITE_E2E skip oneTapSignIn | open | open | open | — | implementation | unit-focused | only if flaky | @@ -213,6 +250,7 @@ Feasibility review (verified against code) that shaped this queue: * `custom-auth-server` default `:4000` collides with Emulator UI → `:4001`. * CI path-filtering must be broad (examples depend on `packages/**`, root manifests, lockfile, catalog). * #13: react-only vertical slice first, to validate the model cheaply. +* **CI lag (angular only):** four UI examples run in GHA; angular waits on Phase 2b. # Related diff --git a/e2e/fixtures/example-meta.ts b/e2e/fixtures/example-meta.ts index bbb23418..058be252 100644 --- a/e2e/fixtures/example-meta.ts +++ b/e2e/fixtures/example-meta.ts @@ -28,6 +28,10 @@ export type ExampleMeta = { forgotPasswordPath: string; /** Optional dev-server command for Playwright webServer. */ webServerCommand?: string; + /** Optional Playwright webServer startup timeout (ms). */ + webServerTimeoutMs?: number; + /** URL Playwright polls until the dev server is ready (defaults to baseURL). */ + webServerHealthURL?: string; }; export const exampleMeta: Record = { @@ -39,6 +43,31 @@ export const exampleMeta: Record = { forgotPasswordPath: "/screens/forgot-password-auth-screen", webServerCommand: "pnpm --filter=react exec vite --port 5173 --strictPort", }, + shadcn: { + name: "shadcn", + baseURL: "http://localhost:5174", + signInWithHandlersPath: "/screens/sign-in-auth-screen-w-handlers", + trailingSlash: false, + forgotPasswordPath: "/screens/forgot-password-screen", + webServerCommand: "pnpm --filter=shadcn exec vite --port 5174 --strictPort", + }, + nextjs: { + name: "nextjs", + baseURL: "http://localhost:3000", + signInWithHandlersPath: "/screens/sign-in-auth-screen-w-handlers", + trailingSlash: true, + forgotPasswordPath: "/screens/forgot-password-auth-screen", + webServerCommand: "pnpm --filter=nextjs exec next dev --turbopack -p 3000", + }, + "nextjs-ssr": { + name: "nextjs-ssr", + baseURL: "http://localhost:3001", + signInWithHandlersPath: "/screens/sign-in-auth-screen-w-handlers", + trailingSlash: true, + forgotPasswordPath: "/screens/forgot-password-auth-screen", + webServerCommand: "pnpm --filter=nextjs-ssr exec next dev -p 3001", + webServerTimeoutMs: 180_000, + }, }; /** Returns the sign-in-with-handlers path respecting per-example trailing-slash rules. */ diff --git a/e2e/global-setup.ts b/e2e/global-setup.ts index 7d13e7a7..b21db0b9 100644 --- a/e2e/global-setup.ts +++ b/e2e/global-setup.ts @@ -138,7 +138,11 @@ function startAuthEmulator(): ChildProcess { } export default async function globalSetup(): Promise { - runBuildPackages(); + if (process.env.E2E_SKIP_BUILD_PACKAGES === "1") { + assertPackagesBuilt(); + } else { + runBuildPackages(); + } if (await isAuthEmulatorReachable()) { writeEmulatorState({ startedBySetup: false }); diff --git a/e2e/playwright.config.ts b/e2e/playwright.config.ts index fc19892b..4bc5698a 100644 --- a/e2e/playwright.config.ts +++ b/e2e/playwright.config.ts @@ -21,6 +21,8 @@ import { exampleMeta, type ExampleMeta } from "./fixtures/example-meta"; const REPO_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); +const DEFAULT_WEB_SERVER_TIMEOUT_MS = 120_000; + function webServerForMeta(meta: ExampleMeta) { if (!meta.webServerCommand) { return undefined; @@ -28,10 +30,10 @@ function webServerForMeta(meta: ExampleMeta) { return { command: meta.webServerCommand, - url: meta.baseURL, + url: meta.webServerHealthURL ?? meta.baseURL, cwd: REPO_ROOT, reuseExistingServer: !process.env.CI, - timeout: 120_000, + timeout: meta.webServerTimeoutMs ?? DEFAULT_WEB_SERVER_TIMEOUT_MS, }; } @@ -56,8 +58,11 @@ export default defineConfig({ ...(webServerMeta ? { webServer: webServerForMeta(webServerMeta) } : {}), projects: Object.values(exampleMeta).map((meta) => ({ name: meta.name, + timeout: meta.name === "angular-example" ? 90_000 : undefined, + expect: meta.name === "angular-example" ? { timeout: 30_000 } : undefined, use: { baseURL: meta.baseURL, + actionTimeout: meta.name === "angular-example" ? 15_000 : undefined, }, })), }); diff --git a/e2e/tests/sign-in-handlers.spec.ts b/e2e/tests/sign-in-handlers.spec.ts index 8f749b2c..55d513c5 100644 --- a/e2e/tests/sign-in-handlers.spec.ts +++ b/e2e/tests/sign-in-handlers.spec.ts @@ -20,6 +20,10 @@ import { expect, test } from "../fixtures/test-harness"; const { labels, errors } = enUs.translations; +async function waitForSignInForm(page: import("@playwright/test").Page): Promise { + await page.waitForSelector('input[name="email"]', { state: "visible", timeout: 30_000 }); +} + for (const [projectName, meta] of Object.entries(exampleMeta)) { test.describe(`sign-in with handlers smoke (${projectName})`, () => { test.beforeEach(({}, testInfo) => { @@ -28,27 +32,33 @@ for (const [projectName, meta] of Object.entries(exampleMeta)) { test("S1: sign-in form shows email, password, and submit", async ({ page }) => { await page.goto(signInWithHandlersUrl(meta)); + await waitForSignInForm(page); - await expect(page.getByRole("textbox", { name: labels.emailAddress })).toBeVisible(); + await expect(page.getByLabel(labels.emailAddress)).toBeVisible(); await expect(page.getByLabel(labels.password)).toBeVisible(); await expect(page.getByRole("button", { name: labels.signIn, exact: true })).toBeVisible(); }); test("S2: empty submit shows email validation feedback", async ({ page }) => { await page.goto(signInWithHandlersUrl(meta)); + await waitForSignInForm(page); await page.getByRole("button", { name: labels.signIn, exact: true }).click(); - await expect(page.getByRole("alert").filter({ hasText: errors.invalidEmail })).toBeVisible(); + // React uses role="alert"; shadcn FormMessage renders as

— assert visible copy, not role. + await expect(page.getByText(errors.invalidEmail)).toBeVisible(); }); test("S3: forgot-password navigates to reset screen", async ({ page }) => { await page.goto(signInWithHandlersUrl(meta)); + await waitForSignInForm(page); await page.getByRole("button", { name: labels.forgotPassword }).click(); - await expect(page.getByRole("heading", { name: labels.resetPassword })).toBeVisible(); - await expect(page.getByRole("textbox", { name: labels.emailAddress })).toBeVisible(); + // React CardTitle is

; shadcn CardTitle is a styled
— assert screen chrome + email field. + await expect(page.getByText(labels.resetPassword).first()).toBeVisible(); + await expect(page.getByLabel(labels.emailAddress)).toBeVisible(); + await expect(page.getByRole("button", { name: labels.resetPassword })).toBeVisible(); }); }); } diff --git a/examples/nextjs-ssr/app/screens/sign-in-auth-screen-w-handlers/page.tsx b/examples/nextjs-ssr/app/screens/sign-in-auth-screen-w-handlers/page.tsx index d5c82539..7dd0277d 100644 --- a/examples/nextjs-ssr/app/screens/sign-in-auth-screen-w-handlers/page.tsx +++ b/examples/nextjs-ssr/app/screens/sign-in-auth-screen-w-handlers/page.tsx @@ -17,10 +17,16 @@ "use client"; import { SignInAuthScreen } from "@firebase-oss/ui-react"; +import { useRouter } from "next/navigation"; export default function SignInAuthScreenWithHandlersPage() { + const router = useRouter(); + return ( { + router.push("/screens/forgot-password-auth-screen"); + }} onSignIn={(credential) => { console.log(credential); }} diff --git a/examples/nextjs/app/screens/sign-in-auth-screen-w-handlers/page.tsx b/examples/nextjs/app/screens/sign-in-auth-screen-w-handlers/page.tsx index d5c82539..7dd0277d 100644 --- a/examples/nextjs/app/screens/sign-in-auth-screen-w-handlers/page.tsx +++ b/examples/nextjs/app/screens/sign-in-auth-screen-w-handlers/page.tsx @@ -17,10 +17,16 @@ "use client"; import { SignInAuthScreen } from "@firebase-oss/ui-react"; +import { useRouter } from "next/navigation"; export default function SignInAuthScreenWithHandlersPage() { + const router = useRouter(); + return ( { + router.push("/screens/forgot-password-auth-screen"); + }} onSignIn={(credential) => { console.log(credential); }} diff --git a/package.json b/package.json index d3a44a92..b1a8b56e 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,11 @@ "format:check": "prettier --check **/{src,tests}/**/*.{ts,tsx}", "format:write": "prettier --write **/{src,tests}/**/*.{ts,tsx}", "test": "pnpm --filter=@firebase-oss/ui-core run test && pnpm --filter=@firebase-oss/ui-translations run test && pnpm --filter=@firebase-oss/ui-styles run test && pnpm --filter=@firebase-oss/ui-react run test && pnpm --filter=@firebase-oss/ui-shadcn run test && pnpm --filter=@firebase-oss/ui-angular run test", + "test:e2e": "node scripts/e2e-run.mjs", "test:e2e:react": "E2E_PROJECT=react pnpm --filter=e2e exec playwright test --project=react", + "test:e2e:shadcn": "E2E_PROJECT=shadcn pnpm --filter=e2e exec playwright test --project=shadcn", + "test:e2e:nextjs": "E2E_PROJECT=nextjs pnpm --filter=e2e exec playwright test --project=nextjs", + "test:e2e:nextjs-ssr": "E2E_PROJECT=nextjs-ssr pnpm --filter=e2e exec playwright test --project=nextjs-ssr", "test:watch": "pnpm --filter=@firebase-oss/ui-core run test:unit:watch & pnpm --filter=@firebase-oss/ui-react run test:unit:watch & pnpm --filter=@firebase-oss/ui-angular run test:watch", "version:bump:all": "pnpm --filter=@firebase-oss/ui-core run version:bump && pnpm --filter=@firebase-oss/ui-translations run version:bump && pnpm --filter=@firebase-oss/ui-react run version:bump && pnpm --filter=@firebase-oss/ui-styles run version:bump && pnpm --filter=@firebase-oss/ui-angular run version:bump", "publish:tags:all": "pnpm i && pnpm --filter=@firebase-oss/ui-core run publish:tags && pnpm --filter=@firebase-oss/ui-translations run publish:tags && pnpm --filter=@firebase-oss/ui-react run publish:tags && pnpm --filter=@firebase-oss/ui-styles run publish:tags && pnpm --filter=@firebase-oss/ui-angular run publish:tags", diff --git a/scripts/e2e-run.mjs b/scripts/e2e-run.mjs new file mode 100644 index 00000000..538aef0d --- /dev/null +++ b/scripts/e2e-run.mjs @@ -0,0 +1,63 @@ +/** + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { spawnSync } from "node:child_process"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const REPO_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); + +/** UI examples exercised serially by `pnpm test:e2e` (angular deferred — see Phase 2b). */ +const E2E_UI_EXAMPLES = ["react", "shadcn", "nextjs", "nextjs-ssr"]; + +function ensurePackagesBuilt() { + console.log("\n[e2e-run] build:packages (once)…\n"); + const build = spawnSync("pnpm", ["build:packages"], { cwd: REPO_ROOT, stdio: "inherit" }); + if (build.status !== 0) { + process.exit(build.status ?? 1); + } +} + +function runExample(example) { + console.log(`\n[e2e-run] Starting ${example}…\n`); + + const result = spawnSync( + "pnpm", + ["--filter=e2e", "exec", "playwright", "test", `--project=${example}`], + { + cwd: REPO_ROOT, + stdio: "inherit", + env: { ...process.env, E2E_PROJECT: example, E2E_SKIP_BUILD_PACKAGES: "1" }, + } + ); + + if (result.status !== 0) { + process.exitCode = result.status ?? 1; + } +} + +ensurePackagesBuilt(); + +for (const example of E2E_UI_EXAMPLES) { + runExample(example); + if (process.exitCode) { + break; + } +} + +if (process.exitCode) { + process.exit(process.exitCode); +} From afd13569ffbdfe07d14a13f2e4f5625367f183eb Mon Sep 17 00:00:00 2001 From: Mike Hardy Date: Fri, 3 Jul 2026 11:57:06 -0500 Subject: [PATCH 4/9] fix(angular): use AngularFire peer provider for FirebaseUI --- packages/angular/src/lib/provider.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/angular/src/lib/provider.ts b/packages/angular/src/lib/provider.ts index 70843c55..78fe6a70 100644 --- a/packages/angular/src/lib/provider.ts +++ b/packages/angular/src/lib/provider.ts @@ -82,8 +82,7 @@ export function provideFirebaseUI(uiFactory: (apps: FirebaseApps) => FirebaseUIS { provide: FIREBASE_UI_STORE, deps: [FirebaseApps, [new Optional(), Auth]], - useFactory: () => { - const apps = inject(FirebaseApps); + useFactory: (apps: FirebaseApps) => { if (!apps || apps.length === 0) { throw new Error("No Firebase apps found"); } From 1ab4cb1d8d7ac10e5503467c32d439ffcb0d2c03 Mon Sep 17 00:00:00 2001 From: Mike Hardy Date: Fri, 3 Jul 2026 11:57:17 -0500 Subject: [PATCH 5/9] test(angular): e2e test for angular example --- .../work-queues/playwright-e2e-smoke.md | 10 +-- e2e/fixtures/example-meta.ts | 8 +++ examples/angular/package.json | 6 ++ package.json | 1 + pnpm-lock.yaml | 62 ++++++++----------- scripts/e2e-run.mjs | 4 +- 6 files changed, 49 insertions(+), 42 deletions(-) diff --git a/developer-docs/work-queues/playwright-e2e-smoke.md b/developer-docs/work-queues/playwright-e2e-smoke.md index 7762b47a..bad48a7d 100644 --- a/developer-docs/work-queues/playwright-e2e-smoke.md +++ b/developer-docs/work-queues/playwright-e2e-smoke.md @@ -149,7 +149,7 @@ NG0201: No provider found for `FirebaseApps`. Source: Environment Injector. Path: firebaseui.store → FirebaseApps ``` -`examples/angular/src/app/app.config.ts` registers `provideFirebaseApp(...)` and `provideFirebaseUI(...)`, but under `ng serve` the `FIREBASE_UI_STORE` factory still fails to resolve `FirebaseApps` in the client injector. A partial `useFactory(apps: FirebaseApps)` deps change in `packages/angular/src/lib/provider.ts` did not fix e2e. +`examples/angular/src/app/app.config.ts` registers `provideFirebaseApp(...)` and `provideFirebaseUI(...)`, but under `ng serve` the `FIREBASE_UI_STORE` factory still failed to resolve `FirebaseApps` in the client injector until the local workspace package was installed as an injected dependency. The package already declares `@angular/fire` as a peer; `dependenciesMeta["@firebase-oss/ui-angular"].injected = true` makes the Angular example consume a peer-resolved workspace copy instead of the source package's devDependency peer context. With the provider factory cleanup and injected workspace dependency, `pnpm test:e2e:angular` passes `3/3`. **Next steps:** reproduce with `E2E_PROJECT=angular-example pnpm --filter=e2e exec playwright test --project=angular-example`; fix provider/DI wiring in the example app and/or `@firebase-oss/ui-angular` before re-adding angular to the serial runner. @@ -201,10 +201,10 @@ Update immediately after each step closes a gate. All items start `open` / `impl | 2 | 2.2 nextjs | closed | closed | closed | test: working e2e tests for shadcn, nextjs, and nextjs-ssr | — | — | 3/3; forgot-password handler added to example page. | | 2 | 2.3 nextjs-ssr | closed | closed | closed | test: working e2e tests for shadcn, nextjs, and nextjs-ssr | — | — | 3/3 green. | | 2 | 2.5 serial runner + root scripts | closed | closed | closed | test: working e2e tests for shadcn, nextjs, and nextjs-ssr | — | — | `pnpm test:e2e` local + CI (4 examples); modern pinned actions. | -| 2b | 2b.1 angular meta + script | open | open | open | — | implementation | unit-focused | **Next pickup.** | -| 2b | 2b.2 fix NG0201 bootstrap | open | open | open | — | implementation | unit-focused | see [Phase 2b blocker](#angular-e2e-blocker-observed-2026-07-03) | -| 2b | 2b.3 wire angular into serial runner | open | open | open | — | implementation | area-focused | five UI examples in `pnpm test:e2e` | -| 2b | 2b.4 add angular to CI + verify | open | open | open | — | implementation | area-focused | blocked on 2b.3 | +| 2b | 2b.1 angular meta + script | closed | closed | closed | test(angular): e2e test for angular example | — | — | `test:e2e:angular` wired. | +| 2b | 2b.2 fix NG0201 bootstrap | closed | closed | closed | test(angular): e2e test for angular example | — | — | fixed via peer-resolved injected workspace dependency + provider factory cleanup. | +| 2b | 2b.3 wire angular into serial runner | closed | closed | closed | test(angular): e2e test for angular example | — | — | `pnpm test:e2e` = five UI examples, green locally. | +| 2b | 2b.4 add angular to CI + verify | closed | closed | closed | test(angular): e2e test for angular example | — | — | workflow already runs `pnpm test:e2e`; next PR run verifies in GHA. | | 3 | 3.1 e2e workflow browser cache | open | open | open | — | implementation | area-focused | blocked on 2.5 CI baseline | | 3 | 3.2 broad path triggers | open | open | open | — | implementation | unit-focused | | | 4 | 4.1 custom-auth-server HTTP smoke (:4001) | open | open | open | — | implementation | area-focused | | diff --git a/e2e/fixtures/example-meta.ts b/e2e/fixtures/example-meta.ts index 058be252..ee1a2fd2 100644 --- a/e2e/fixtures/example-meta.ts +++ b/e2e/fixtures/example-meta.ts @@ -68,6 +68,14 @@ export const exampleMeta: Record = { webServerCommand: "pnpm --filter=nextjs-ssr exec next dev -p 3001", webServerTimeoutMs: 180_000, }, + "angular-example": { + name: "angular-example", + baseURL: "http://localhost:4200", + signInWithHandlersPath: "/screens/sign-in-auth-screen-w-handlers", + trailingSlash: false, + forgotPasswordPath: "/screens/forgot-password-auth-screen", + webServerCommand: "pnpm --filter=angular-example run start --port 4200", + }, }; /** Returns the sign-in-with-handlers path respecting per-example trailing-slash rules. */ diff --git a/examples/angular/package.json b/examples/angular/package.json index 85d8fcb0..1901b2b4 100644 --- a/examples/angular/package.json +++ b/examples/angular/package.json @@ -45,6 +45,11 @@ "tslib": "^2.3.0", "zone.js": "~0.15.0" }, + "dependenciesMeta": { + "@firebase-oss/ui-angular": { + "injected": true + } + }, "devDependencies": { "@angular-devkit/build-angular": "catalog:", "@angular-devkit/core": "catalog:", @@ -70,6 +75,7 @@ "nanostores": "^0.11.3", "ng-packagr": "^20.2.0", "prettier": "^3.1.1", + "rimraf": "catalog:", "typescript": "^5.9.2" } } diff --git a/package.json b/package.json index b1a8b56e..4d86e254 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "test:e2e:shadcn": "E2E_PROJECT=shadcn pnpm --filter=e2e exec playwright test --project=shadcn", "test:e2e:nextjs": "E2E_PROJECT=nextjs pnpm --filter=e2e exec playwright test --project=nextjs", "test:e2e:nextjs-ssr": "E2E_PROJECT=nextjs-ssr pnpm --filter=e2e exec playwright test --project=nextjs-ssr", + "test:e2e:angular": "E2E_PROJECT=angular-example pnpm --filter=e2e exec playwright test --project=angular-example", "test:watch": "pnpm --filter=@firebase-oss/ui-core run test:unit:watch & pnpm --filter=@firebase-oss/ui-react run test:unit:watch & pnpm --filter=@firebase-oss/ui-angular run test:watch", "version:bump:all": "pnpm --filter=@firebase-oss/ui-core run version:bump && pnpm --filter=@firebase-oss/ui-translations run version:bump && pnpm --filter=@firebase-oss/ui-react run version:bump && pnpm --filter=@firebase-oss/ui-styles run version:bump && pnpm --filter=@firebase-oss/ui-angular run version:bump", "publish:tags:all": "pnpm i && pnpm --filter=@firebase-oss/ui-core run publish:tags && pnpm --filter=@firebase-oss/ui-translations run publish:tags && pnpm --filter=@firebase-oss/ui-react run publish:tags && pnpm --filter=@firebase-oss/ui-styles run publish:tags && pnpm --filter=@firebase-oss/ui-angular run publish:tags", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 209fd3a3..74598483 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -226,7 +226,7 @@ importers: version: 20.3.26(cf5d6e644c41e8ccd7f957989714a299) '@firebase-oss/ui-angular': specifier: workspace:* - version: link:../../packages/angular + version: file:packages/angular(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/fire@20.0.1(c610c615b258e4a2e05e35c7c07ea289)) '@firebase-oss/ui-core': specifier: workspace:* version: link:../../packages/core @@ -257,6 +257,9 @@ importers: zone.js: specifier: ~0.15.0 version: 0.15.1 + dependenciesMeta: + '@firebase-oss/ui-angular': + injected: true devDependencies: '@angular-devkit/architect': specifier: 'catalog:' @@ -324,6 +327,9 @@ importers: prettier: specifier: ^3.1.1 version: 3.6.2 + rimraf: + specifier: 'catalog:' + version: 6.0.1 typescript: specifier: ^5.9.2 version: 5.9.3 @@ -2829,6 +2835,11 @@ packages: '@fastify/busboy@3.2.0': resolution: {integrity: sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==} + '@firebase-oss/ui-angular@file:packages/angular': + resolution: {directory: packages/angular, type: directory} + peerDependencies: + '@angular/fire': catalog:peerDependencies + '@firebase/ai@1.4.1': resolution: {integrity: sha512-bcusQfA/tHjUjBTnMx6jdoPMpDl3r8K15Z+snHz9wq0Foox0F/V+kNLXucEOHoTL2hTc9l+onZCyBJs2QoIC3g==} engines: {node: '>=18.0.0'} @@ -3435,14 +3446,6 @@ packages: '@types/node': optional: true - '@isaacs/balanced-match@4.0.1': - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} - engines: {node: 20 || >=22} - - '@isaacs/brace-expansion@5.0.0': - resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} - engines: {node: 20 || >=22} - '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -9321,10 +9324,6 @@ packages: minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - minimatch@10.1.1: - resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} - engines: {node: 20 || >=22} - minimatch@10.2.5: resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} @@ -9883,10 +9882,6 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-scurry@2.0.0: - resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} - engines: {node: 20 || >=22} - path-scurry@2.0.2: resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} engines: {node: 18 || 20 || >=22} @@ -14111,6 +14106,18 @@ snapshots: '@fastify/busboy@3.2.0': {} + '@firebase-oss/ui-angular@file:packages/angular(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/fire@20.0.1(c610c615b258e4a2e05e35c7c07ea289))': + dependencies: + '@angular/fire': 20.0.1(c610c615b258e4a2e05e35c7c07ea289) + '@firebase-oss/ui-core': link:packages/core + '@firebase-oss/ui-styles': link:packages/styles + '@tanstack/angular-form': 1.23.8(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)) + nanostores: 1.1.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@angular/common' + - '@angular/core' + '@firebase/ai@1.4.1(@firebase/app-types@0.9.3)(@firebase/app@0.13.2)': dependencies: '@firebase/app': 0.13.2 @@ -14938,12 +14945,6 @@ snapshots: optionalDependencies: '@types/node': 24.9.2 - '@isaacs/balanced-match@4.0.1': {} - - '@isaacs/brace-expansion@5.0.0': - dependencies: - '@isaacs/balanced-match': 4.0.1 - '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -20197,10 +20198,10 @@ snapshots: dependencies: foreground-child: 3.3.1 jackspeak: 4.1.1 - minimatch: 10.1.1 - minipass: 7.1.2 + minimatch: 10.2.5 + minipass: 7.1.3 package-json-from-dist: 1.0.1 - path-scurry: 2.0.0 + path-scurry: 2.0.2 glob@13.0.6: dependencies: @@ -21966,10 +21967,6 @@ snapshots: minimalistic-assert@1.0.1: {} - minimatch@10.1.1: - dependencies: - '@isaacs/brace-expansion': 5.0.0 - minimatch@10.2.5: dependencies: brace-expansion: 5.0.6 @@ -22684,11 +22681,6 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.3 - path-scurry@2.0.0: - dependencies: - lru-cache: 11.2.2 - minipass: 7.1.3 - path-scurry@2.0.2: dependencies: lru-cache: 11.2.2 diff --git a/scripts/e2e-run.mjs b/scripts/e2e-run.mjs index 538aef0d..c4bd0664 100644 --- a/scripts/e2e-run.mjs +++ b/scripts/e2e-run.mjs @@ -20,8 +20,8 @@ import { fileURLToPath } from "node:url"; const REPO_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); -/** UI examples exercised serially by `pnpm test:e2e` (angular deferred — see Phase 2b). */ -const E2E_UI_EXAMPLES = ["react", "shadcn", "nextjs", "nextjs-ssr"]; +/** UI examples exercised serially by `pnpm test:e2e`. */ +const E2E_UI_EXAMPLES = ["react", "shadcn", "nextjs", "nextjs-ssr", "angular-example"]; function ensurePackagesBuilt() { console.log("\n[e2e-run] build:packages (once)…\n"); From c77257733080188a00890087ec3e14fdca06fd43 Mon Sep 17 00:00:00 2001 From: Mike Hardy Date: Fri, 3 Jul 2026 12:02:20 -0500 Subject: [PATCH 6/9] ci(e2e): harden workflow triggers and browser cache --- .github/workflows/e2e.yaml | 32 ++++++++++++++++++- .../work-queues/playwright-e2e-smoke.md | 6 ++-- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index 145672f2..b152332f 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -4,7 +4,23 @@ on: push: branches: - main + paths: + - 'packages/**' + - 'examples/**' + - 'e2e/**' + - '.github/workflows/e2e.yaml' + - 'package.json' + - 'pnpm-lock.yaml' + - 'pnpm-workspace.yaml' pull_request: + paths: + - 'packages/**' + - 'examples/**' + - 'e2e/**' + - '.github/workflows/e2e.yaml' + - 'package.json' + - 'pnpm-lock.yaml' + - 'pnpm-workspace.yaml' permissions: contents: read @@ -30,6 +46,20 @@ jobs: - name: Install dependencies run: pnpm install + - name: Resolve Playwright version + id: playwright-version + run: | + version="$(pnpm --filter=e2e exec node -p "require('@playwright/test/package.json').version")" + echo "playwright-version=${version}" >> "$GITHUB_OUTPUT" + + - name: Cache Playwright browsers + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 + with: + path: ~/.cache/ms-playwright + key: playwright-${{ runner.os }}-${{ steps.playwright-version.outputs.playwright-version }} + restore-keys: | + playwright-${{ runner.os }}- + - name: Install Firebase CLI run: npm i -g firebase-tools@14.15.2 @@ -49,5 +79,5 @@ jobs: - name: Install Playwright browsers run: pnpm --filter=e2e exec playwright install --with-deps chromium - - name: Run UI e2e smoke (react, shadcn, nextjs, nextjs-ssr) + - name: Run UI e2e smoke run: pnpm test:e2e diff --git a/developer-docs/work-queues/playwright-e2e-smoke.md b/developer-docs/work-queues/playwright-e2e-smoke.md index bad48a7d..10f6891c 100644 --- a/developer-docs/work-queues/playwright-e2e-smoke.md +++ b/developer-docs/work-queues/playwright-e2e-smoke.md @@ -205,9 +205,9 @@ Update immediately after each step closes a gate. All items start `open` / `impl | 2b | 2b.2 fix NG0201 bootstrap | closed | closed | closed | test(angular): e2e test for angular example | — | — | fixed via peer-resolved injected workspace dependency + provider factory cleanup. | | 2b | 2b.3 wire angular into serial runner | closed | closed | closed | test(angular): e2e test for angular example | — | — | `pnpm test:e2e` = five UI examples, green locally. | | 2b | 2b.4 add angular to CI + verify | closed | closed | closed | test(angular): e2e test for angular example | — | — | workflow already runs `pnpm test:e2e`; next PR run verifies in GHA. | -| 3 | 3.1 e2e workflow browser cache | open | open | open | — | implementation | area-focused | blocked on 2.5 CI baseline | -| 3 | 3.2 broad path triggers | open | open | open | — | implementation | unit-focused | | -| 4 | 4.1 custom-auth-server HTTP smoke (:4001) | open | open | open | — | implementation | area-focused | | +| 3 | 3.1 e2e workflow browser cache | closed | closed | closed | ci(e2e): harden workflow triggers and browser cache | — | — | browser cache keyed by resolved `@playwright/test` version; static review green. | +| 3 | 3.2 broad path triggers | closed | closed | closed | ci(e2e): harden workflow triggers and browser cache | — | — | AD-7 paths added for packages/examples/e2e/workflow/root manifests. | +| 4 | 4.1 custom-auth-server HTTP smoke (:4001) | open | open | open | — | implementation | area-focused | **Next pickup.** | | 5 | 5.1 VITE_E2E skip oneTapSignIn | open | open | open | — | implementation | unit-focused | only if flaky | | 5 | 5.2 NEXT_PUBLIC_E2E skip autoAnonymousLogin | open | open | open | — | implementation | unit-focused | only if flaky | | 6 | 6.1 align example deps | open | open | open | — | implementation | area-focused | | From 6853c2b951d0372b92092eae6fc48b3a7c1a0d64 Mon Sep 17 00:00:00 2001 From: Mike Hardy Date: Fri, 3 Jul 2026 13:00:25 -0500 Subject: [PATCH 7/9] test(e2e): add custom-auth-server HTTP smoke on :4001 Wire non-browser boot smoke for the Express example (AD-6): ui|http example kind, serial runner entry, and spec-managed lifecycle on :4001. Update testing-strategy and AD-6 as durable owners; defer Phase 5 auth flags (no flakiness observed). --- .../architecture/testing-strategy.md | 11 +- developer-docs/decisions.md | 4 +- .../work-queues/playwright-e2e-smoke.md | 104 ++++++---------- e2e/fixtures/example-meta.ts | 57 +++++++-- e2e/playwright.config.ts | 9 +- e2e/tests/custom-auth-server.spec.ts | 116 ++++++++++++++++++ e2e/tests/sign-in-handlers.spec.ts | 4 +- package.json | 1 + scripts/e2e-run.mjs | 9 +- 9 files changed, 224 insertions(+), 91 deletions(-) create mode 100644 e2e/tests/custom-auth-server.spec.ts diff --git a/developer-docs/architecture/testing-strategy.md b/developer-docs/architecture/testing-strategy.md index cc289809..189ff953 100644 --- a/developer-docs/architecture/testing-strategy.md +++ b/developer-docs/architecture/testing-strategy.md @@ -3,7 +3,7 @@ type: Reference title: Testing strategy description: Verification layers for firebaseui-web packages and examples. tags: [testing, ci, playwright] -timestamp: 2026-07-01T00:00:00Z +timestamp: 2026-07-03T00:00:00Z --- # Layers @@ -13,18 +13,19 @@ timestamp: 2026-07-01T00:00:00Z | Package unit tests | `pnpm test` | [CONTRIBUTING.md](../../CONTRIBUTING.md) | Core/react/angular/shadcn/translations/styles logic | | Compile (packages + examples) | `pnpm build` | [CONTRIBUTING.md](../../CONTRIBUTING.md) | TS, bundler, framework build errors | | Lint / format | `pnpm lint:check`, `pnpm format:check` | [CONTRIBUTING.md](../../CONTRIBUTING.md) | Style regressions | -| Example smoke (browser + HTTP) | `pnpm test:e2e` | [work-queues/playwright-e2e-smoke.md](../work-queues/playwright-e2e-smoke.md) | Example dev-server load + basic UI interactivity (five UI examples) and `custom-auth-server` HTTP boot | +| Example smoke (browser + HTTP) | `pnpm test:e2e` | [AD-3](../decisions.md#ad-3-playwright-example-smoke-tests-mvp-scope-dev-server), [AD-4](../decisions.md#ad-4-playwright-managed-dev-servers-serial-shared-emulator), [AD-6](../decisions.md#ad-6-custom-auth-server-binds-4001-for-e2e) | Dev-server UI interactivity (five UI examples) and `custom-auth-server` HTTP boot | | Security audit | `pnpm audit` | [playbooks/dependency-update-verification.md](../playbooks/dependency-update-verification.md) | Known CVEs in lockfile | # CI today -[`.github/workflows/test.yaml`](../../.github/workflows/test.yaml): `pnpm build`, Auth emulator start, `pnpm test`. **No browser smoke yet** — target of Playwright work queue. e2e will land as a **separate workflow** with broad path triggers — [AD-7](../decisions.md#ad-7-e2e-runs-in-a-separate-ci-workflow-with-broad-triggers). +[`.github/workflows/test.yaml`](../../.github/workflows/test.yaml): `pnpm build`, Auth emulator start, `pnpm test`. + +[`.github/workflows/e2e.yaml`](../../.github/workflows/e2e.yaml): `pnpm test:e2e` (six examples), Auth emulator, Playwright Chromium — [AD-7](../decisions.md#ad-7-e2e-runs-in-a-separate-ci-workflow-with-broad-triggers). # Gaps -* No example-level automated tests yet (Angular example `vitest` has no spec files) — closed by the Playwright work queue. * Skipped package integration tests (`describe.skip`). -* `custom-auth-server` not built by root `build` (e2e builds it on demand). +* `custom-auth-server` not built by root `pnpm build` (e2e builds it on demand). * Production build artifacts not exercised by e2e — deferred, [AD-8](../decisions.md#ad-8-production-artifact-e2e-deferred-future-phase). * `pnpm audit` not gated in CI. diff --git a/developer-docs/decisions.md b/developer-docs/decisions.md index 80c379ab..a84ce498 100644 --- a/developer-docs/decisions.md +++ b/developer-docs/decisions.md @@ -42,7 +42,9 @@ Each example has a **unique e2e port** (react 5173, shadcn 5174, nextjs 3000, ne ## AD-6: custom-auth-server binds :4001 for e2e -The Express `custom-auth-server` defaults to `:4000`, which collides with the **Firebase Emulator UI** (`:4000`). For e2e it binds **`:4001`** (via its `PORT` env) so it never conflicts with emulator services. Its smoke is a **non-browser boot + HTTP (`fetch`/`curl`) assertion** — start the built server, assert it responds, tear down — not a Playwright browser flow. This brings every monorepo example (including `custom-auth-server`) under automated e2e coverage. +The Express `custom-auth-server` defaults to `:4000`, which collides with the **Firebase Emulator UI** (`:4000`). For e2e it binds **`:4001`** (via its `PORT` env) so it never conflicts with emulator services. Its smoke is a **non-browser boot + HTTP assertion** — build the example, start the built server, assert it responds, tear down — not a Playwright browser flow. This brings every monorepo example (including `custom-auth-server`) under automated e2e coverage. + +**Lifecycle:** Playwright's `webServer` readiness poll accepts only HTTP status `< 400`. Without credentials, `GET /auth/snapchat/config` returns `500`, so the HTTP smoke spec manages build/boot/poll/teardown itself (detached process group, `:4001` via `PORT`). UI examples continue to use Playwright `webServer` as in [AD-4](#ad-4-playwright-managed-dev-servers-serial-shared-emulator). --- diff --git a/developer-docs/work-queues/playwright-e2e-smoke.md b/developer-docs/work-queues/playwright-e2e-smoke.md index 10f6891c..656e0aed 100644 --- a/developer-docs/work-queues/playwright-e2e-smoke.md +++ b/developer-docs/work-queues/playwright-e2e-smoke.md @@ -3,7 +3,7 @@ type: Work Queue title: Playwright example e2e smoke description: Phased, orchestrator-processable backlog to add Playwright smoke tests for every monorepo example, run them locally and in CI, then harden dependencies. tags: [playwright, e2e, work-queue] -timestamp: 2026-07-01T00:00:00Z +timestamp: 2026-07-03T00:00:00Z status: active --- @@ -25,7 +25,7 @@ Ephemeral tracker; policy: [documentation-policy.md](../documentation-policy.md) | `area-focused` | Full smoke for the changed example(s) on a frozen tree, plus `pnpm test` / lint / format as applicable | | `full` | `pnpm build` + `pnpm test` + whole `pnpm test:e2e` across all examples before merge | -**Gates** (`open` | `closed`): `implementation_gate` (implementation complete + `unit-focused` green) · `review_gate` (independent review complete on frozen tree + `area-focused` green) · `commit_gate` (durable commit exists whose subject matches `commit_subject`). Code with `review_gate: open` is untrusted until review closes it. `commit_subject` is the planned Conventional Commit subject, set **before** `git commit` and staged in the same commit; never record SHAs. +**Gates** (`open` | `closed` | `deferred`): `implementation_gate` (implementation complete + `unit-focused` green) · `review_gate` (independent review complete on frozen tree + `area-focused` green) · `commit_gate` (durable commit exists whose subject matches `commit_subject`). `deferred` = optional work parked until a trigger (e.g. flakiness) re-opens it. Code with `review_gate: open` is untrusted until review closes it. `commit_subject` is the planned Conventional Commit subject, set **before** `git commit` and staged in the same commit; never record SHAs. # Smoke scenarios (MVP) @@ -47,13 +47,13 @@ Playwright manages each example's dev server; no hand-rolled preflight/postfligh scripts/e2e-run.mjs (pnpm test:e2e) → build:packages once (assert dist/) → start Auth emulator once (:9099, shared) - → for each example in [react, shadcn, nextjs, nextjs-ssr] (angular deferred — [Phase 2b](#phase-2b--angular-example-e2e-blocked)): + → for each example in [react, shadcn, nextjs, nextjs-ssr, angular-example, custom-auth-server]: playwright test (E2E_PROJECT=) → globalSetup: assert packages built + emulator reachable - → top-level webServer selected by E2E_PROJECT: start dev server on its port, wait for URL + → top-level webServer selected by E2E_PROJECT (UI examples only; custom-auth-server boots in spec) → run smoke spec(s) for the project - → webServer: stop dev server - → stop emulator (globalTeardown / runner) + → webServer: stop dev server (UI examples) + → stop emulator (globalTeardown / runner) ``` * **Serial:** `workers: 1`; `E2E_PROJECT` selects both the single Playwright project and the top-level `webServer`, so one dev server is up at a time. @@ -75,24 +75,19 @@ Auth emulator `:9099`; Emulator UI `:4000` (why custom-auth-server uses `:4001`) # Root scripts -| Script | Status | Purpose | -|--------|--------|---------| -| `test:e2e` | **implemented** | Serial runner over react, shadcn, nextjs, nextjs-ssr | -| `test:e2e:react` | **implemented** | react smoke only (`E2E_PROJECT=react`) | -| `test:e2e:shadcn` | **implemented** | shadcn only | -| `test:e2e:nextjs` | **implemented** | nextjs only | -| `test:e2e:nextjs-ssr` | **implemented** | nextjs-ssr only | -| `test:e2e:angular` | planned (2b) | angular-example — blocked on bootstrap (see Phase 2b) | -| `test:e2e:custom-auth-server` | planned (4.1) | custom-auth-server HTTP smoke only | +| Script | Purpose | +|--------|---------| +| `test:e2e` | Serial runner: five UI examples + `custom-auth-server` HTTP smoke | +| `test:e2e:react` | react only (`E2E_PROJECT=react`) | +| `test:e2e:shadcn` | shadcn only | +| `test:e2e:nextjs` | nextjs only | +| `test:e2e:nextjs-ssr` | nextjs-ssr only | +| `test:e2e:angular` | angular-example only | +| `test:e2e:custom-auth-server` | `custom-auth-server` HTTP smoke only | # CI coverage -| What | Status | -|------|--------| -| Local `pnpm test:e2e` | **4 UI examples** (react, shadcn, nextjs, nextjs-ssr) — green | -| [`.github/workflows/e2e.yaml`](../../.github/workflows/e2e.yaml) | **`pnpm test:e2e`** — same four examples in CI; actions pinned (checkout v7, setup-node v6, pnpm v6) | - -When angular e2e closes ([Phase 2b](#phase-2b--angular-example-e2e-blocked)), add it to the serial runner and confirm **five** examples green in CI ([2b.4](#phase-2b--angular-example-e2e-blocked)). +See [architecture/testing-strategy.md](../architecture/testing-strategy.md) and [`.github/workflows/e2e.yaml`](../../.github/workflows/e2e.yaml). Workflow runs `pnpm test:e2e` with broad path triggers — [AD-7](../decisions.md#ad-7-e2e-runs-in-a-separate-ci-workflow-with-broad-triggers). # Per-item iteration protocol @@ -127,35 +122,22 @@ Prove the whole model end-to-end on one example before generalizing ([review fin | 2.1 | shadcn project + meta (`vite --port 5174`; forgot-password → `/screens/forgot-password-screen`) | 1.5 | shadcn smoke green | | 2.2 | nextjs project + meta (`next dev -p 3000`; `trailingSlash`) | 1.5 | nextjs smoke green | | 2.3 | nextjs-ssr project + meta (`next dev -p 3001`; generous `webServer.timeout`) | 1.5 | nextjs-ssr smoke green | -| 2.5 | `scripts/e2e-run.mjs` serial runner + root `test:e2e` / `test:e2e:` scripts; **CI** runs `pnpm test:e2e` (four UI examples) with pinned modern actions | 2.1–2.3 | `pnpm test:e2e` green locally and in CI | +| 2.5 | `scripts/e2e-run.mjs` serial runner + root `test:e2e` / `test:e2e:` scripts; CI runs `pnpm test:e2e` | 2.1–2.3 | `pnpm test:e2e` covers all wired UI examples locally and in CI | -## Phase 2b — Angular-example e2e (blocked) +## Phase 2b — Angular-example e2e -Split from Phase 2 after e2e attempt failed; angular is **not** in `example-meta`, `e2e-run.mjs`, or CI until resolved. +Split from Phase 2 when bootstrap failed under workspace linking; resolved via peer-resolved injected workspace dependency and provider factory cleanup in `@firebase-oss/ui-angular`. | ID | Task | Depends | Done when | |----|------|---------|-----------| | 2b.1 | angular-example project + meta (reuse `run start -- --port 4200`, i.e. `clean && ng serve`) | 2.5 | meta + `test:e2e:angular` wired | -| 2b.2 | Fix client bootstrap so sign-in form renders in Playwright | 2b.1 | S1–S3 green locally | -| 2b.3 | Add angular-example to `e2e-run.mjs` + `pnpm test:e2e` | 2b.2 | full serial runner includes angular (five UI examples) | -| 2b.4 | Add angular-example to CI: confirm `pnpm test:e2e` (five UI examples) green on a PR | 2b.3 | CI serial smoke includes angular | - -### Angular e2e blocker (observed 2026-07-03) - -Playwright loads `http://localhost:4200/screens/sign-in-auth-screen-w-handlers` but the sign-in form never appears (`input[name="email"]` times out after 30s). Browser console: - -``` -NG0201: No provider found for `FirebaseApps`. Source: Environment Injector. - Path: firebaseui.store → FirebaseApps -``` - -`examples/angular/src/app/app.config.ts` registers `provideFirebaseApp(...)` and `provideFirebaseUI(...)`, but under `ng serve` the `FIREBASE_UI_STORE` factory still failed to resolve `FirebaseApps` in the client injector until the local workspace package was installed as an injected dependency. The package already declares `@angular/fire` as a peer; `dependenciesMeta["@firebase-oss/ui-angular"].injected = true` makes the Angular example consume a peer-resolved workspace copy instead of the source package's devDependency peer context. With the provider factory cleanup and injected workspace dependency, `pnpm test:e2e:angular` passes `3/3`. - -**Next steps:** reproduce with `E2E_PROJECT=angular-example pnpm --filter=e2e exec playwright test --project=angular-example`; fix provider/DI wiring in the example app and/or `@firebase-oss/ui-angular` before re-adding angular to the serial runner. +| 2b.2 | Fix client bootstrap so sign-in form renders in Playwright | 2b.1 | S1–S3 pass locally | +| 2b.3 | Add angular-example to `e2e-run.mjs` + `pnpm test:e2e` | 2b.2 | serial runner includes angular (five UI examples) | +| 2b.4 | Confirm `pnpm test:e2e` in CI includes angular | 2b.3 | CI serial smoke includes angular | ## Phase 3 — CI hardening -Depends on Phase 2 CI baseline ([2.5](#phase-2--generalize-vitenext-examples--serial-runner)); browser-cache work applies once the runner is stable in GHA. +Depends on Phase 2 CI baseline ([2.5](#phase-2--generalize-vitenext-examples--serial-runner)). | ID | Task | Depends | Done when | |----|------|---------|-----------| @@ -166,11 +148,11 @@ Depends on Phase 2 CI baseline ([2.5](#phase-2--generalize-vitenext-examples--se | ID | Task | Depends | Done when | |----|------|---------|-----------| -| 4.1 | Bind `custom-auth-server` to `:4001` for e2e; boot built server + assert HTTP response (non-browser); wire into runner + CI ([AD-6](../decisions.md#ad-6-custom-auth-server-binds-4001-for-e2e)) | 2.5, 3.1 | custom-auth-server smoke green locally and in CI | +| 4.1 | Bind `custom-auth-server` to `:4001` for e2e; boot built server + assert HTTP response (non-browser); wire into runner + CI ([AD-6](../decisions.md#ad-6-custom-auth-server-binds-4001-for-e2e)) | 2.5, 3.1 | custom-auth-server smoke in `pnpm test:e2e` locally and in CI | -## Phase 5 — Optional auth-behavior flags (only if flaky) +## Phase 5 — Optional auth-behavior flags (deferred) -Skip entirely unless Phase 1–2 prove flaky ([AD-5](../decisions.md#ad-5-auth-behavior-e2e-flags-are-optional-only-if-flaky)). +Deferred — no flakiness observed; `page.route` One Tap block is sufficient ([AD-5](../decisions.md#ad-5-auth-behavior-e2e-flags-are-optional-only-if-flaky)). Re-open only if smoke becomes unstable. | ID | Task | Depends | Done when | |----|------|---------|-----------| @@ -191,25 +173,14 @@ Update immediately after each step closes a gate. All items start `open` / `impl | Phase | Item | `implementation_gate` | `review_gate` | `commit_gate` | `commit_subject` | `next_work_type` | `validation_tier` | Notes | |-------|------|----------------------|---------------|---------------|------------------|------------------|-------------------|-------| -| 1 | 1.1 e2e package + config skeleton | closed | closed | closed | test(e2e): install/configure playwright, implement react e2e smoke test | — | — | Shipped in Phase 1 commit. | -| 1 | 1.2 globalSetup/teardown (build + emulator) | closed | closed | closed | test(e2e): install/configure playwright, implement react e2e smoke test | — | — | | -| 1 | 1.3 example-meta (react seed) | closed | closed | closed | test(e2e): install/configure playwright, implement react e2e smoke test | — | — | | -| 1 | 1.4 react webServer + One Tap route-block | closed | closed | closed | test(e2e): install/configure playwright, implement react e2e smoke test | — | — | top-level webServer + `E2E_PROJECT`. | -| 1 | 1.5 sign-in-handlers spec S1–S3 (react) | closed | closed | closed | test(e2e): install/configure playwright, implement react e2e smoke test | — | — | 3/3 passed locally. | -| 1 | 1.6 minimal CI proof (react) | closed | closed | closed | test(e2e): install/configure playwright, implement react e2e smoke test | — | — | Phase 1 react-only proof; expanded to 4-example `pnpm test:e2e` in Phase 2 commit. | -| 2 | 2.1 shadcn | closed | closed | closed | test: working e2e tests for shadcn, nextjs, and nextjs-ssr | — | — | 3/3 green. | -| 2 | 2.2 nextjs | closed | closed | closed | test: working e2e tests for shadcn, nextjs, and nextjs-ssr | — | — | 3/3; forgot-password handler added to example page. | -| 2 | 2.3 nextjs-ssr | closed | closed | closed | test: working e2e tests for shadcn, nextjs, and nextjs-ssr | — | — | 3/3 green. | -| 2 | 2.5 serial runner + root scripts | closed | closed | closed | test: working e2e tests for shadcn, nextjs, and nextjs-ssr | — | — | `pnpm test:e2e` local + CI (4 examples); modern pinned actions. | -| 2b | 2b.1 angular meta + script | closed | closed | closed | test(angular): e2e test for angular example | — | — | `test:e2e:angular` wired. | -| 2b | 2b.2 fix NG0201 bootstrap | closed | closed | closed | test(angular): e2e test for angular example | — | — | fixed via peer-resolved injected workspace dependency + provider factory cleanup. | -| 2b | 2b.3 wire angular into serial runner | closed | closed | closed | test(angular): e2e test for angular example | — | — | `pnpm test:e2e` = five UI examples, green locally. | -| 2b | 2b.4 add angular to CI + verify | closed | closed | closed | test(angular): e2e test for angular example | — | — | workflow already runs `pnpm test:e2e`; next PR run verifies in GHA. | -| 3 | 3.1 e2e workflow browser cache | closed | closed | closed | ci(e2e): harden workflow triggers and browser cache | — | — | browser cache keyed by resolved `@playwright/test` version; static review green. | -| 3 | 3.2 broad path triggers | closed | closed | closed | ci(e2e): harden workflow triggers and browser cache | — | — | AD-7 paths added for packages/examples/e2e/workflow/root manifests. | -| 4 | 4.1 custom-auth-server HTTP smoke (:4001) | open | open | open | — | implementation | area-focused | **Next pickup.** | -| 5 | 5.1 VITE_E2E skip oneTapSignIn | open | open | open | — | implementation | unit-focused | only if flaky | -| 5 | 5.2 NEXT_PUBLIC_E2E skip autoAnonymousLogin | open | open | open | — | implementation | unit-focused | only if flaky | +| 1 | 1.1–1.6 Phase 1 (react vertical slice) | closed | closed | closed | test(e2e): install/configure playwright, implement react e2e smoke test | — | — | | +| 2 | 2.1–2.3 shadcn, nextjs, nextjs-ssr | closed | closed | closed | test: working e2e tests for shadcn, nextjs, and nextjs-ssr | — | — | | +| 2 | 2.5 serial runner + root scripts | closed | closed | closed | test: working e2e tests for shadcn, nextjs, and nextjs-ssr | — | — | | +| 2b | 2b.1–2b.4 angular-example e2e | closed | closed | closed | test(angular): e2e test for angular example | — | — | | +| 3 | 3.1–3.2 CI hardening | closed | closed | closed | ci(e2e): harden workflow triggers and browser cache | — | — | | +| 4 | 4.1 custom-auth-server HTTP smoke (:4001) | closed | closed | closed | test(e2e): add custom-auth-server HTTP smoke on :4001 | — | — | | +| 5 | 5.1 VITE_E2E skip oneTapSignIn | deferred | deferred | deferred | — | — | — | optional; no flakiness observed | +| 5 | 5.2 NEXT_PUBLIC_E2E skip autoAnonymousLogin | deferred | deferred | deferred | — | — | — | optional; no flakiness observed | | 6 | 6.1 align example deps | open | open | open | — | implementation | area-focused | | | 6 | 6.2 dep-update playbook incl. test:e2e | open | open | open | — | implementation | full | | | 6 | 6.3 optional audit gate | open | open | open | — | implementation | unit-focused | team decision | @@ -223,9 +194,10 @@ e2e/ ├── global-setup.ts # build:packages assert + start/reuse emulator ├── global-teardown.ts # stop emulator if started here ├── fixtures/ -│ └── example-meta.ts # baseURL, sign-in path, trailing-slash, forgot-password target +│ └── example-meta.ts # per-example routing and server metadata (ui | http kind) └── tests/ - └── sign-in-handlers.spec.ts + ├── sign-in-handlers.spec.ts + └── custom-auth-server.spec.ts scripts/ └── e2e-run.mjs # serial per-example runner for `pnpm test:e2e` ``` @@ -234,6 +206,7 @@ scripts/ | Item | Reason | |------|--------| +| Auth-behavior E2E flags (`VITE_E2E`, `NEXT_PUBLIC_E2E`) | No flakiness observed; `page.route` block sufficient — [AD-5](../decisions.md#ad-5-auth-behavior-e2e-flags-are-optional-only-if-flaky) | | Production-artifact e2e (SSG export, SSR `next start`, Angular prod build, hosting rewrites) | Future design phase; MVP is dev-server only — [AD-8](../decisions.md#ad-8-production-artifact-e2e-deferred-future-phase) | | Parallel multi-example e2e | Unique ports make it possible later; serial sufficient for MVP — [AD-4](../decisions.md#ad-4-playwright-managed-dev-servers-serial-shared-emulator) | | Real emulator sign-in flows | Post-MVP user scenarios | @@ -250,7 +223,6 @@ Feasibility review (verified against code) that shaped this queue: * `custom-auth-server` default `:4000` collides with Emulator UI → `:4001`. * CI path-filtering must be broad (examples depend on `packages/**`, root manifests, lockfile, catalog). * #13: react-only vertical slice first, to validate the model cheaply. -* **CI lag (angular only):** four UI examples run in GHA; angular waits on Phase 2b. # Related diff --git a/e2e/fixtures/example-meta.ts b/e2e/fixtures/example-meta.ts index ee1a2fd2..d72dd66d 100644 --- a/e2e/fixtures/example-meta.ts +++ b/e2e/fixtures/example-meta.ts @@ -14,28 +14,49 @@ * limitations under the License. */ -/** Per-example routing and server metadata for Playwright smoke tests. */ -export type ExampleMeta = { +/** + * Whether an example is exercised through the browser (UI smoke S1–S3) or as a + * non-browser HTTP boot smoke (custom-auth-server). See AD-6. + */ +export type ExampleKind = "ui" | "http"; + +/** Shared server/startup metadata for every Playwright project. */ +type BaseExampleMeta = { /** Playwright project name (matches pnpm filter where applicable). */ name: string; - /** Dev server origin used as Playwright baseURL. */ + /** Server origin used as Playwright baseURL. */ baseURL: string; + /** Optional server command for Playwright webServer. */ + webServerCommand?: string; + /** Optional Playwright webServer startup timeout (ms). */ + webServerTimeoutMs?: number; + /** URL Playwright polls until the server is ready (defaults to baseURL). */ + webServerHealthURL?: string; +}; + +/** Browser example: rendered UI smoke over the sign-in-with-handlers flow. */ +export type UiExampleMeta = BaseExampleMeta & { + kind: "ui"; /** Deep-link path for the sign-in-with-handlers smoke entry screen. */ signInWithHandlersPath: string; /** Whether URLs for this example require a trailing slash (Next.js). */ trailingSlash: boolean; /** Forgot-password route from sign-in-with-handlers (S3 asserts UI, not this path). */ forgotPasswordPath: string; - /** Optional dev-server command for Playwright webServer. */ - webServerCommand?: string; - /** Optional Playwright webServer startup timeout (ms). */ - webServerTimeoutMs?: number; - /** URL Playwright polls until the dev server is ready (defaults to baseURL). */ - webServerHealthURL?: string; }; +/** Non-browser example: boot the server and assert an HTTP response. */ +export type HttpExampleMeta = BaseExampleMeta & { + kind: "http"; + /** Path probed by the HTTP smoke (relative to baseURL). */ + smokePath: string; +}; + +export type ExampleMeta = UiExampleMeta | HttpExampleMeta; + export const exampleMeta: Record = { react: { + kind: "ui", name: "react", baseURL: "http://localhost:5173", signInWithHandlersPath: "/screens/sign-in-auth-screen-w-handlers", @@ -44,6 +65,7 @@ export const exampleMeta: Record = { webServerCommand: "pnpm --filter=react exec vite --port 5173 --strictPort", }, shadcn: { + kind: "ui", name: "shadcn", baseURL: "http://localhost:5174", signInWithHandlersPath: "/screens/sign-in-auth-screen-w-handlers", @@ -52,6 +74,7 @@ export const exampleMeta: Record = { webServerCommand: "pnpm --filter=shadcn exec vite --port 5174 --strictPort", }, nextjs: { + kind: "ui", name: "nextjs", baseURL: "http://localhost:3000", signInWithHandlersPath: "/screens/sign-in-auth-screen-w-handlers", @@ -60,6 +83,7 @@ export const exampleMeta: Record = { webServerCommand: "pnpm --filter=nextjs exec next dev --turbopack -p 3000", }, "nextjs-ssr": { + kind: "ui", name: "nextjs-ssr", baseURL: "http://localhost:3001", signInWithHandlersPath: "/screens/sign-in-auth-screen-w-handlers", @@ -69,6 +93,7 @@ export const exampleMeta: Record = { webServerTimeoutMs: 180_000, }, "angular-example": { + kind: "ui", name: "angular-example", baseURL: "http://localhost:4200", signInWithHandlersPath: "/screens/sign-in-auth-screen-w-handlers", @@ -76,10 +101,22 @@ export const exampleMeta: Record = { forgotPasswordPath: "/screens/forgot-password-auth-screen", webServerCommand: "pnpm --filter=angular-example run start --port 4200", }, + // AD-6: non-browser HTTP smoke; lifecycle in custom-auth-server.spec.ts + "custom-auth-server": { + kind: "http", + name: "custom-auth-server", + baseURL: "http://localhost:4001", + smokePath: "/auth/snapchat/config", + }, }; +/** UI examples (browser smoke S1–S3), narrowed by discriminant. */ +export const uiExampleEntries: [string, UiExampleMeta][] = Object.entries(exampleMeta).filter( + (entry): entry is [string, UiExampleMeta] => entry[1].kind === "ui" +); + /** Returns the sign-in-with-handlers path respecting per-example trailing-slash rules. */ -export function signInWithHandlersUrl(meta: ExampleMeta): string { +export function signInWithHandlersUrl(meta: UiExampleMeta): string { const { signInWithHandlersPath, trailingSlash } = meta; if (trailingSlash) { diff --git a/e2e/playwright.config.ts b/e2e/playwright.config.ts index 4bc5698a..e3d3761b 100644 --- a/e2e/playwright.config.ts +++ b/e2e/playwright.config.ts @@ -39,23 +39,22 @@ function webServerForMeta(meta: ExampleMeta) { /** Playwright only reads top-level webServer (not per-project). Serial runner sets E2E_PROJECT. */ function resolveWebServerMeta() { - const fromEnv = process.env.E2E_PROJECT ? exampleMeta[process.env.E2E_PROJECT] : undefined; - - if (fromEnv?.webServerCommand) { - return fromEnv; + if (process.env.E2E_PROJECT) { + return exampleMeta[process.env.E2E_PROJECT]; } return Object.values(exampleMeta).find((meta) => meta.webServerCommand); } const webServerMeta = resolveWebServerMeta(); +const webServer = webServerMeta ? webServerForMeta(webServerMeta) : undefined; export default defineConfig({ testDir: "./tests", workers: 1, globalSetup: "./global-setup.ts", globalTeardown: "./global-teardown.ts", - ...(webServerMeta ? { webServer: webServerForMeta(webServerMeta) } : {}), + ...(webServer ? { webServer } : {}), projects: Object.values(exampleMeta).map((meta) => ({ name: meta.name, timeout: meta.name === "angular-example" ? 90_000 : undefined, diff --git a/e2e/tests/custom-auth-server.spec.ts b/e2e/tests/custom-auth-server.spec.ts new file mode 100644 index 00000000..ccb66af5 --- /dev/null +++ b/e2e/tests/custom-auth-server.spec.ts @@ -0,0 +1,116 @@ +/** + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { spawn, spawnSync, type ChildProcess } from "node:child_process"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { expect, request, test } from "@playwright/test"; +import { exampleMeta, type HttpExampleMeta } from "../fixtures/example-meta"; + +/** HTTP boot smoke for custom-auth-server — AD-6. */ +const PROJECT = "custom-auth-server"; +const PORT = "4001"; +const REPO_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); + +const meta = exampleMeta[PROJECT]; +if (meta.kind !== "http") { + throw new Error(`Expected ${PROJECT} to be an http example, got kind "${meta.kind}"`); +} +const httpMeta: HttpExampleMeta = meta; + +let server: ChildProcess | undefined; + +function stopServer(): void { + if (!server || server.pid === undefined || server.exitCode !== null) { + return; + } + // Spawned detached so teardown can signal the process group (AD-6). + try { + process.kill(-server.pid, "SIGTERM"); + } catch { + server.kill("SIGTERM"); + } +} + +async function waitForServer(url: string, timeoutMs = 60_000): Promise { + const context = await request.newContext(); + const deadline = Date.now() + timeoutMs; + + try { + while (Date.now() < deadline) { + if (server?.exitCode != null) { + throw new Error(`custom-auth-server exited early with code ${server.exitCode}`); + } + try { + // Any HTTP response means the server is listening (AD-6). + await context.get(url, { timeout: 2_000 }); + return; + } catch { + await new Promise((resolve) => setTimeout(resolve, 500)); + } + } + throw new Error(`custom-auth-server did not respond at ${url} within ${timeoutMs}ms`); + } finally { + await context.dispose(); + } +} + +test.describe(`custom-auth-server HTTP smoke (${PROJECT})`, () => { + test.beforeAll(async ({}, testInfo) => { + test.skip(testInfo.project.name !== PROJECT, `runs only on the ${PROJECT} project`); + test.setTimeout(120_000); + + const build = spawnSync("pnpm", ["--filter=custom-auth-server", "run", "build"], { + cwd: REPO_ROOT, + stdio: "inherit", + }); + expect(build.status, "custom-auth-server build failed").toBe(0); + + server = spawn("pnpm", ["--filter=custom-auth-server", "start"], { + cwd: REPO_ROOT, + stdio: "inherit", + detached: true, + env: { ...process.env, PORT }, + }); + + await waitForServer(`${httpMeta.baseURL}${httpMeta.smokePath}`); + }); + + test.afterAll(async () => { + stopServer(); + }); + + test("H1: server responds on the config route", async () => { + const context = await request.newContext({ baseURL: httpMeta.baseURL }); + + try { + const response = await context.get(httpMeta.smokePath); + + // 500 without SNAPCHAT_CLIENT_ID (default env); 200 when credentials are present. + expect([200, 500]).toContain(response.status()); + + const body = await response.json(); + + if (response.status() === 500) { + expect(body).toMatchObject({ error: "Server missing Snapchat client ID" }); + } else { + expect(body).toMatchObject({ clientId: expect.any(String) }); + } + } finally { + await context.dispose(); + } + }); +}); diff --git a/e2e/tests/sign-in-handlers.spec.ts b/e2e/tests/sign-in-handlers.spec.ts index 55d513c5..37c90614 100644 --- a/e2e/tests/sign-in-handlers.spec.ts +++ b/e2e/tests/sign-in-handlers.spec.ts @@ -15,7 +15,7 @@ */ import { enUs } from "@firebase-oss/ui-translations"; -import { exampleMeta, signInWithHandlersUrl } from "../fixtures/example-meta"; +import { signInWithHandlersUrl, uiExampleEntries } from "../fixtures/example-meta"; import { expect, test } from "../fixtures/test-harness"; const { labels, errors } = enUs.translations; @@ -24,7 +24,7 @@ async function waitForSignInForm(page: import("@playwright/test").Page): Promise await page.waitForSelector('input[name="email"]', { state: "visible", timeout: 30_000 }); } -for (const [projectName, meta] of Object.entries(exampleMeta)) { +for (const [projectName, meta] of uiExampleEntries) { test.describe(`sign-in with handlers smoke (${projectName})`, () => { test.beforeEach(({}, testInfo) => { test.skip(testInfo.project.name !== projectName, `runs only on the ${projectName} project`); diff --git a/package.json b/package.json index 4d86e254..1b25b527 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "test:e2e:nextjs": "E2E_PROJECT=nextjs pnpm --filter=e2e exec playwright test --project=nextjs", "test:e2e:nextjs-ssr": "E2E_PROJECT=nextjs-ssr pnpm --filter=e2e exec playwright test --project=nextjs-ssr", "test:e2e:angular": "E2E_PROJECT=angular-example pnpm --filter=e2e exec playwright test --project=angular-example", + "test:e2e:custom-auth-server": "E2E_PROJECT=custom-auth-server pnpm --filter=e2e exec playwright test --project=custom-auth-server", "test:watch": "pnpm --filter=@firebase-oss/ui-core run test:unit:watch & pnpm --filter=@firebase-oss/ui-react run test:unit:watch & pnpm --filter=@firebase-oss/ui-angular run test:watch", "version:bump:all": "pnpm --filter=@firebase-oss/ui-core run version:bump && pnpm --filter=@firebase-oss/ui-translations run version:bump && pnpm --filter=@firebase-oss/ui-react run version:bump && pnpm --filter=@firebase-oss/ui-styles run version:bump && pnpm --filter=@firebase-oss/ui-angular run version:bump", "publish:tags:all": "pnpm i && pnpm --filter=@firebase-oss/ui-core run publish:tags && pnpm --filter=@firebase-oss/ui-translations run publish:tags && pnpm --filter=@firebase-oss/ui-react run publish:tags && pnpm --filter=@firebase-oss/ui-styles run publish:tags && pnpm --filter=@firebase-oss/ui-angular run publish:tags", diff --git a/scripts/e2e-run.mjs b/scripts/e2e-run.mjs index c4bd0664..e4b6cfe1 100644 --- a/scripts/e2e-run.mjs +++ b/scripts/e2e-run.mjs @@ -20,9 +20,14 @@ import { fileURLToPath } from "node:url"; const REPO_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); -/** UI examples exercised serially by `pnpm test:e2e`. */ +/** UI examples exercised serially by `pnpm test:e2e` (browser smoke S1–S3). */ const E2E_UI_EXAMPLES = ["react", "shadcn", "nextjs", "nextjs-ssr", "angular-example"]; +/** Non-browser examples (HTTP boot smoke), run after the UI examples. AD-6. */ +const E2E_HTTP_EXAMPLES = ["custom-auth-server"]; + +const E2E_EXAMPLES = [...E2E_UI_EXAMPLES, ...E2E_HTTP_EXAMPLES]; + function ensurePackagesBuilt() { console.log("\n[e2e-run] build:packages (once)…\n"); const build = spawnSync("pnpm", ["build:packages"], { cwd: REPO_ROOT, stdio: "inherit" }); @@ -51,7 +56,7 @@ function runExample(example) { ensurePackagesBuilt(); -for (const example of E2E_UI_EXAMPLES) { +for (const example of E2E_EXAMPLES) { runExample(example); if (process.exitCode) { break; From 483d9968fa6dd657ec1eaacc542d2ee35cb25176 Mon Sep 17 00:00:00 2001 From: Mike Hardy Date: Fri, 3 Jul 2026 13:46:25 -0500 Subject: [PATCH 8/9] fix: consolidated fixes from deep review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CI (e2e.yaml): path filters for scripts/** and firebase.json; frozen lockfile; pnpm/action-setup before setup-node so store cache restores; Playwright browser cache without restore-keys; Auth emulator started by Playwright globalSetup; HTML/JSON/coverage artifacts uploaded every run. E2E runtime: webServer timeouts 240s (angular) and 180s (nextjs); global expect.timeout 30s; serial emulator via E2E_KEEP_EMULATOR and runner postflight; e2e package test runs full serial runner; S3 asserts per-example forgot-password route; custom-auth-server spawn node build/index.js directly (see package.json start) to avoid pnpm SIGTERM noise on teardown. Emulator config: e2e/firebase.emulator.json is auth-only — no global webframeworks experiment mutation during pnpm test:e2e. Coverage: V8 precise coverage summary uses weightedExecUnits (byte-range × count); shared reset in e2e/fixtures/coverage-artifacts.mjs; raw.jsonl compresses well in upload-artifact zip. Toolchain: firebase-tools version parsed from test.yaml at e2e globalSetup; root packageManager pnpm@10.34.4 (Phase 6 bump target). Lockfile: exclude @angular/fire optional firebase-tools peer via pnpm-workspace overrides; emulator tooling remains npx/global CLI; remove stray examples/nextjs-ssr/package-lock.json. Docs: LOCAL_DEVELOPMENT and dependency playbook document test:e2e; AD-4 top-level webServer; AD-7 broad path triggers; examples-inventory owns ports/commands; testing-strategy reflects globalSetup emulator; documentation-policy root links fixed; remove session log and redundant OKF index stubs per documentation-policy. CI: correct upload-artifact SHA (v4.6.1); pin pnpm 10.34.4 in e2e/lint/test workflows to match packageManager; e2e path triggers include test.yaml. E2E: S3 asserts rendered forgot-password UI only (no URL check per AD-3); globalSetup spawns firebase-tools via npx argv (shell: false); strict TS for firebase-tools version parse; V8 weightedExecUnits skips unexecuted ranges. --- .github/workflows/e2e.yaml | 77 +- .github/workflows/lint.yaml | 2 +- .github/workflows/test.yaml | 2 +- .gitignore | 2 + LOCAL_DEVELOPMENT.md | 35 +- .../architecture/examples-inventory.md | 30 +- developer-docs/architecture/index.md | 4 - .../architecture/testing-strategy.md | 2 +- developer-docs/decisions.md | 4 +- developer-docs/documentation-policy.md | 4 +- developer-docs/index.md | 24 +- developer-docs/log.md | 13 - .../dependency-update-verification.md | 14 +- developer-docs/playbooks/index.md | 3 - developer-docs/work-queues/index.md | 5 - .../work-queues/playwright-e2e-smoke.md | 199 +- e2e/firebase.emulator.json | 8 + e2e/fixtures/coverage-artifacts.mjs | 28 + e2e/fixtures/example-meta.ts | 2 + e2e/fixtures/test-harness.ts | 9 +- e2e/fixtures/v8-coverage.ts | 135 + e2e/global-setup.ts | 83 +- e2e/global-teardown.ts | 8 + e2e/package.json | 2 +- e2e/playwright.config.ts | 10 +- e2e/tests/custom-auth-server.spec.ts | 10 +- examples/nextjs-ssr/package-lock.json | 3341 ----------------- package.json | 1 + pnpm-lock.yaml | 2638 +------------ pnpm-workspace.yaml | 8 + scripts/e2e-run.mjs | 46 +- 31 files changed, 524 insertions(+), 6225 deletions(-) delete mode 100644 developer-docs/architecture/index.md delete mode 100644 developer-docs/log.md delete mode 100644 developer-docs/playbooks/index.md delete mode 100644 developer-docs/work-queues/index.md create mode 100644 e2e/firebase.emulator.json create mode 100644 e2e/fixtures/coverage-artifacts.mjs create mode 100644 e2e/fixtures/v8-coverage.ts delete mode 100644 examples/nextjs-ssr/package-lock.json diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index b152332f..e73f453e 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -5,22 +5,28 @@ on: branches: - main paths: - - 'packages/**' - - 'examples/**' - - 'e2e/**' - - '.github/workflows/e2e.yaml' - - 'package.json' - - 'pnpm-lock.yaml' - - 'pnpm-workspace.yaml' + - "packages/**" + - "examples/**" + - "e2e/**" + - "scripts/**" + - "firebase.json" + - ".github/workflows/e2e.yaml" + - ".github/workflows/test.yaml" + - "package.json" + - "pnpm-lock.yaml" + - "pnpm-workspace.yaml" pull_request: paths: - - 'packages/**' - - 'examples/**' - - 'e2e/**' - - '.github/workflows/e2e.yaml' - - 'package.json' - - 'pnpm-lock.yaml' - - 'pnpm-workspace.yaml' + - "packages/**" + - "examples/**" + - "e2e/**" + - "scripts/**" + - "firebase.json" + - ".github/workflows/e2e.yaml" + - ".github/workflows/test.yaml" + - "package.json" + - "pnpm-lock.yaml" + - "pnpm-workspace.yaml" permissions: contents: read @@ -32,19 +38,20 @@ jobs: - name: Checkout uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + - name: Setup pnpm + uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 + with: + version: 10.34.4 + - name: Setup node uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: 22.13.0 - check-latest: true - - - name: Setup pnpm - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 - with: - version: 10 + cache: pnpm + cache-dependency-path: pnpm-lock.yaml - name: Install dependencies - run: pnpm install + run: pnpm install --frozen-lockfile - name: Resolve Playwright version id: playwright-version @@ -57,27 +64,19 @@ jobs: with: path: ~/.cache/ms-playwright key: playwright-${{ runner.os }}-${{ steps.playwright-version.outputs.playwright-version }} - restore-keys: | - playwright-${{ runner.os }}- - - - name: Install Firebase CLI - run: npm i -g firebase-tools@14.15.2 - - - name: Enable webframeworks experiment - run: firebase experiments:enable webframeworks - - - name: Start Firebase emulator - run: | - firebase emulators:start --only auth --project demo-test & - sleep 15 - until wget -q --spider http://localhost:9099 2>/dev/null; do - echo "Waiting for emulator to start..." - sleep 2 - done - echo "Emulator is ready" - name: Install Playwright browsers run: pnpm --filter=e2e exec playwright install --with-deps chromium - name: Run UI e2e smoke run: pnpm test:e2e + + - name: Upload Playwright report and coverage + if: always() + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 + with: + name: e2e-artifacts + path: | + e2e/playwright-report/ + e2e/coverage-report/ + if-no-files-found: ignore diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 09a6ecd6..d6d9b602 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -23,7 +23,7 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v4 with: - version: 10 + version: 10.34.4 - name: Install addlicense run: | diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 597c6a9a..623dd67e 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -22,7 +22,7 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v4 with: - version: 10 + version: 10.34.4 - name: Install addlicense run: | diff --git a/.gitignore b/.gitignore index 6ad7c017..205ae75f 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,8 @@ coverage # Playwright e2e/test-results/ e2e/.state/ +e2e/playwright-report/ +e2e/coverage-report/ playwright-report/ # Firebase diff --git a/LOCAL_DEVELOPMENT.md b/LOCAL_DEVELOPMENT.md index 47ca0a89..72a6467b 100644 --- a/LOCAL_DEVELOPMENT.md +++ b/LOCAL_DEVELOPMENT.md @@ -116,6 +116,7 @@ if (import.meta.env.MODE === "development") { ``` Each framework detects dev mode differently: + - **Vite examples** (react, shadcn): `import.meta.env.MODE === "development"` - **Next.js examples**: `process.env.NODE_ENV === "development"` - **Angular**: `isDevMode()` from `@angular/core` @@ -124,29 +125,37 @@ All automatic when using the `dev` / `start` scripts. ## Which example app should I use? -| I'm working on... | Use this example | -|---|---| -| Core auth logic, sign-in flows, state | `react` | -| React components, hooks, UI | `react` | -| Angular components or DI | `angular` | -| Shadcn components or theming | `shadcn` | -| Server-side rendering, server components | `nextjs-ssr` | -| Static Next.js / client-only | `nextjs` | -| Translations or CSS | `react` (easiest) | -| Custom OAuth flows | `custom-auth-server` (see [CUSTOM_AUTHENTICATION.md](CUSTOM_AUTHENTICATION.md)) | +| I'm working on... | Use this example | +| ---------------------------------------- | ------------------------------------------------------------------------------- | +| Core auth logic, sign-in flows, state | `react` | +| React components, hooks, UI | `react` | +| Angular components or DI | `angular` | +| Shadcn components or theming | `shadcn` | +| Server-side rendering, server components | `nextjs-ssr` | +| Static Next.js / client-only | `nextjs` | +| Translations or CSS | `react` (easiest) | +| Custom OAuth flows | `custom-auth-server` (see [CUSTOM_AUTHENTICATION.md](CUSTOM_AUTHENTICATION.md)) | The `react` example is recommended as the default — it has the fastest reload cycle. ## Running tests -Start the emulator first, then: +Start the emulator first (or let `pnpm test:e2e` start it via Playwright `globalSetup` when it is not already running), then: ```bash -# All tests: +# Package unit tests: pnpm test + +# Example smoke (all six examples, serial): +pnpm test:e2e + +# Single example smoke: +pnpm test:e2e:react +pnpm test:e2e:angular +# … see root package.json for test:e2e: scripts ``` -Planned example browser smoke tests (`pnpm test:e2e`) are described in [developer-docs/work-queues/playwright-e2e-smoke.md](developer-docs/work-queues/playwright-e2e-smoke.md). +E2E scope and CI layers: [developer-docs/architecture/testing-strategy.md](developer-docs/architecture/testing-strategy.md). ```bash # Watch mode (core, react, angular): diff --git a/developer-docs/architecture/examples-inventory.md b/developer-docs/architecture/examples-inventory.md index 590df25b..90e90bb7 100644 --- a/developer-docs/architecture/examples-inventory.md +++ b/developer-docs/architecture/examples-inventory.md @@ -13,16 +13,16 @@ pnpm workspace members: `packages/*`, `examples/*` ([pnpm-workspace.yaml](../../ # Examples in scope for e2e smoke -| Example | pnpm filter | Dev command | Default port | E2E port | Emulator in dev | Smoke type | -|---------|-------------|-------------|--------------|----------|-----------------|------------| -| react | `react` | `vite` | 5173 | 5173 | `import.meta.env.MODE === "development"` → `:9099` | browser (S1–S3) | -| shadcn | `shadcn` | `vite` | 5173 | 5174 | same as react | browser (S1–S3) | -| nextjs (SSG) | `nextjs` | `next dev --turbopack` | 3000 | 3000 | `NODE_ENV === "development"` → `:9099` | browser (S1–S3) | -| nextjs-ssr | `nextjs-ssr` | `next dev` | 3000 | 3001 | same as nextjs | browser (S1–S3) | -| angular-example | `angular-example` | `run start` (`clean && ng serve`) | 4200 | 4200 | `isDevMode()` → `:9099` | browser (S1–S3) | -| custom-auth-server | `custom-auth-server` | `start` (built Express) | 4000 (`PORT`) | 4001 | n/a (uses `firebase-admin`) | HTTP boot + `fetch`/`curl` | +| Example | pnpm filter | Dev command | Default port | E2E port | Emulator in dev | Smoke type | +| ------------------ | -------------------- | --------------------------------------------- | ------------- | -------- | -------------------------------------------------- | -------------------------- | +| react | `react` | `vite` | 5173 | 5173 | `import.meta.env.MODE === "development"` → `:9099` | browser (S1–S3) | +| shadcn | `shadcn` | `vite` | 5173 | 5174 | same as react | browser (S1–S3) | +| nextjs (SSG) | `nextjs` | `next dev --turbopack` | 3000 | 3000 | `NODE_ENV === "development"` → `:9099` | browser (S1–S3) | +| nextjs-ssr | `nextjs-ssr` | `next dev` | 3000 | 3001 | same as nextjs | browser (S1–S3) | +| angular-example | `angular-example` | `run start --port 4200` (`clean && ng serve`) | 4200 | 4200 | `isDevMode()` → `:9099` | browser (S1–S3) | +| custom-auth-server | `custom-auth-server` | `start` (built Express) | 4000 (`PORT`) | 4001 | n/a (uses `firebase-admin`) | HTTP boot + `fetch`/`curl` | -**Port configurability:** not pinned in `vite.config.ts` / `next.config.ts`. All examples accept CLI/`PORT` overrides for e2e; Playwright's per-project `webServer` owns lifecycle. See [AD-4](../decisions.md#ad-4-playwright-managed-dev-servers-serial-shared-emulator). +**Port configurability:** not pinned in `vite.config.ts` / `next.config.ts`. All examples accept CLI/`PORT` overrides for e2e; Playwright's top-level `webServer` (selected by `E2E_PROJECT`) owns lifecycle. Exact e2e commands: `e2e/fixtures/example-meta.ts`. See [AD-4](../decisions.md#ad-4-playwright-managed-dev-servers-serial-shared-emulator). **custom-auth-server port:** default `:4000` collides with the Firebase Emulator UI (`:4000`), so e2e binds `:4001` — [AD-6](../decisions.md#ad-6-custom-auth-server-binds-4001-for-e2e). Its smoke is non-browser (boot + HTTP assert); it is not in root `pnpm build`. @@ -34,11 +34,11 @@ pnpm workspace members: `packages/*`, `examples/*` ([pnpm-workspace.yaml](../../ **Forgot-password route varies per example** (S3 asserts rendered UI, not a fixed path): -| Example | Forgot-password route from sign-in-with-handlers | -|---------|--------------------------------------------------| -| react, angular-example | `/screens/forgot-password-auth-screen` | -| shadcn | `/screens/forgot-password-screen` | -| nextjs, nextjs-ssr | `/screens/forgot-password-auth-screen` | +| Example | Forgot-password route from sign-in-with-handlers | +| ---------------------- | ------------------------------------------------ | +| react, angular-example | `/screens/forgot-password-auth-screen` | +| shadcn | `/screens/forgot-password-screen` | +| nextjs, nextjs-ssr | `/screens/forgot-password-auth-screen` | # Shared prerequisites @@ -50,7 +50,7 @@ Procedural steps: [LOCAL_DEVELOPMENT.md](../../LOCAL_DEVELOPMENT.md) (owner for # Smoke test entry path (all UI examples) -Deep-link: `/screens/sign-in-auth-screen-w-handlers` (with trailing slash for Next). Details: [work-queues/playwright-e2e-smoke.md](../work-queues/playwright-e2e-smoke.md). +Deep-link: `/screens/sign-in-auth-screen-w-handlers` (with trailing slash for Next). Smoke scope: [AD-3](../decisions.md#ad-3-playwright-example-smoke-tests-mvp-scope-dev-server). # Citations diff --git a/developer-docs/architecture/index.md b/developer-docs/architecture/index.md deleted file mode 100644 index d715cc7a..00000000 --- a/developer-docs/architecture/index.md +++ /dev/null @@ -1,4 +0,0 @@ -# Architecture - -* [examples-inventory.md](examples-inventory.md) — example apps, ports, dev commands, emulator wiring -* [testing-strategy.md](testing-strategy.md) — unit, build, and e2e verification layers diff --git a/developer-docs/architecture/testing-strategy.md b/developer-docs/architecture/testing-strategy.md index 189ff953..f823c702 100644 --- a/developer-docs/architecture/testing-strategy.md +++ b/developer-docs/architecture/testing-strategy.md @@ -20,7 +20,7 @@ timestamp: 2026-07-03T00:00:00Z [`.github/workflows/test.yaml`](../../.github/workflows/test.yaml): `pnpm build`, Auth emulator start, `pnpm test`. -[`.github/workflows/e2e.yaml`](../../.github/workflows/e2e.yaml): `pnpm test:e2e` (six examples), Auth emulator, Playwright Chromium — [AD-7](../decisions.md#ad-7-e2e-runs-in-a-separate-ci-workflow-with-broad-triggers). +[`.github/workflows/e2e.yaml`](../../.github/workflows/e2e.yaml): `pnpm test:e2e` (six examples), Playwright Chromium, HTML/coverage artifacts — [AD-7](../decisions.md#ad-7-e2e-runs-in-a-separate-ci-workflow-with-broad-triggers). Auth emulator is ensured by Playwright `globalSetup` (reuse-aware). # Gaps diff --git a/developer-docs/decisions.md b/developer-docs/decisions.md index a84ce498..4d21dbff 100644 --- a/developer-docs/decisions.md +++ b/developer-docs/decisions.md @@ -30,7 +30,7 @@ Example apps are verified with **Playwright smoke tests**, not full user-flow e2 ## AD-4: Playwright-managed dev servers, serial, shared emulator -Each example has a **unique e2e port** (react 5173, shadcn 5174, nextjs 3000, nextjs-ssr 3001, angular 4200, custom-auth-server 4001). Playwright's per-project **`webServer`** starts each example's dev server, waits for its URL, and stops it — replacing hand-rolled preflight/postflight/PID scripts. Execution is **serial** (`workers: 1`, one dev server up at a time selected via `E2E_PROJECT`) for resource predictability and clean logs; because ports are unique, parallelization is possible later but deferred ([Deferred](work-queues/playwright-e2e-smoke.md#deferred)). **`globalSetup`** builds packages (`build:packages`, asserting `dist/` exists — examples consume built `@firebase-oss/ui-*`) and ensures a single Auth emulator on `:9099` for the whole run; **`globalTeardown`** stops what it started. Angular reuses its package `start` semantics (`pnpm clean && ng serve`) rather than duplicating the `.angular/cache` clean. +Each example has a **unique e2e port** — see [examples-inventory.md](architecture/examples-inventory.md). Playwright's **top-level** `webServer` (one at a time, selected via `E2E_PROJECT`) starts each UI example's dev server, waits for its URL, and stops it — replacing hand-rolled preflight/postflight/PID scripts. Execution is **serial** (`workers: 1`) for resource predictability and clean logs; because ports are unique, parallelization is possible later but deferred ([Deferred](work-queues/playwright-e2e-smoke.md#deferred)). **`globalSetup`** builds packages (`build:packages`, asserting `dist/` exists — examples consume built `@firebase-oss/ui-*`), ensures a single Auth emulator on `:9099` for the whole run (reuse-aware), and starts it when not already running; **`globalTeardown`** stops what globalSetup started unless the serial runner is mid-suite (`E2E_KEEP_EMULATOR=1`). Angular reuses its package `start` semantics (`pnpm clean && ng serve`) rather than duplicating the `.angular/cache` clean. --- @@ -50,7 +50,7 @@ The Express `custom-auth-server` defaults to `:4000`, which collides with the ** ## AD-7: e2e runs in a separate CI workflow with broad triggers -Browser smoke runs in its **own workflow**, not folded into the unit `test.yaml`. Path-filtering is intentionally **broad**: examples depend on `packages/**` (built `@firebase-oss/ui-*`), the root `package.json`, `pnpm-lock.yaml`, and the `pnpm-workspace.yaml` catalog, so narrow `examples/**`-only filters would miss real regressions. Triggers therefore include packages, examples, root manifests, lockfile, workspace catalog, and the e2e/workflow files themselves. Playwright browser binaries are **cached keyed on the resolved Playwright version** so the cache restores the actual browser artifact; Chromium-only for MVP. +Browser smoke runs in its **own workflow**, not folded into the unit `test.yaml`. Path-filtering is intentionally **broad**: examples depend on `packages/**` (built `@firebase-oss/ui-*`), `scripts/**` (serial runner), `firebase.json` (emulator config), the root `package.json`, `pnpm-lock.yaml`, and the `pnpm-workspace.yaml` catalog, so narrow `examples/**`-only filters would miss real regressions. Triggers therefore include packages, examples, scripts, root manifests, lockfile, workspace catalog, emulator config, and the e2e/workflow files themselves. Playwright browser binaries are **cached keyed on the resolved Playwright version** so the cache restores the actual browser artifact; Chromium-only for MVP. --- diff --git a/developer-docs/documentation-policy.md b/developer-docs/documentation-policy.md index bf896c27..8bd82d00 100644 --- a/developer-docs/documentation-policy.md +++ b/developer-docs/documentation-policy.md @@ -33,8 +33,8 @@ Applies to all durable documentation in this repository: the [developer-docs](in | Hard-to-reverse decisions | `developer-docs/decisions.md` | | Step-by-step procedures | `developer-docs/playbooks/` or root guides (pick one owner) | | Implementation backlogs | `developer-docs/work-queues/` | -| Contributor onboarding | [CONTRIBUTING.md](../../CONTRIBUTING.md) | -| Local dev commands | [LOCAL_DEVELOPMENT.md](../../LOCAL_DEVELOPMENT.md) | +| Contributor onboarding | [CONTRIBUTING.md](../CONTRIBUTING.md) | +| Local dev commands | [LOCAL_DEVELOPMENT.md](../LOCAL_DEVELOPMENT.md) | | Agent ephemeral output | `.agents/reports/` (gitignored) | # Citations diff --git a/developer-docs/index.md b/developer-docs/index.md index 4aa85811..0711291c 100644 --- a/developer-docs/index.md +++ b/developer-docs/index.md @@ -1,5 +1,10 @@ --- +type: Index +title: developer-docs +description: OKF knowledge bundle entry point for firebaseui-web. +tags: [okf, documentation] okf_version: "0.1" +timestamp: 2026-07-03T00:00:00Z --- # developer-docs @@ -10,23 +15,26 @@ OKF knowledge bundle for firebaseui-web: architecture, decisions, playbooks, and # Start here -* [documentation-policy.md](documentation-policy.md) — rules for writing and maintaining docs in this repo -* [decisions.md](decisions.md) — architecture decision log (`AD-` entries) +- [documentation-policy.md](documentation-policy.md) — rules for writing and maintaining docs in this repo +- [decisions.md](decisions.md) — architecture decision log (`AD-` entries) # Architecture -* [architecture/](architecture/) — monorepo layout, examples inventory, testing strategy +- [architecture/examples-inventory.md](architecture/examples-inventory.md) — example apps, ports, dev commands, emulator wiring +- [architecture/testing-strategy.md](architecture/testing-strategy.md) — unit, build, and e2e verification layers # Playbooks -* [playbooks/](playbooks/) — repeatable procedures (dependency updates, local verification) +- [playbooks/dependency-update-verification.md](playbooks/dependency-update-verification.md) — verify monorepo after dependency bumps # Work queues -* [work-queues/](work-queues/) — phased implementation backlogs (may contain ephemeral task state) +Living implementation backlogs under [work-queues/](work-queues/). Task IDs and phases may change; do not treat as normative architecture — see [documentation-policy.md](documentation-policy.md). + +- [work-queues/playwright-e2e-smoke.md](work-queues/playwright-e2e-smoke.md) — Playwright example smoke tests and CI # Related docs (outside this bundle) -* [LOCAL_DEVELOPMENT.md](../LOCAL_DEVELOPMENT.md) — human onboarding: emulator, dev servers, package watch -* [GETTING_STARTED.md](../GETTING_STARTED.md) — library consumer getting started -* [CONTRIBUTING.md](../CONTRIBUTING.md) — contribution workflow and CI expectations +- [LOCAL_DEVELOPMENT.md](../LOCAL_DEVELOPMENT.md) — human onboarding: emulator, dev servers, package watch +- [GETTING_STARTED.md](../GETTING_STARTED.md) — library consumer getting started +- [CONTRIBUTING.md](../CONTRIBUTING.md) — contribution workflow and CI expectations diff --git a/developer-docs/log.md b/developer-docs/log.md deleted file mode 100644 index 4b91cbde..00000000 --- a/developer-docs/log.md +++ /dev/null @@ -1,13 +0,0 @@ -# developer-docs Update Log - -## 2026-07-02 - -* **Update**: Revised AD-3/AD-4/AD-5 and added AD-6/AD-7/AD-8 in [decisions.md](decisions.md) after the Playwright e2e feasibility review (Playwright `webServer`/`globalSetup` orchestration; `custom-auth-server` on `:4001`; separate broadly-triggered e2e CI workflow; dev-server-only MVP with production-artifact validation deferred). -* **Update**: Rewrote [work-queues/playwright-e2e-smoke.md](work-queues/playwright-e2e-smoke.md) — renumbered phases (react vertical slice first), added an orchestrator-processable gate tracker using neutral OKF work-queue field conventions, and folded in all review findings. -* **Update**: Refreshed [architecture/examples-inventory.md](architecture/examples-inventory.md) (custom-auth-server in scope, forgot-password route divergence, optional auth flags), [architecture/testing-strategy.md](architecture/testing-strategy.md), and [playbooks/dependency-update-verification.md](playbooks/dependency-update-verification.md). - -## 2026-07-01 - -* **Creation**: Initialized OKF bundle at `/developer-docs/` with policy, decisions log, architecture references, playbooks, and Playwright e2e work queue. -* **Update**: Recorded AD-1 through AD-5 in [decisions.md](decisions.md). -* **Update**: Added `.agents/reports/` to repository `.gitignore`. diff --git a/developer-docs/playbooks/dependency-update-verification.md b/developer-docs/playbooks/dependency-update-verification.md index e5bc56f3..e0e35ac5 100644 --- a/developer-docs/playbooks/dependency-update-verification.md +++ b/developer-docs/playbooks/dependency-update-verification.md @@ -3,7 +3,7 @@ type: Playbook title: Dependency update verification description: Steps to validate firebaseui-web after updating dependencies to current stable. tags: [dependencies, security, e2e] -timestamp: 2026-07-01T00:00:00Z +timestamp: 2026-07-03T00:00:00Z --- # When to use @@ -17,16 +17,16 @@ After bumping dependencies in the monorepo root, `packages/*`, `examples/*`, or 3. `pnpm test` — package unit tests (emulator optional for skipped integration tests) 4. `pnpm lint:check` && `pnpm format:check` 5. `pnpm audit` — triage high/critical; example-path advisories called out in PR -6. `pnpm test:e2e` — serial example smoke across all examples incl. `custom-auth-server` HTTP boot (once Playwright queue is complete) +6. `pnpm test:e2e` — serial example smoke across all examples incl. `custom-auth-server` HTTP boot # CI parity -Match [`.github/workflows/test.yaml`](../../.github/workflows/test.yaml) plus future e2e job from [work-queues/playwright-e2e-smoke.md](../work-queues/playwright-e2e-smoke.md). +Match [`.github/workflows/test.yaml`](../../.github/workflows/test.yaml) and [`.github/workflows/e2e.yaml`](../../.github/workflows/e2e.yaml). # Owners -| Topic | Document | -|-------|----------| +| Topic | Document | +| -------------------------- | --------------------------------------------------------------------------- | | Example ports and commands | [architecture/examples-inventory.md](../architecture/examples-inventory.md) | -| E2E scope | [decisions.md](../decisions.md) (AD-3, AD-4) | -| Local emulator setup | [LOCAL_DEVELOPMENT.md](../../LOCAL_DEVELOPMENT.md) | +| E2E scope | [decisions.md](../decisions.md) (AD-3, AD-4) | +| Local emulator setup | [LOCAL_DEVELOPMENT.md](../../LOCAL_DEVELOPMENT.md) | diff --git a/developer-docs/playbooks/index.md b/developer-docs/playbooks/index.md deleted file mode 100644 index b01da9c5..00000000 --- a/developer-docs/playbooks/index.md +++ /dev/null @@ -1,3 +0,0 @@ -# Playbooks - -* [dependency-update-verification.md](dependency-update-verification.md) — verify monorepo after dependency bumps diff --git a/developer-docs/work-queues/index.md b/developer-docs/work-queues/index.md deleted file mode 100644 index cf978860..00000000 --- a/developer-docs/work-queues/index.md +++ /dev/null @@ -1,5 +0,0 @@ -# Work queues - -Living implementation backlogs. Task IDs and phases may change; do not treat as normative architecture — see [documentation-policy.md](../documentation-policy.md). - -* [playwright-e2e-smoke.md](playwright-e2e-smoke.md) — Playwright example smoke tests and CI diff --git a/developer-docs/work-queues/playwright-e2e-smoke.md b/developer-docs/work-queues/playwright-e2e-smoke.md index 656e0aed..2ec94add 100644 --- a/developer-docs/work-queues/playwright-e2e-smoke.md +++ b/developer-docs/work-queues/playwright-e2e-smoke.md @@ -19,11 +19,11 @@ Ephemeral tracker; policy: [documentation-policy.md](../documentation-policy.md) **Validation tiers** (`validation_tier`), mapped to this repo: -| Tier | Meaning here | -|------|--------------| +| Tier | Meaning here | +| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `unit-focused` | Fast local check while authoring: `pnpm build:packages`, the targeted example's spec (`pnpm test:e2e:`), `pnpm lint:check` on the diff | -| `area-focused` | Full smoke for the changed example(s) on a frozen tree, plus `pnpm test` / lint / format as applicable | -| `full` | `pnpm build` + `pnpm test` + whole `pnpm test:e2e` across all examples before merge | +| `area-focused` | Full smoke for the changed example(s) on a frozen tree, plus `pnpm test` / lint / format as applicable | +| `full` | `pnpm build` + `pnpm test` + whole `pnpm test:e2e` across all examples before merge | **Gates** (`open` | `closed` | `deferred`): `implementation_gate` (implementation complete + `unit-focused` green) · `review_gate` (independent review complete on frozen tree + `area-focused` green) · `commit_gate` (durable commit exists whose subject matches `commit_subject`). `deferred` = optional work parked until a trigger (e.g. flakiness) re-opens it. Code with `review_gate: open` is untrusted until review closes it. `commit_subject` is the planned Conventional Commit subject, set **before** `git commit` and staged in the same commit; never record SHAs. @@ -31,11 +31,11 @@ Ephemeral tracker; policy: [documentation-policy.md](../documentation-policy.md) Per UI example, one shared spec (parameterized per project). Assert on **rendered UI, not exact URLs** — the forgot-password route differs per example ([examples-inventory.md](../architecture/examples-inventory.md)); [AD-3](../decisions.md#ad-3-playwright-example-smoke-tests-mvp-scope-dev-server). -| Step | Action | Pass criterion | -|------|--------|----------------| -| S1 | `goto` sign-in-with-handlers path | Email + password fields and submit button visible | -| S2 | Click submit (empty) | Validation feedback (no successful auth required) | -| S3 | Click forgot-password control | Forgot-password screen renders (assert heading/email field, not a fixed path) | +| Step | Action | Pass criterion | +| ---- | --------------------------------- | ----------------------------------------------------------------------------- | +| S1 | `goto` sign-in-with-handlers path | Email + password fields and submit button visible | +| S2 | Click submit (empty) | Validation feedback (no successful auth required) | +| S3 | Click forgot-password control | Forgot-password screen renders (assert heading/email field, not a fixed path) | `custom-auth-server` is **not** a browser flow: boot the built Express server on `:4001` and assert an HTTP response ([AD-6](../decisions.md#ad-6-custom-auth-server-binds-4001-for-e2e)). @@ -48,42 +48,22 @@ scripts/e2e-run.mjs (pnpm test:e2e) → build:packages once (assert dist/) → start Auth emulator once (:9099, shared) → for each example in [react, shadcn, nextjs, nextjs-ssr, angular-example, custom-auth-server]: - playwright test (E2E_PROJECT=) - → globalSetup: assert packages built + emulator reachable + playwright test (E2E_PROJECT=, E2E_KEEP_EMULATOR=1) + → globalSetup: assert packages built + ensure Auth emulator on :9099 (start if needed) → top-level webServer selected by E2E_PROJECT (UI examples only; custom-auth-server boots in spec) → run smoke spec(s) for the project → webServer: stop dev server (UI examples) - → stop emulator (globalTeardown / runner) + → globalTeardown: keep emulator alive when E2E_KEEP_EMULATOR=1 + → stop emulator if globalSetup started it (e2e-run.mjs postflight) ``` -* **Serial:** `workers: 1`; `E2E_PROJECT` selects both the single Playwright project and the top-level `webServer`, so one dev server is up at a time. -* **Emulator:** started once by the runner (or first `globalSetup`, reuse-aware); shared `:9099`; stopped once. -* **Per-example debug:** `pnpm test:e2e:react` runs one project; `globalSetup` starts the emulator with reuse if not already running. +- **Serial:** `workers: 1`; `E2E_PROJECT` selects both the single Playwright project and the top-level `webServer`, so one dev server is up at a time. +- **Emulator:** `globalSetup` ensures `:9099` is reachable (starts via `npx firebase-tools` when not already running); serial runner sets `E2E_KEEP_EMULATOR=1` so teardown does not stop it between examples; `pnpm emulators` remains the first-class manual target ([LOCAL_DEVELOPMENT.md](../../LOCAL_DEVELOPMENT.md)). +- **Per-example debug:** `pnpm test:e2e:react` runs one project; `globalSetup` starts the emulator with reuse if not already running. -# Port map (e2e servers) +# Example ports, commands, and root scripts -| Example | Port | Dev server command (e2e) | -|---------|------|---------------------------| -| react | 5173 | `pnpm --filter=react exec vite --port 5173 --strictPort` | -| shadcn | 5174 | `pnpm --filter=shadcn exec vite --port 5174 --strictPort` | -| nextjs | 3000 | `pnpm --filter=nextjs exec next dev --turbopack -p 3000` | -| nextjs-ssr | 3001 | `pnpm --filter=nextjs-ssr exec next dev -p 3001` (generous `webServer.timeout`, no turbopack) | -| angular-example | 4200 | `pnpm --filter=angular-example run start -- --port 4200` (reuses `clean && ng serve`) | -| custom-auth-server | 4001 | `PORT=4001 pnpm --filter=custom-auth-server start` (HTTP smoke only) | - -Auth emulator `:9099`; Emulator UI `:4000` (why custom-auth-server uses `:4001`). Ports are unique, so parallel e2e is possible later — deferred ([AD-4](../decisions.md#ad-4-playwright-managed-dev-servers-serial-shared-emulator)). - -# Root scripts - -| Script | Purpose | -|--------|---------| -| `test:e2e` | Serial runner: five UI examples + `custom-auth-server` HTTP smoke | -| `test:e2e:react` | react only (`E2E_PROJECT=react`) | -| `test:e2e:shadcn` | shadcn only | -| `test:e2e:nextjs` | nextjs only | -| `test:e2e:nextjs-ssr` | nextjs-ssr only | -| `test:e2e:angular` | angular-example only | -| `test:e2e:custom-auth-server` | `custom-auth-server` HTTP smoke only | +Owner: [architecture/examples-inventory.md](../architecture/examples-inventory.md) (human reference) and `e2e/fixtures/example-meta.ts` (runtime). Root `package.json` defines `test:e2e` (serial runner) and `test:e2e:` debug entrypoints. # CI coverage @@ -93,12 +73,12 @@ See [architecture/testing-strategy.md](../architecture/testing-strategy.md) and Each item runs one serial loop; the queue records the outcome after each step. -| Step | Work type | Closes gate | -|------|-----------|-------------| -| 1 | `implementation` | `implementation_gate` (`unit-focused` green) | -| 2 | `independent-review` | `review_gate` (frozen tree, `area-focused` green; blocking findings → back to step 1) | -| 3 | `documentation` | — (only if durable docs/OKF changed) | -| 4 | `commit` | `commit_gate` (set `commit_subject`, stage queue with product change) | +| Step | Work type | Closes gate | +| ---- | -------------------- | ------------------------------------------------------------------------------------- | +| 1 | `implementation` | `implementation_gate` (`unit-focused` green) | +| 2 | `independent-review` | `review_gate` (frozen tree, `area-focused` green; blocking findings → back to step 1) | +| 3 | `documentation` | — (only if durable docs/OKF changed) | +| 4 | `commit` | `commit_gate` (set `commit_subject`, stage queue with product change) | # Work items @@ -106,84 +86,88 @@ Each item runs one serial loop; the queue records the outcome after each step. Prove the whole model end-to-end on one example before generalizing ([review finding #13](#review-notes)). -| ID | Task | Depends | Done when | -|----|------|---------|-----------| -| 1.1 | `e2e/` workspace package; `@playwright/test` pinned via pnpm catalog; skeleton `playwright.config.ts` | — | Package installs; empty config runs | -| 1.2 | `globalSetup`/`globalTeardown`: run `build:packages` and assert `dist/`; ensure/start shared Auth emulator on `:9099`; stop what it started | 1.1 | Setup fails fast with clear errors; emulator reused if already up | -| 1.3 | `e2e/fixtures/example-meta.ts`: seed react (baseURL, sign-in path, trailing-slash rule, forgot-password target) | 1.1 | Per-example path rules centralized | +| ID | Task | Depends | Done when | +| --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------- | +| 1.1 | `e2e/` workspace package; `@playwright/test` pinned via pnpm catalog; skeleton `playwright.config.ts` | — | Package installs; empty config runs | +| 1.2 | `globalSetup`/`globalTeardown`: run `build:packages` and assert `dist/`; ensure/start shared Auth emulator on `:9099`; stop what it started | 1.1 | Setup fails fast with clear errors; emulator reused if already up | +| 1.3 | `e2e/fixtures/example-meta.ts`: seed react (baseURL, sign-in path, trailing-slash rule, forgot-password target) | 1.1 | Per-example path rules centralized | | 1.4 | react project `webServer` (`vite --port 5173 --strictPort`); harness `page.route` block of `accounts.google.com` **with a comment explaining why** (One Tap external/flaky — [AD-5](../decisions.md#ad-5-auth-behavior-e2e-flags-are-optional-only-if-flaky)) | 1.2, 1.3 | react dev server managed by Playwright; One Tap script never loaded | -| 1.5 | `e2e/tests/sign-in-handlers.spec.ts` S1–S3, asserting rendered UI, parameterized per project | 1.4 | react smoke green locally | -| 1.6 | Minimal CI job proving react e2e runs green (browser install + emulator + `test:e2e:react`) | 1.5 | react smoke green in CI | +| 1.5 | `e2e/tests/sign-in-handlers.spec.ts` S1–S3, asserting rendered UI, parameterized per project | 1.4 | react smoke green locally | +| 1.6 | Minimal CI job proving react e2e runs green (browser install + emulator + `test:e2e:react`) | 1.5 | react smoke green in CI | ## Phase 2 — Generalize Vite/Next examples + serial runner -| ID | Task | Depends | Done when | -|----|------|---------|-----------| -| 2.1 | shadcn project + meta (`vite --port 5174`; forgot-password → `/screens/forgot-password-screen`) | 1.5 | shadcn smoke green | -| 2.2 | nextjs project + meta (`next dev -p 3000`; `trailingSlash`) | 1.5 | nextjs smoke green | -| 2.3 | nextjs-ssr project + meta (`next dev -p 3001`; generous `webServer.timeout`) | 1.5 | nextjs-ssr smoke green | +| ID | Task | Depends | Done when | +| --- | ------------------------------------------------------------------------------------------------------------- | ------- | -------------------------------------------------------------- | +| 2.1 | shadcn project + meta (`vite --port 5174`; forgot-password → `/screens/forgot-password-screen`) | 1.5 | shadcn smoke green | +| 2.2 | nextjs project + meta (`next dev -p 3000`; `trailingSlash`) | 1.5 | nextjs smoke green | +| 2.3 | nextjs-ssr project + meta (`next dev -p 3001`; generous `webServer.timeout`) | 1.5 | nextjs-ssr smoke green | | 2.5 | `scripts/e2e-run.mjs` serial runner + root `test:e2e` / `test:e2e:` scripts; CI runs `pnpm test:e2e` | 2.1–2.3 | `pnpm test:e2e` covers all wired UI examples locally and in CI | ## Phase 2b — Angular-example e2e Split from Phase 2 when bootstrap failed under workspace linking; resolved via peer-resolved injected workspace dependency and provider factory cleanup in `@firebase-oss/ui-angular`. -| ID | Task | Depends | Done when | -|----|------|---------|-----------| -| 2b.1 | angular-example project + meta (reuse `run start -- --port 4200`, i.e. `clean && ng serve`) | 2.5 | meta + `test:e2e:angular` wired | -| 2b.2 | Fix client bootstrap so sign-in form renders in Playwright | 2b.1 | S1–S3 pass locally | -| 2b.3 | Add angular-example to `e2e-run.mjs` + `pnpm test:e2e` | 2b.2 | serial runner includes angular (five UI examples) | -| 2b.4 | Confirm `pnpm test:e2e` in CI includes angular | 2b.3 | CI serial smoke includes angular | +| ID | Task | Depends | Done when | +| ---- | ------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------- | +| 2b.1 | angular-example project + meta (reuse `run start -- --port 4200`, i.e. `clean && ng serve`) | 2.5 | meta + `test:e2e:angular` wired | +| 2b.2 | Fix client bootstrap so sign-in form renders in Playwright | 2b.1 | S1–S3 pass locally | +| 2b.3 | Add angular-example to `e2e-run.mjs` + `pnpm test:e2e` | 2b.2 | serial runner includes angular (five UI examples) | +| 2b.4 | Confirm `pnpm test:e2e` in CI includes angular | 2b.3 | CI serial smoke includes angular | ## Phase 3 — CI hardening Depends on Phase 2 CI baseline ([2.5](#phase-2--generalize-vitenext-examples--serial-runner)). -| ID | Task | Depends | Done when | -|----|------|---------|-----------| -| 3.1 | E2e workflow hardening: `playwright install --with-deps chromium` with **browser cache keyed on resolved Playwright version**; confirm `pnpm test:e2e` green in CI | 2.5 | e2e green on PRs; browsers cached across runs | -| 3.2 | Broad path triggers: `packages/**`, `examples/**`, root `package.json`, `pnpm-lock.yaml`, `pnpm-workspace.yaml`, `e2e/**`, workflow file ([AD-7](../decisions.md#ad-7-e2e-runs-in-a-separate-ci-workflow-with-broad-triggers)) | 3.1 | Relevant PRs trigger e2e; shared-dependency changes not missed | +| ID | Task | Depends | Done when | +| --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- | -------------------------------------------------------------- | +| 3.1 | E2e workflow hardening: `playwright install --with-deps chromium` with **browser cache keyed on resolved Playwright version**; confirm `pnpm test:e2e` green in CI | 2.5 | e2e green on PRs; browsers cached across runs | +| 3.2 | Broad path triggers: `packages/**`, `examples/**`, root `package.json`, `pnpm-lock.yaml`, `pnpm-workspace.yaml`, `e2e/**`, workflow file ([AD-7](../decisions.md#ad-7-e2e-runs-in-a-separate-ci-workflow-with-broad-triggers)) | 3.1 | Relevant PRs trigger e2e; shared-dependency changes not missed | ## Phase 4 — custom-auth-server smoke -| ID | Task | Depends | Done when | -|----|------|---------|-----------| +| ID | Task | Depends | Done when | +| --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ------------------------------------------------------------- | | 4.1 | Bind `custom-auth-server` to `:4001` for e2e; boot built server + assert HTTP response (non-browser); wire into runner + CI ([AD-6](../decisions.md#ad-6-custom-auth-server-binds-4001-for-e2e)) | 2.5, 3.1 | custom-auth-server smoke in `pnpm test:e2e` locally and in CI | ## Phase 5 — Optional auth-behavior flags (deferred) Deferred — no flakiness observed; `page.route` One Tap block is sufficient ([AD-5](../decisions.md#ad-5-auth-behavior-e2e-flags-are-optional-only-if-flaky)). Re-open only if smoke becomes unstable. -| ID | Task | Depends | Done when | -|----|------|---------|-----------| -| 5.1 | react + shadcn: skip `oneTapSignIn` when `VITE_E2E=1` | 2.1 | Only if `page.route` block insufficient | -| 5.2 | nextjs + nextjs-ssr: skip `autoAnonymousLogin` when `NEXT_PUBLIC_E2E=1` | 2.3 | Only if anon sign-in destabilizes smoke | +| ID | Task | Depends | Done when | +| --- | ----------------------------------------------------------------------- | ------- | --------------------------------------- | +| 5.1 | react + shadcn: skip `oneTapSignIn` when `VITE_E2E=1` | 2.1 | Only if `page.route` block insufficient | +| 5.2 | nextjs + nextjs-ssr: skip `autoAnonymousLogin` when `NEXT_PUBLIC_E2E=1` | 2.3 | Only if anon sign-in destabilizes smoke | ## Phase 6 — Dependency hardening (after smoke green) -| ID | Task | Depends | Done when | -|----|------|---------|-----------| -| 6.1 | Align example deps to pnpm catalog / current stable | 3.1 | CVE audit improved | -| 6.2 | Run [dependency-update-verification.md](../playbooks/dependency-update-verification.md) including `test:e2e` | 6.1 | Smoke passes on dep PR | -| 6.3 | Optional `pnpm audit --audit-level=high` in CI | 6.2 | Team decision | +Includes **package/catalog deps and CI workflow deps** (Node version, GitHub Actions pins) in one bump pass — not package deps alone. + +| ID | Task | Depends | Done when | +| --- | ------------------------------------------------------------------------------------------------------------ | ------- | ---------------------- | +| 6.1 | Align catalog/example deps, root `packageManager`, **and** CI workflow toolchain (Node LTS, pinned actions in test/lint/e2e) to current stable | 3.1 | CVE audit improved; one Node version across workflows | +| 6.2 | Run [dependency-update-verification.md](../playbooks/dependency-update-verification.md) including `test:e2e` | 6.1 | Smoke passes on dep PR | +| 6.3 | Optional `pnpm audit --audit-level=high` in CI | 6.2 | Team decision | +| 6.4 | Instrumented e2e coverage: Istanbul-instrumented package/example builds, line-resolved NYC/LCOV report, CI artifact | 6.2 | Per-package line coverage from smoke; guides test gap analysis | # Gate tracker Update immediately after each step closes a gate. All items start `open` / `implementation`. -| Phase | Item | `implementation_gate` | `review_gate` | `commit_gate` | `commit_subject` | `next_work_type` | `validation_tier` | Notes | -|-------|------|----------------------|---------------|---------------|------------------|------------------|-------------------|-------| -| 1 | 1.1–1.6 Phase 1 (react vertical slice) | closed | closed | closed | test(e2e): install/configure playwright, implement react e2e smoke test | — | — | | -| 2 | 2.1–2.3 shadcn, nextjs, nextjs-ssr | closed | closed | closed | test: working e2e tests for shadcn, nextjs, and nextjs-ssr | — | — | | -| 2 | 2.5 serial runner + root scripts | closed | closed | closed | test: working e2e tests for shadcn, nextjs, and nextjs-ssr | — | — | | -| 2b | 2b.1–2b.4 angular-example e2e | closed | closed | closed | test(angular): e2e test for angular example | — | — | | -| 3 | 3.1–3.2 CI hardening | closed | closed | closed | ci(e2e): harden workflow triggers and browser cache | — | — | | -| 4 | 4.1 custom-auth-server HTTP smoke (:4001) | closed | closed | closed | test(e2e): add custom-auth-server HTTP smoke on :4001 | — | — | | -| 5 | 5.1 VITE_E2E skip oneTapSignIn | deferred | deferred | deferred | — | — | — | optional; no flakiness observed | -| 5 | 5.2 NEXT_PUBLIC_E2E skip autoAnonymousLogin | deferred | deferred | deferred | — | — | — | optional; no flakiness observed | -| 6 | 6.1 align example deps | open | open | open | — | implementation | area-focused | | -| 6 | 6.2 dep-update playbook incl. test:e2e | open | open | open | — | implementation | full | | -| 6 | 6.3 optional audit gate | open | open | open | — | implementation | unit-focused | team decision | +| Phase | Item | `implementation_gate` | `review_gate` | `commit_gate` | `commit_subject` | `next_work_type` | `validation_tier` | Notes | +| ----- | ------------------------------------------- | --------------------- | ------------- | ------------- | ----------------------------------------------------------------------- | ---------------- | ----------------- | ------------------------------- | +| 1 | 1.1–1.6 Phase 1 (react vertical slice) | closed | closed | closed | test(e2e): install/configure playwright, implement react e2e smoke test | — | — | | +| 2 | 2.1–2.3 shadcn, nextjs, nextjs-ssr | closed | closed | closed | test: working e2e tests for shadcn, nextjs, and nextjs-ssr | — | — | | +| 2 | 2.5 serial runner + root scripts | closed | closed | closed | test: working e2e tests for shadcn, nextjs, and nextjs-ssr | — | — | | +| 2b | 2b.1–2b.4 angular-example e2e | closed | closed | closed | test(angular): e2e test for angular example | — | — | | +| 3 | 3.1–3.2 CI hardening | closed | closed | closed | ci(e2e): harden workflow triggers and browser cache | — | — | | +| 4 | 4.1 custom-auth-server HTTP smoke (:4001) | closed | closed | closed | test(e2e): add custom-auth-server HTTP smoke on :4001 | — | — | | +| 5 | 5.1 VITE_E2E skip oneTapSignIn | deferred | deferred | deferred | — | — | — | optional; no flakiness observed | +| 5 | 5.2 NEXT_PUBLIC_E2E skip autoAnonymousLogin | deferred | deferred | deferred | — | — | — | optional; no flakiness observed | +| 6 | 6.1 align catalog + CI workflow deps | open | open | open | — | implementation | area-focused | Node/actions with package bump | +| 6 | 6.2 dep-update playbook incl. test:e2e | open | open | open | — | implementation | full | | +| 6 | 6.3 optional audit gate | open | open | open | — | implementation | unit-focused | team decision | +| 6 | 6.4 instrumented e2e line coverage | open | open | open | — | implementation | area-focused | Istanbul + LCOV artifact | # File layout (target) @@ -204,28 +188,29 @@ scripts/ # Deferred -| Item | Reason | -|------|--------| -| Auth-behavior E2E flags (`VITE_E2E`, `NEXT_PUBLIC_E2E`) | No flakiness observed; `page.route` block sufficient — [AD-5](../decisions.md#ad-5-auth-behavior-e2e-flags-are-optional-only-if-flaky) | -| Production-artifact e2e (SSG export, SSR `next start`, Angular prod build, hosting rewrites) | Future design phase; MVP is dev-server only — [AD-8](../decisions.md#ad-8-production-artifact-e2e-deferred-future-phase) | -| Parallel multi-example e2e | Unique ports make it possible later; serial sufficient for MVP — [AD-4](../decisions.md#ad-4-playwright-managed-dev-servers-serial-shared-emulator) | -| Real emulator sign-in flows | Post-MVP user scenarios | -| Multi-browser matrix | Chromium only for MVP | -| Angular-SSR smoke | Angular tested via CSR `ng serve`; SSR path deferred | +| Item | Reason | +| -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| Auth-behavior E2E flags (`VITE_E2E`, `NEXT_PUBLIC_E2E`) | No flakiness observed; `page.route` block sufficient — [AD-5](../decisions.md#ad-5-auth-behavior-e2e-flags-are-optional-only-if-flaky) | +| Istanbul line coverage from e2e smoke | Phase 6.4; interim V8 byte metrics in `e2e/coverage-report/` | +| Production-artifact e2e (SSG export, SSR `next start`, Angular prod build, hosting rewrites) | Future design phase; MVP is dev-server only — [AD-8](../decisions.md#ad-8-production-artifact-e2e-deferred-future-phase) | +| Parallel multi-example e2e | Unique ports make it possible later; serial sufficient for MVP — [AD-4](../decisions.md#ad-4-playwright-managed-dev-servers-serial-shared-emulator) | +| Real emulator sign-in flows | Post-MVP user scenarios | +| Multi-browser matrix | Chromium only for MVP | +| Angular-SSR smoke | Angular tested via CSR `ng serve`; SSR path deferred | # Review notes Feasibility review (verified against code) that shaped this queue: -* Deep-link `/screens/sign-in-auth-screen-w-handlers` exists in all five UI examples; forgot-password target differs (shadcn `/screens/forgot-password-screen` vs react/angular `/screens/forgot-password-auth-screen`) → S3 asserts rendered UI. -* `SignInAuthScreen` renders the form regardless of auth state → auth-behavior flags decoupled (Phase 5, optional). -* Playwright top-level `webServer` selected by `E2E_PROJECT` + `globalSetup` replace hand-rolled orchestration (biggest simplification). -* `custom-auth-server` default `:4000` collides with Emulator UI → `:4001`. -* CI path-filtering must be broad (examples depend on `packages/**`, root manifests, lockfile, catalog). -* #13: react-only vertical slice first, to validate the model cheaply. +- Deep-link `/screens/sign-in-auth-screen-w-handlers` exists in all five UI examples; forgot-password target differs (shadcn `/screens/forgot-password-screen` vs react/angular `/screens/forgot-password-auth-screen`) → S3 asserts rendered UI. +- `SignInAuthScreen` renders the form regardless of auth state → auth-behavior flags decoupled (Phase 5, optional). +- Playwright top-level `webServer` selected by `E2E_PROJECT` + `globalSetup` replace hand-rolled orchestration (biggest simplification). +- `custom-auth-server` default `:4000` collides with Emulator UI → `:4001`. +- CI path-filtering must be broad (examples depend on `packages/**`, root manifests, lockfile, catalog). +- #13: react-only vertical slice first, to validate the model cheaply. # Related -* [architecture/examples-inventory.md](../architecture/examples-inventory.md) -* [architecture/testing-strategy.md](../architecture/testing-strategy.md) -* [playbooks/dependency-update-verification.md](../playbooks/dependency-update-verification.md) +- [architecture/examples-inventory.md](../architecture/examples-inventory.md) +- [architecture/testing-strategy.md](../architecture/testing-strategy.md) +- [playbooks/dependency-update-verification.md](../playbooks/dependency-update-verification.md) diff --git a/e2e/firebase.emulator.json b/e2e/firebase.emulator.json new file mode 100644 index 00000000..0e082933 --- /dev/null +++ b/e2e/firebase.emulator.json @@ -0,0 +1,8 @@ +{ + "emulators": { + "auth": { + "port": 9099 + }, + "singleProjectMode": true + } +} diff --git a/e2e/fixtures/coverage-artifacts.mjs b/e2e/fixtures/coverage-artifacts.mjs new file mode 100644 index 00000000..4673b34c --- /dev/null +++ b/e2e/fixtures/coverage-artifacts.mjs @@ -0,0 +1,28 @@ +/** + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { existsSync, rmSync } from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const E2E_DIR = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); +export const COVERAGE_DIR = path.join(E2E_DIR, "coverage-report"); + +export function resetCoverageArtifacts() { + if (existsSync(COVERAGE_DIR)) { + rmSync(COVERAGE_DIR, { recursive: true, force: true }); + } +} diff --git a/e2e/fixtures/example-meta.ts b/e2e/fixtures/example-meta.ts index d72dd66d..736c69d5 100644 --- a/e2e/fixtures/example-meta.ts +++ b/e2e/fixtures/example-meta.ts @@ -81,6 +81,7 @@ export const exampleMeta: Record = { trailingSlash: true, forgotPasswordPath: "/screens/forgot-password-auth-screen", webServerCommand: "pnpm --filter=nextjs exec next dev --turbopack -p 3000", + webServerTimeoutMs: 180_000, }, "nextjs-ssr": { kind: "ui", @@ -100,6 +101,7 @@ export const exampleMeta: Record = { trailingSlash: false, forgotPasswordPath: "/screens/forgot-password-auth-screen", webServerCommand: "pnpm --filter=angular-example run start --port 4200", + webServerTimeoutMs: 240_000, }, // AD-6: non-browser HTTP smoke; lifecycle in custom-auth-server.spec.ts "custom-auth-server": { diff --git a/e2e/fixtures/test-harness.ts b/e2e/fixtures/test-harness.ts index 706b717a..2eef0d18 100644 --- a/e2e/fixtures/test-harness.ts +++ b/e2e/fixtures/test-harness.ts @@ -15,14 +15,21 @@ */ import { test as base, expect } from "@playwright/test"; +import { startV8Coverage, stopV8Coverage } from "./v8-coverage"; export const test = base.extend({ - page: async ({ page }, use) => { + page: async ({ page }, use, testInfo) => { // Block Google One Tap (accounts.google.com): external script is flaky in e2e and // unnecessary for sign-in form smoke tests (AD-5). Prefer route blocking over app flags. await page.route("**/*accounts.google.com/**", (route) => route.abort()); + const coverageSession = testInfo.project.name !== "custom-auth-server" ? await startV8Coverage(page) : null; + await use(page); + + if (coverageSession) { + await stopV8Coverage(coverageSession, testInfo.title, testInfo.project.name); + } }, }); diff --git a/e2e/fixtures/v8-coverage.ts b/e2e/fixtures/v8-coverage.ts new file mode 100644 index 00000000..224095b1 --- /dev/null +++ b/e2e/fixtures/v8-coverage.ts @@ -0,0 +1,135 @@ +/** + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs"; +import path from "node:path"; +import type { CDPSession, Page } from "@playwright/test"; +import { COVERAGE_DIR, resetCoverageArtifacts } from "./coverage-artifacts.mjs"; + +export { resetCoverageArtifacts }; + +const RAW_FILE = path.join(COVERAGE_DIR, "raw.jsonl"); +const SUMMARY_FILE = path.join(COVERAGE_DIR, "summary.json"); + +type CoverageEntry = { + label: string; + project: string; + urlCount: number; + /** Sum of (range byte length × execution count) across V8 scripts — not raw byte size. */ + weightedExecUnits: number; + timestamp: string; +}; + +export async function startV8Coverage(page: Page): Promise { + try { + const client = await page.context().newCDPSession(page); + await client.send("Profiler.enable"); + await client.send("Profiler.startPreciseCoverage", { callCount: true, detailed: true }); + return client; + } catch { + return null; + } +} + +type CoverageScript = { + url: string; + functions: Array<{ + ranges: Array<{ startOffset: number; endOffset: number; count: number }>; + }>; +}; + +function weightedExecUnits(scripts: CoverageScript[]): number { + return scripts.reduce( + (sum, script) => + sum + + script.functions.reduce( + (fnSum, fn) => + fnSum + + fn.ranges.reduce( + (rangeSum, range) => + range.count > 0 ? rangeSum + (range.endOffset - range.startOffset) * range.count : rangeSum, + 0 + ), + 0 + ), + 0 + ); +} + +export async function stopV8Coverage(client: CDPSession, label: string, project: string): Promise { + try { + const { result } = await client.send("Profiler.takePreciseCoverage"); + await client.send("Profiler.stopPreciseCoverage"); + await client.detach(); + + mkdirSync(COVERAGE_DIR, { recursive: true }); + const scripts = result as CoverageScript[]; + const urlCount = scripts.length; + const entry: CoverageEntry = { + label, + project, + urlCount, + weightedExecUnits: weightedExecUnits(scripts), + timestamp: new Date().toISOString(), + }; + // raw.jsonl is highly compressible (repetitive JSON); upload-artifact zips it. + appendFileSync(RAW_FILE, `${JSON.stringify({ entry, result })}\n`, "utf8"); + } catch { + // Coverage is best-effort proof-of-exercise, not a gate. + } +} + +/** Writes a run-level summary for artifact comparison across CI runs. */ +export function finalizeCoverageReport(): void { + if (!existsSync(RAW_FILE)) { + return; + } + + const lines = readFileSync(RAW_FILE, "utf8") + .split("\n") + .filter(Boolean) + .map((line) => JSON.parse(line) as { entry: CoverageEntry }); + + const byProject = new Map(); + + for (const { entry } of lines) { + const current = byProject.get(entry.project) ?? { tests: 0, urlCount: 0, weightedExecUnits: 0 }; + current.tests += 1; + current.urlCount += entry.urlCount; + current.weightedExecUnits += entry.weightedExecUnits; + byProject.set(entry.project, current); + } + + mkdirSync(COVERAGE_DIR, { recursive: true }); + writeFileSync( + SUMMARY_FILE, + JSON.stringify( + { + generatedAt: new Date().toISOString(), + note: "V8 precise coverage from browser smoke tests; weightedExecUnits compares exercised script volume across runs, not Istanbul line coverage of package sources.", + projects: Object.fromEntries(byProject), + totals: { + tests: lines.length, + urlCount: [...byProject.values()].reduce((sum, row) => sum + row.urlCount, 0), + weightedExecUnits: [...byProject.values()].reduce((sum, row) => sum + row.weightedExecUnits, 0), + }, + }, + null, + 2 + ), + "utf8" + ); +} diff --git a/e2e/global-setup.ts b/e2e/global-setup.ts index b21db0b9..0c211ceb 100644 --- a/e2e/global-setup.ts +++ b/e2e/global-setup.ts @@ -15,7 +15,7 @@ */ import { execSync, spawn, type ChildProcess } from "node:child_process"; -import { existsSync, mkdirSync, writeFileSync } from "node:fs"; +import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs"; import net from "node:net"; import path from "node:path"; import { fileURLToPath } from "node:url"; @@ -24,7 +24,11 @@ const E2E_DIR = path.dirname(fileURLToPath(import.meta.url)); const REPO_ROOT = path.resolve(E2E_DIR, ".."); const STATE_DIR = path.join(E2E_DIR, ".state"); const STATE_FILE = path.join(STATE_DIR, "emulator.json"); +/** Auth-only config — avoids root firebase.json framework hosting and global webframeworks experiment. */ +const EMULATOR_CONFIG = path.join(E2E_DIR, "firebase.emulator.json"); +const TEST_WORKFLOW = path.join(REPO_ROOT, ".github/workflows/test.yaml"); const AUTH_EMULATOR_URL = "http://127.0.0.1:9099"; +const EMULATOR_WAIT_MS = 240_000; /** Core library packages built by `build:packages`; examples import these artifacts. */ const REQUIRED_DIST_ARTIFACTS = [ @@ -40,6 +44,25 @@ type EmulatorState = { pid?: number; }; +/** DRY: firebase-tools version is owned by `.github/workflows/test.yaml` (Install Firebase CLI step). */ +function readFirebaseToolsVersion(): string { + const content = readFileSync(TEST_WORKFLOW, "utf8"); + const match = content.match(/firebase-tools@(\d+\.\d+\.\d+)/); + const version = match?.[1]; + if (!version) { + throw new Error(`Could not parse firebase-tools version from ${TEST_WORKFLOW}`); + } + return version; +} + +function readEmulatorState(): EmulatorState | null { + try { + return JSON.parse(readFileSync(STATE_FILE, "utf8")) as EmulatorState; + } catch { + return null; + } +} + async function isAuthEmulatorReachable(): Promise { return new Promise((resolve) => { const socket = net.connect({ port: 9099, host: "127.0.0.1" }); @@ -55,7 +78,7 @@ async function isAuthEmulatorReachable(): Promise { }); } -async function waitForAuthEmulator(timeoutMs = 120_000): Promise { +async function waitForAuthEmulator(timeoutMs = EMULATOR_WAIT_MS): Promise { const deadline = Date.now() + timeoutMs; while (Date.now() < deadline) { @@ -97,37 +120,37 @@ function writeEmulatorState(state: EmulatorState): void { writeFileSync(STATE_FILE, JSON.stringify(state, null, 2)); } -function ensureFirebaseToolsCached(): void { +function ensureFirebaseToolsCached(version: string): void { try { - execSync("npx --yes firebase-tools@14.15.2 --version", { + execSync(`npx --yes firebase-tools@${version} --version`, { cwd: REPO_ROOT, stdio: "pipe", }); } catch { - throw new Error("Failed to cache firebase-tools@14.15.2 via npx — Auth emulator cannot start"); + throw new Error(`Failed to cache firebase-tools@${version} via npx — Auth emulator cannot start`); } } -function enableWebframeworksExperiment(): void { - try { - execSync("npx --yes firebase-tools@14.15.2 experiments:enable webframeworks", { +function startAuthEmulator(version: string): ChildProcess { + const child = spawn( + "npx", + [ + "--yes", + `firebase-tools@${version}`, + "emulators:start", + "--config", + EMULATOR_CONFIG, + "--only", + "auth", + "--project", + "demo-test", + ], + { cwd: REPO_ROOT, - stdio: "pipe", - }); - } catch { - throw new Error( - "Failed to enable firebase webframeworks experiment — required because firebase.json includes framework hosting configs" - ); - } -} - -function startAuthEmulator(): ChildProcess { - const child = spawn("npx --yes firebase-tools@14.15.2 emulators:start --only auth --project demo-test", { - cwd: REPO_ROOT, - detached: true, - shell: true, - stdio: "ignore", - }); + detached: true, + stdio: "ignore", + } + ); if (child.pid === undefined) { throw new Error("Failed to start Auth emulator: spawn returned no PID"); @@ -145,13 +168,17 @@ export default async function globalSetup(): Promise { } if (await isAuthEmulatorReachable()) { - writeEmulatorState({ startedBySetup: false }); + const existing = readEmulatorState(); + writeEmulatorState({ + startedBySetup: existing?.startedBySetup ?? false, + pid: existing?.pid, + }); return; } - ensureFirebaseToolsCached(); - enableWebframeworksExperiment(); - const emulatorProcess = startAuthEmulator(); + const firebaseToolsVersion = readFirebaseToolsVersion(); + ensureFirebaseToolsCached(firebaseToolsVersion); + const emulatorProcess = startAuthEmulator(firebaseToolsVersion); try { await waitForAuthEmulator(); diff --git a/e2e/global-teardown.ts b/e2e/global-teardown.ts index a3e931b0..586323dc 100644 --- a/e2e/global-teardown.ts +++ b/e2e/global-teardown.ts @@ -17,6 +17,7 @@ import { readFileSync, rmSync } from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; +import { finalizeCoverageReport } from "./fixtures/v8-coverage"; const E2E_DIR = path.dirname(fileURLToPath(import.meta.url)); const STATE_FILE = path.join(E2E_DIR, ".state", "emulator.json"); @@ -35,6 +36,13 @@ function readEmulatorState(): EmulatorState | null { } export default async function globalTeardown(): Promise { + finalizeCoverageReport(); + + // Serial runner keeps the emulator alive between projects; it performs final stop. + if (process.env.E2E_KEEP_EMULATOR === "1") { + return; + } + const state = readEmulatorState(); if (state?.startedBySetup && state.pid !== undefined) { diff --git a/e2e/package.json b/e2e/package.json index 0de38612..4ad728b6 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -3,7 +3,7 @@ "private": true, "type": "module", "scripts": { - "test": "playwright test" + "test": "node ../scripts/e2e-run.mjs" }, "devDependencies": { "@firebase-oss/ui-translations": "workspace:*", diff --git a/e2e/playwright.config.ts b/e2e/playwright.config.ts index e3d3761b..3f43f3af 100644 --- a/e2e/playwright.config.ts +++ b/e2e/playwright.config.ts @@ -22,6 +22,9 @@ import { exampleMeta, type ExampleMeta } from "./fixtures/example-meta"; const REPO_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); const DEFAULT_WEB_SERVER_TIMEOUT_MS = 120_000; +// Dev-server cold starts and client-side hydration vary widely (Angular ng serve, Next turbopack, +// etc.); a generous expect timeout avoids post-navigation assertion flakes without per-project tuning. +const EXPECT_TIMEOUT_MS = 30_000; function webServerForMeta(meta: ExampleMeta) { if (!meta.webServerCommand) { @@ -54,11 +57,16 @@ export default defineConfig({ workers: 1, globalSetup: "./global-setup.ts", globalTeardown: "./global-teardown.ts", + reporter: [ + ["list"], + ["html", { outputFolder: "playwright-report", open: "never" }], + ["json", { outputFile: "playwright-report/results.json" }], + ], ...(webServer ? { webServer } : {}), projects: Object.values(exampleMeta).map((meta) => ({ name: meta.name, timeout: meta.name === "angular-example" ? 90_000 : undefined, - expect: meta.name === "angular-example" ? { timeout: 30_000 } : undefined, + expect: { timeout: EXPECT_TIMEOUT_MS }, use: { baseURL: meta.baseURL, actionTimeout: meta.name === "angular-example" ? 15_000 : undefined, diff --git a/e2e/tests/custom-auth-server.spec.ts b/e2e/tests/custom-auth-server.spec.ts index ccb66af5..e8d15bc7 100644 --- a/e2e/tests/custom-auth-server.spec.ts +++ b/e2e/tests/custom-auth-server.spec.ts @@ -23,7 +23,10 @@ import { exampleMeta, type HttpExampleMeta } from "../fixtures/example-meta"; /** HTTP boot smoke for custom-auth-server — AD-6. */ const PROJECT = "custom-auth-server"; const PORT = "4001"; -const REPO_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); +const REPO_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..", ".."); +const CUSTOM_AUTH_SERVER_DIR = path.join(REPO_ROOT, "examples", "custom-auth-server"); +/** Canonical start command: examples/custom-auth-server/package.json `"start": "node build/index.js"`. */ +const SERVER_ENTRY = path.join(CUSTOM_AUTH_SERVER_DIR, "build", "index.js"); const meta = exampleMeta[PROJECT]; if (meta.kind !== "http") { @@ -79,12 +82,13 @@ test.describe(`custom-auth-server HTTP smoke (${PROJECT})`, () => { }); expect(build.status, "custom-auth-server build failed").toBe(0); - server = spawn("pnpm", ["--filter=custom-auth-server", "start"], { - cwd: REPO_ROOT, + server = spawn(process.execPath, [SERVER_ENTRY], { + cwd: CUSTOM_AUTH_SERVER_DIR, stdio: "inherit", detached: true, env: { ...process.env, PORT }, }); + server.unref(); await waitForServer(`${httpMeta.baseURL}${httpMeta.smokePath}`); }); diff --git a/examples/nextjs-ssr/package-lock.json b/examples/nextjs-ssr/package-lock.json deleted file mode 100644 index ba54bbb7..00000000 --- a/examples/nextjs-ssr/package-lock.json +++ /dev/null @@ -1,3341 +0,0 @@ -{ - "name": "nextjs", - "version": "0.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "nextjs", - "version": "0.1.0", - "dependencies": { - "@invertase/firebaseui-core": "^0.0.1", - "@invertase/firebaseui-react": "^0.0.1", - "@invertase/firebaseui-styles": "^0.0.1", - "@invertase/firebaseui-translations": "^0.0.1", - "firebase": "^11.3.1", - "next": "15.1.7", - "react": "^19.0.0", - "react-dom": "^19.0.0", - "server-only": "^0.0.1" - }, - "devDependencies": { - "@tailwindcss/postcss": "^4.0.6", - "@types/node": "^20", - "@types/react": "^19", - "@types/react-dom": "^19", - "postcss": "^8.5.2", - "postcss-load-config": "^6.0.1", - "tailwindcss": "^4.0.6", - "typescript": "^5" - } - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.6.0.tgz", - "integrity": "sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@firebase/ai": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@firebase/ai/-/ai-1.4.1.tgz", - "integrity": "sha512-bcusQfA/tHjUjBTnMx6jdoPMpDl3r8K15Z+snHz9wq0Foox0F/V+kNLXucEOHoTL2hTc9l+onZCyBJs2QoIC3g==", - "dependencies": { - "@firebase/app-check-interop-types": "0.3.3", - "@firebase/component": "0.6.18", - "@firebase/logger": "0.4.4", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@firebase/app": "0.x", - "@firebase/app-types": "0.x" - } - }, - "node_modules/@firebase/analytics": { - "version": "0.10.17", - "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.17.tgz", - "integrity": "sha512-n5vfBbvzduMou/2cqsnKrIes4auaBjdhg8QNA2ZQZ59QgtO2QiwBaXQZQE4O4sgB0Ds1tvLgUUkY+pwzu6/xEg==", - "dependencies": { - "@firebase/component": "0.6.18", - "@firebase/installations": "0.6.18", - "@firebase/logger": "0.4.4", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/analytics-compat": { - "version": "0.2.23", - "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.23.tgz", - "integrity": "sha512-3AdO10RN18G5AzREPoFgYhW6vWXr3u+OYQv6pl3CX6Fky8QRk0AHurZlY3Q1xkXO0TDxIsdhO3y65HF7PBOJDw==", - "dependencies": { - "@firebase/analytics": "0.10.17", - "@firebase/analytics-types": "0.8.3", - "@firebase/component": "0.6.18", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/analytics-types": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.3.tgz", - "integrity": "sha512-VrIp/d8iq2g501qO46uGz3hjbDb8xzYMrbu8Tp0ovzIzrvJZ2fvmj649gTjge/b7cCCcjT0H37g1gVtlNhnkbg==" - }, - "node_modules/@firebase/app": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.13.2.tgz", - "integrity": "sha512-jwtMmJa1BXXDCiDx1vC6SFN/+HfYG53UkfJa6qeN5ogvOunzbFDO3wISZy5n9xgYFUrEP6M7e8EG++riHNTv9w==", - "dependencies": { - "@firebase/component": "0.6.18", - "@firebase/logger": "0.4.4", - "@firebase/util": "1.12.1", - "idb": "7.1.1", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@firebase/app-check": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.10.1.tgz", - "integrity": "sha512-MgNdlms9Qb0oSny87pwpjKush9qUwCJhfmTJHDfrcKo4neLGiSeVE4qJkzP7EQTIUFKp84pbTxobSAXkiuQVYQ==", - "dependencies": { - "@firebase/component": "0.6.18", - "@firebase/logger": "0.4.4", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/app-check-compat": { - "version": "0.3.26", - "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.26.tgz", - "integrity": "sha512-PkX+XJMLDea6nmnopzFKlr+s2LMQGqdyT2DHdbx1v1dPSqOol2YzgpgymmhC67vitXVpNvS3m/AiWQWWhhRRPQ==", - "dependencies": { - "@firebase/app-check": "0.10.1", - "@firebase/app-check-types": "0.5.3", - "@firebase/component": "0.6.18", - "@firebase/logger": "0.4.4", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/app-check-interop-types": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.3.tgz", - "integrity": "sha512-gAlxfPLT2j8bTI/qfe3ahl2I2YcBQ8cFIBdhAQA4I2f3TndcO+22YizyGYuttLHPQEpWkhmpFW60VCFEPg4g5A==" - }, - "node_modules/@firebase/app-check-types": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.3.tgz", - "integrity": "sha512-hyl5rKSj0QmwPdsAxrI5x1otDlByQ7bvNvVt8G/XPO2CSwE++rmSVf3VEhaeOR4J8ZFaF0Z0NDSmLejPweZ3ng==" - }, - "node_modules/@firebase/app-compat": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.4.2.tgz", - "integrity": "sha512-LssbyKHlwLeiV8GBATyOyjmHcMpX/tFjzRUCS1jnwGAew1VsBB4fJowyS5Ud5LdFbYpJeS+IQoC+RQxpK7eH3Q==", - "dependencies": { - "@firebase/app": "0.13.2", - "@firebase/component": "0.6.18", - "@firebase/logger": "0.4.4", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@firebase/app-types": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.3.tgz", - "integrity": "sha512-kRVpIl4vVGJ4baogMDINbyrIOtOxqhkZQg4jTq3l8Lw6WSk0xfpEYzezFu+Kl4ve4fbPl79dvwRtaFqAC/ucCw==" - }, - "node_modules/@firebase/auth": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.10.8.tgz", - "integrity": "sha512-GpuTz5ap8zumr/ocnPY57ZanX02COsXloY6Y/2LYPAuXYiaJRf6BAGDEdRq1BMjP93kqQnKNuKZUTMZbQ8MNYA==", - "dependencies": { - "@firebase/component": "0.6.18", - "@firebase/logger": "0.4.4", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@firebase/app": "0.x", - "@react-native-async-storage/async-storage": "^1.18.1" - }, - "peerDependenciesMeta": { - "@react-native-async-storage/async-storage": { - "optional": true - } - } - }, - "node_modules/@firebase/auth-compat": { - "version": "0.5.28", - "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.28.tgz", - "integrity": "sha512-HpMSo/cc6Y8IX7bkRIaPPqT//Jt83iWy5rmDWeThXQCAImstkdNo3giFLORJwrZw2ptiGkOij64EH1ztNJzc7Q==", - "dependencies": { - "@firebase/auth": "1.10.8", - "@firebase/auth-types": "0.13.0", - "@firebase/component": "0.6.18", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/auth-interop-types": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.4.tgz", - "integrity": "sha512-JPgcXKCuO+CWqGDnigBtvo09HeBs5u/Ktc2GaFj2m01hLarbxthLNm7Fk8iOP1aqAtXV+fnnGj7U28xmk7IwVA==" - }, - "node_modules/@firebase/auth-types": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.13.0.tgz", - "integrity": "sha512-S/PuIjni0AQRLF+l9ck0YpsMOdE8GO2KU6ubmBB7P+7TJUCQDa3R1dlgYm9UzGbbePMZsp0xzB93f2b/CgxMOg==", - "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "1.x" - } - }, - "node_modules/@firebase/component": { - "version": "0.6.18", - "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.18.tgz", - "integrity": "sha512-n28kPCkE2dL2U28fSxZJjzPPVpKsQminJ6NrzcKXAI0E/lYC8YhfwpyllScqVEvAI3J2QgJZWYgrX+1qGI+SQQ==", - "dependencies": { - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@firebase/data-connect": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/@firebase/data-connect/-/data-connect-0.3.10.tgz", - "integrity": "sha512-VMVk7zxIkgwlVQIWHOKFahmleIjiVFwFOjmakXPd/LDgaB/5vzwsB5DWIYo+3KhGxWpidQlR8geCIn39YflJIQ==", - "dependencies": { - "@firebase/auth-interop-types": "0.2.4", - "@firebase/component": "0.6.18", - "@firebase/logger": "0.4.4", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/database": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.20.tgz", - "integrity": "sha512-H9Rpj1pQ1yc9+4HQOotFGLxqAXwOzCHsRSRjcQFNOr8lhUt6LeYjf0NSRL04sc4X0dWe8DsCvYKxMYvFG/iOJw==", - "dependencies": { - "@firebase/app-check-interop-types": "0.3.3", - "@firebase/auth-interop-types": "0.2.4", - "@firebase/component": "0.6.18", - "@firebase/logger": "0.4.4", - "@firebase/util": "1.12.1", - "faye-websocket": "0.11.4", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@firebase/database-compat": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-2.0.11.tgz", - "integrity": "sha512-itEsHARSsYS95+udF/TtIzNeQ0Uhx4uIna0sk4E0wQJBUnLc/G1X6D7oRljoOuwwCezRLGvWBRyNrugv/esOEw==", - "dependencies": { - "@firebase/component": "0.6.18", - "@firebase/database": "1.0.20", - "@firebase/database-types": "1.0.15", - "@firebase/logger": "0.4.4", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@firebase/database-types": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.15.tgz", - "integrity": "sha512-XWHJ0VUJ0k2E9HDMlKxlgy/ZuTa9EvHCGLjaKSUvrQnwhgZuRU5N3yX6SZ+ftf2hTzZmfRkv+b3QRvGg40bKNw==", - "dependencies": { - "@firebase/app-types": "0.9.3", - "@firebase/util": "1.12.1" - } - }, - "node_modules/@firebase/firestore": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.8.0.tgz", - "integrity": "sha512-QSRk+Q1/CaabKyqn3C32KSFiOdZpSqI9rpLK5BHPcooElumOBooPFa6YkDdiT+/KhJtel36LdAacha9BptMj2A==", - "dependencies": { - "@firebase/component": "0.6.18", - "@firebase/logger": "0.4.4", - "@firebase/util": "1.12.1", - "@firebase/webchannel-wrapper": "1.0.3", - "@grpc/grpc-js": "~1.9.0", - "@grpc/proto-loader": "^0.7.8", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/firestore-compat": { - "version": "0.3.53", - "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.53.tgz", - "integrity": "sha512-qI3yZL8ljwAYWrTousWYbemay2YZa+udLWugjdjju2KODWtLG94DfO4NALJgPLv8CVGcDHNFXoyQexdRA0Cz8Q==", - "dependencies": { - "@firebase/component": "0.6.18", - "@firebase/firestore": "4.8.0", - "@firebase/firestore-types": "3.0.3", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/firestore-types": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-3.0.3.tgz", - "integrity": "sha512-hD2jGdiWRxB/eZWF89xcK9gF8wvENDJkzpVFb4aGkzfEaKxVRD1kjz1t1Wj8VZEp2LCB53Yx1zD8mrhQu87R6Q==", - "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "1.x" - } - }, - "node_modules/@firebase/functions": { - "version": "0.12.9", - "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.12.9.tgz", - "integrity": "sha512-FG95w6vjbUXN84Ehezc2SDjGmGq225UYbHrb/ptkRT7OTuCiQRErOQuyt1jI1tvcDekdNog+anIObihNFz79Lg==", - "dependencies": { - "@firebase/app-check-interop-types": "0.3.3", - "@firebase/auth-interop-types": "0.2.4", - "@firebase/component": "0.6.18", - "@firebase/messaging-interop-types": "0.2.3", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/functions-compat": { - "version": "0.3.26", - "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.26.tgz", - "integrity": "sha512-A798/6ff5LcG2LTWqaGazbFYnjBW8zc65YfID/en83ALmkhu2b0G8ykvQnLtakbV9ajrMYPn7Yc/XcYsZIUsjA==", - "dependencies": { - "@firebase/component": "0.6.18", - "@firebase/functions": "0.12.9", - "@firebase/functions-types": "0.6.3", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/functions-types": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.3.tgz", - "integrity": "sha512-EZoDKQLUHFKNx6VLipQwrSMh01A1SaL3Wg6Hpi//x6/fJ6Ee4hrAeswK99I5Ht8roiniKHw4iO0B1Oxj5I4plg==" - }, - "node_modules/@firebase/installations": { - "version": "0.6.18", - "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.18.tgz", - "integrity": "sha512-NQ86uGAcvO8nBRwVltRL9QQ4Reidc/3whdAasgeWCPIcrhOKDuNpAALa6eCVryLnK14ua2DqekCOX5uC9XbU/A==", - "dependencies": { - "@firebase/component": "0.6.18", - "@firebase/util": "1.12.1", - "idb": "7.1.1", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/installations-compat": { - "version": "0.2.18", - "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.18.tgz", - "integrity": "sha512-aLFohRpJO5kKBL/XYL4tN+GdwEB/Q6Vo9eZOM/6Kic7asSUgmSfGPpGUZO1OAaSRGwF4Lqnvi1f/f9VZnKzChw==", - "dependencies": { - "@firebase/component": "0.6.18", - "@firebase/installations": "0.6.18", - "@firebase/installations-types": "0.5.3", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/installations-types": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.3.tgz", - "integrity": "sha512-2FJI7gkLqIE0iYsNQ1P751lO3hER+Umykel+TkLwHj6plzWVxqvfclPUZhcKFVQObqloEBTmpi2Ozn7EkCABAA==", - "peerDependencies": { - "@firebase/app-types": "0.x" - } - }, - "node_modules/@firebase/logger": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.4.tgz", - "integrity": "sha512-mH0PEh1zoXGnaR8gD1DeGeNZtWFKbnz9hDO91dIml3iou1gpOnLqXQ2dJfB71dj6dpmUjcQ6phY3ZZJbjErr9g==", - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@firebase/messaging": { - "version": "0.12.22", - "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.22.tgz", - "integrity": "sha512-GJcrPLc+Hu7nk+XQ70Okt3M1u1eRr2ZvpMbzbc54oTPJZySHcX9ccZGVFcsZbSZ6o1uqumm8Oc7OFkD3Rn1/og==", - "dependencies": { - "@firebase/component": "0.6.18", - "@firebase/installations": "0.6.18", - "@firebase/messaging-interop-types": "0.2.3", - "@firebase/util": "1.12.1", - "idb": "7.1.1", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/messaging-compat": { - "version": "0.2.22", - "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.22.tgz", - "integrity": "sha512-5ZHtRnj6YO6f/QPa/KU6gryjmX4Kg33Kn4gRpNU6M1K47Gm8kcQwPkX7erRUYEH1mIWptfvjvXMHWoZaWjkU7A==", - "dependencies": { - "@firebase/component": "0.6.18", - "@firebase/messaging": "0.12.22", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/messaging-interop-types": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.3.tgz", - "integrity": "sha512-xfzFaJpzcmtDjycpDeCUj0Ge10ATFi/VHVIvEEjDNc3hodVBQADZ7BWQU7CuFpjSHE+eLuBI13z5F/9xOoGX8Q==" - }, - "node_modules/@firebase/performance": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.7.7.tgz", - "integrity": "sha512-JTlTQNZKAd4+Q5sodpw6CN+6NmwbY72av3Lb6wUKTsL7rb3cuBIhQSrslWbVz0SwK3x0ZNcqX24qtRbwKiv+6w==", - "dependencies": { - "@firebase/component": "0.6.18", - "@firebase/installations": "0.6.18", - "@firebase/logger": "0.4.4", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0", - "web-vitals": "^4.2.4" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/performance-compat": { - "version": "0.2.20", - "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.20.tgz", - "integrity": "sha512-XkFK5NmOKCBuqOKWeRgBUFZZGz9SzdTZp4OqeUg+5nyjapTiZ4XoiiUL8z7mB2q+63rPmBl7msv682J3rcDXIQ==", - "dependencies": { - "@firebase/component": "0.6.18", - "@firebase/logger": "0.4.4", - "@firebase/performance": "0.7.7", - "@firebase/performance-types": "0.2.3", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/performance-types": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.3.tgz", - "integrity": "sha512-IgkyTz6QZVPAq8GSkLYJvwSLr3LS9+V6vNPQr0x4YozZJiLF5jYixj0amDtATf1X0EtYHqoPO48a9ija8GocxQ==" - }, - "node_modules/@firebase/remote-config": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.6.5.tgz", - "integrity": "sha512-fU0c8HY0vrVHwC+zQ/fpXSqHyDMuuuglV94VF6Yonhz8Fg2J+KOowPGANM0SZkLvVOYpTeWp3ZmM+F6NjwWLnw==", - "dependencies": { - "@firebase/component": "0.6.18", - "@firebase/installations": "0.6.18", - "@firebase/logger": "0.4.4", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/remote-config-compat": { - "version": "0.2.18", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.18.tgz", - "integrity": "sha512-YiETpldhDy7zUrnS8e+3l7cNs0sL7+tVAxvVYU0lu7O+qLHbmdtAxmgY+wJqWdW2c9nDvBFec7QiF58pEUu0qQ==", - "dependencies": { - "@firebase/component": "0.6.18", - "@firebase/logger": "0.4.4", - "@firebase/remote-config": "0.6.5", - "@firebase/remote-config-types": "0.4.0", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/remote-config-types": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.4.0.tgz", - "integrity": "sha512-7p3mRE/ldCNYt8fmWMQ/MSGRmXYlJ15Rvs9Rk17t8p0WwZDbeK7eRmoI1tvCPaDzn9Oqh+yD6Lw+sGLsLg4kKg==" - }, - "node_modules/@firebase/storage": { - "version": "0.13.14", - "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.13.14.tgz", - "integrity": "sha512-xTq5ixxORzx+bfqCpsh+o3fxOsGoDjC1nO0Mq2+KsOcny3l7beyBhP/y1u5T6mgsFQwI1j6oAkbT5cWdDBx87g==", - "dependencies": { - "@firebase/component": "0.6.18", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/storage-compat": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.24.tgz", - "integrity": "sha512-XHn2tLniiP7BFKJaPZ0P8YQXKiVJX+bMyE2j2YWjYfaddqiJnROJYqSomwW6L3Y+gZAga35ONXUJQju6MB6SOQ==", - "dependencies": { - "@firebase/component": "0.6.18", - "@firebase/storage": "0.13.14", - "@firebase/storage-types": "0.8.3", - "@firebase/util": "1.12.1", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/storage-types": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.8.3.tgz", - "integrity": "sha512-+Muk7g9uwngTpd8xn9OdF/D48uiQ7I1Fae7ULsWPuKoCH3HU7bfFPhxtJYzyhjdniowhuDpQcfPmuNRAqZEfvg==", - "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "1.x" - } - }, - "node_modules/@firebase/util": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.12.1.tgz", - "integrity": "sha512-zGlBn/9Dnya5ta9bX/fgEoNC3Cp8s6h+uYPYaDieZsFOAdHP/ExzQ/eaDgxD3GOROdPkLKpvKY0iIzr9adle0w==", - "hasInstallScript": true, - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@firebase/webchannel-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.3.tgz", - "integrity": "sha512-2xCRM9q9FlzGZCdgDMJwc0gyUkWFtkosy7Xxr6sFgQwn+wMNIWd7xIvYNauU1r64B5L5rsGKy/n9TKJ0aAFeqQ==" - }, - "node_modules/@grpc/grpc-js": { - "version": "1.9.15", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.15.tgz", - "integrity": "sha512-nqE7Hc0AzI+euzUwDAy0aY5hCp10r734gMGRdU+qOPX0XSceI2ULrcXB5U2xSc5VkWwalCj4M7GzCAygZl2KoQ==", - "dependencies": { - "@grpc/proto-loader": "^0.7.8", - "@types/node": ">=12.12.47" - }, - "engines": { - "node": "^8.13.0 || >=10.10.0" - } - }, - "node_modules/@grpc/proto-loader": { - "version": "0.7.15", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.15.tgz", - "integrity": "sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==", - "dependencies": { - "lodash.camelcase": "^4.3.0", - "long": "^5.0.0", - "protobufjs": "^7.2.5", - "yargs": "^17.7.2" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", - "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.4" - } - }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", - "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.4" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", - "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", - "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", - "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", - "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", - "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", - "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", - "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", - "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", - "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.5" - } - }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", - "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.4" - } - }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", - "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.0.4" - } - }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", - "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.4" - } - }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", - "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" - } - }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", - "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.4" - } - }, - "node_modules/@img/sharp-wasm32": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", - "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", - "cpu": [ - "wasm32" - ], - "optional": true, - "dependencies": { - "@emnapi/runtime": "^1.2.0" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", - "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", - "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@invertase/firebaseui-core": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@invertase/firebaseui-core/-/firebaseui-core-0.0.1.tgz", - "integrity": "sha512-ZoXsh0uEo13dc+GL21+jL4rBu/euZheXcGbPFLXdCgPHKX9vKhf6GkGEKghpuCV9SmEs4q66ZECS81DYW3aLxw==", - "dependencies": { - "@invertase/firebaseui-translations": "0.0.1", - "nanostores": "^0.11.3", - "zod": "^3.24.1" - }, - "peerDependencies": { - "firebase": "^11" - } - }, - "node_modules/@invertase/firebaseui-react": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@invertase/firebaseui-react/-/firebaseui-react-0.0.1.tgz", - "integrity": "sha512-ioFiM2cxZxXDIl5VLIYkray1qajTKEHEN9A+od20s3Qwkzn4LbpLHdOeKm58yct2BJOmIkMxD/Kem2eOpsruag==", - "dependencies": { - "@nanostores/react": "^0.8.4", - "@tanstack/react-form": "^0.41.3", - "clsx": "^2.1.1", - "firebase": "^11.2.0", - "nanostores": "^0.11.3", - "react": "^19.0.0", - "react-dom": "^19.0.0", - "tailwind-merge": "^3.0.1", - "zod": "^3.24.1" - }, - "peerDependencies": { - "@invertase/firebaseui-core": "0.0.1", - "@invertase/firebaseui-styles": "0.0.1" - } - }, - "node_modules/@invertase/firebaseui-styles": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@invertase/firebaseui-styles/-/firebaseui-styles-0.0.1.tgz", - "integrity": "sha512-fgG4W1iN7VdhepxywWDMPqxZLIcD5P9xu2f24bcS2VUawjzg76aQekBWOVw5WsfsYKGiXW0NUyIXm+14WSZNgg==" - }, - "node_modules/@invertase/firebaseui-translations": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@invertase/firebaseui-translations/-/firebaseui-translations-0.0.1.tgz", - "integrity": "sha512-g6N0Ik8l5ydaMZ4vpW3Oa9/rUm6AdbfwG8oqMt985wulRUUfm2n8IQE1wcLNCQjXqySgZwtTMSvQ9aa1uOup1g==" - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nanostores/react": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/@nanostores/react/-/react-0.8.4.tgz", - "integrity": "sha512-EciHSzDXg7GmGODjegGG1VldPEinbAK+12/Uz5+MAdHmxf082Rl6eXqKFxAAu4pZAcr5dNTpv6wMfEe7XacjkQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "nanostores": "^0.9.0 || ^0.10.0 || ^0.11.0", - "react": ">=18.0.0" - } - }, - "node_modules/@next/env": { - "version": "15.1.7", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.1.7.tgz", - "integrity": "sha512-d9jnRrkuOH7Mhi+LHav2XW91HOgTAWHxjMPkXMGBc9B2b7614P7kjt8tAplRvJpbSt4nbO1lugcT/kAaWzjlLQ==" - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "15.1.7", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.1.7.tgz", - "integrity": "sha512-hPFwzPJDpA8FGj7IKV3Yf1web3oz2YsR8du4amKw8d+jAOHfYHYFpMkoF6vgSY4W6vB29RtZEklK9ayinGiCmQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "15.1.7", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.1.7.tgz", - "integrity": "sha512-2qoas+fO3OQKkU0PBUfwTiw/EYpN+kdAx62cePRyY1LqKtP09Vp5UcUntfZYajop5fDFTjSxCHfZVRxzi+9FYQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.1.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.1.7.tgz", - "integrity": "sha512-sKLLwDX709mPdzxMnRIXLIT9zaX2w0GUlkLYQnKGoXeWUhcvpCrK+yevcwCJPdTdxZEUA0mOXGLdPsGkudGdnA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.1.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.1.7.tgz", - "integrity": "sha512-zblK1OQbQWdC8fxdX4fpsHDw+VSpBPGEUX4PhSE9hkaWPrWoeIJn+baX53vbsbDRaDKd7bBNcXRovY1hEhFd7w==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.1.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.1.7.tgz", - "integrity": "sha512-GOzXutxuLvLHFDAPsMP2zDBMl1vfUHHpdNpFGhxu90jEzH6nNIgmtw/s1MDwpTOiM+MT5V8+I1hmVFeAUhkbgQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "15.1.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.1.7.tgz", - "integrity": "sha512-WrZ7jBhR7ATW1z5iEQ0ZJfE2twCNSXbpCSaAunF3BKcVeHFADSI/AW1y5Xt3DzTqPF1FzQlwQTewqetAABhZRQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.1.7", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.1.7.tgz", - "integrity": "sha512-LDnj1f3OVbou1BqvvXVqouJZKcwq++mV2F+oFHptToZtScIEnhNRJAhJzqAtTE2dB31qDYL45xJwrc+bLeKM2Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.1.7", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.1.7.tgz", - "integrity": "sha512-dC01f1quuf97viOfW05/K8XYv2iuBgAxJZl7mbCKEjMgdQl5JjAKJ0D2qMKZCgPWDeFbFT0Q0nYWwytEW0DWTQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "node_modules/@remix-run/node": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-2.17.1.tgz", - "integrity": "sha512-pHmHTuLE1Lwazulx3gjrHobgBCsa+Xiq8WUO0ruLeDfEw2DU0c0SNSiyNkugu3rIZautroBwRaOoy7CWJL9xhQ==", - "dependencies": { - "@remix-run/server-runtime": "2.17.1", - "@remix-run/web-fetch": "^4.4.2", - "@web3-storage/multipart-parser": "^1.0.0", - "cookie-signature": "^1.1.0", - "source-map-support": "^0.5.21", - "stream-slice": "^0.1.2", - "undici": "^6.21.2" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "typescript": "^5.1.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@remix-run/router": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.0.tgz", - "integrity": "sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@remix-run/server-runtime": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.17.1.tgz", - "integrity": "sha512-d1Vp9FxX4KafB111vP2E5C1fmWzPI+gHZ674L1drq+N8Bp9U6FBspi7GAZSU5K5Kxa4T6UF+aE1gK6pVi9R8sw==", - "dependencies": { - "@remix-run/router": "1.23.0", - "@types/cookie": "^0.6.0", - "@web3-storage/multipart-parser": "^1.0.0", - "cookie": "^0.7.2", - "set-cookie-parser": "^2.4.8", - "source-map": "^0.7.3", - "turbo-stream": "2.4.1" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "typescript": "^5.1.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@remix-run/web-blob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@remix-run/web-blob/-/web-blob-3.1.0.tgz", - "integrity": "sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==", - "dependencies": { - "@remix-run/web-stream": "^1.1.0", - "web-encoding": "1.1.5" - } - }, - "node_modules/@remix-run/web-fetch": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@remix-run/web-fetch/-/web-fetch-4.4.2.tgz", - "integrity": "sha512-jgKfzA713/4kAW/oZ4bC3MoLWyjModOVDjFPNseVqcJKSafgIscrYL9G50SurEYLswPuoU3HzSbO0jQCMYWHhA==", - "dependencies": { - "@remix-run/web-blob": "^3.1.0", - "@remix-run/web-file": "^3.1.0", - "@remix-run/web-form-data": "^3.1.0", - "@remix-run/web-stream": "^1.1.0", - "@web3-storage/multipart-parser": "^1.0.0", - "abort-controller": "^3.0.0", - "data-uri-to-buffer": "^3.0.1", - "mrmime": "^1.0.0" - }, - "engines": { - "node": "^10.17 || >=12.3" - } - }, - "node_modules/@remix-run/web-file": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@remix-run/web-file/-/web-file-3.1.0.tgz", - "integrity": "sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==", - "dependencies": { - "@remix-run/web-blob": "^3.1.0" - } - }, - "node_modules/@remix-run/web-form-data": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@remix-run/web-form-data/-/web-form-data-3.1.0.tgz", - "integrity": "sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==", - "dependencies": { - "web-encoding": "1.1.5" - } - }, - "node_modules/@remix-run/web-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@remix-run/web-stream/-/web-stream-1.1.0.tgz", - "integrity": "sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==", - "dependencies": { - "web-streams-polyfill": "^3.1.1" - } - }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" - }, - "node_modules/@swc/helpers": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", - "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@tailwindcss/node": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.16.tgz", - "integrity": "sha512-BX5iaSsloNuvKNHRN3k2RcCuTEgASTo77mofW0vmeHkfrDWaoFAFvNHpEgtu0eqyypcyiBkDWzSMxJhp3AUVcw==", - "dev": true, - "dependencies": { - "@jridgewell/remapping": "^2.3.4", - "enhanced-resolve": "^5.18.3", - "jiti": "^2.6.1", - "lightningcss": "1.30.2", - "magic-string": "^0.30.19", - "source-map-js": "^1.2.1", - "tailwindcss": "4.1.16" - } - }, - "node_modules/@tailwindcss/oxide": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.16.tgz", - "integrity": "sha512-2OSv52FRuhdlgyOQqgtQHuCgXnS8nFSYRp2tJ+4WZXKgTxqPy7SMSls8c3mPT5pkZ17SBToGM5LHEJBO7miEdg==", - "dev": true, - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.1.16", - "@tailwindcss/oxide-darwin-arm64": "4.1.16", - "@tailwindcss/oxide-darwin-x64": "4.1.16", - "@tailwindcss/oxide-freebsd-x64": "4.1.16", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.16", - "@tailwindcss/oxide-linux-arm64-gnu": "4.1.16", - "@tailwindcss/oxide-linux-arm64-musl": "4.1.16", - "@tailwindcss/oxide-linux-x64-gnu": "4.1.16", - "@tailwindcss/oxide-linux-x64-musl": "4.1.16", - "@tailwindcss/oxide-wasm32-wasi": "4.1.16", - "@tailwindcss/oxide-win32-arm64-msvc": "4.1.16", - "@tailwindcss/oxide-win32-x64-msvc": "4.1.16" - } - }, - "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.16.tgz", - "integrity": "sha512-8+ctzkjHgwDJ5caq9IqRSgsP70xhdhJvm+oueS/yhD5ixLhqTw9fSL1OurzMUhBwE5zK26FXLCz2f/RtkISqHA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.16.tgz", - "integrity": "sha512-C3oZy5042v2FOALBZtY0JTDnGNdS6w7DxL/odvSny17ORUnaRKhyTse8xYi3yKGyfnTUOdavRCdmc8QqJYwFKA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.16.tgz", - "integrity": "sha512-vjrl/1Ub9+JwU6BP0emgipGjowzYZMjbWCDqwA2Z4vCa+HBSpP4v6U2ddejcHsolsYxwL5r4bPNoamlV0xDdLg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.16.tgz", - "integrity": "sha512-TSMpPYpQLm+aR1wW5rKuUuEruc/oOX3C7H0BTnPDn7W/eMw8W+MRMpiypKMkXZfwH8wqPIRKppuZoedTtNj2tg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.16.tgz", - "integrity": "sha512-p0GGfRg/w0sdsFKBjMYvvKIiKy/LNWLWgV/plR4lUgrsxFAoQBFrXkZ4C0w8IOXfslB9vHK/JGASWD2IefIpvw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.16.tgz", - "integrity": "sha512-DoixyMmTNO19rwRPdqviTrG1rYzpxgyYJl8RgQvdAQUzxC1ToLRqtNJpU/ATURSKgIg6uerPw2feW0aS8SNr/w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.16.tgz", - "integrity": "sha512-H81UXMa9hJhWhaAUca6bU2wm5RRFpuHImrwXBUvPbYb+3jo32I9VIwpOX6hms0fPmA6f2pGVlybO6qU8pF4fzQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.16.tgz", - "integrity": "sha512-ZGHQxDtFC2/ruo7t99Qo2TTIvOERULPl5l0K1g0oK6b5PGqjYMga+FcY1wIUnrUxY56h28FxybtDEla+ICOyew==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.16.tgz", - "integrity": "sha512-Oi1tAaa0rcKf1Og9MzKeINZzMLPbhxvm7rno5/zuP1WYmpiG0bEHq4AcRUiG2165/WUzvxkW4XDYCscZWbTLZw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-wasm32-wasi": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.16.tgz", - "integrity": "sha512-B01u/b8LteGRwucIBmCQ07FVXLzImWESAIMcUU6nvFt/tYsQ6IHz8DmZ5KtvmwxD+iTYBtM1xwoGXswnlu9v0Q==", - "bundleDependencies": [ - "@napi-rs/wasm-runtime", - "@emnapi/core", - "@emnapi/runtime", - "@tybys/wasm-util", - "@emnapi/wasi-threads", - "tslib" - ], - "cpu": [ - "wasm32" - ], - "dev": true, - "optional": true, - "dependencies": { - "@emnapi/core": "^1.5.0", - "@emnapi/runtime": "^1.5.0", - "@emnapi/wasi-threads": "^1.1.0", - "@napi-rs/wasm-runtime": "^1.0.7", - "@tybys/wasm-util": "^0.10.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.16.tgz", - "integrity": "sha512-zX+Q8sSkGj6HKRTMJXuPvOcP8XfYON24zJBRPlszcH1Np7xuHXhWn8qfFjIujVzvH3BHU+16jBXwgpl20i+v9A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.16.tgz", - "integrity": "sha512-m5dDFJUEejbFqP+UXVstd4W/wnxA4F61q8SoL+mqTypId2T2ZpuxosNSgowiCnLp2+Z+rivdU0AqpfgiD7yCBg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/postcss": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.16.tgz", - "integrity": "sha512-Qn3SFGPXYQMKR/UtqS+dqvPrzEeBZHrFA92maT4zijCVggdsXnDBMsPFJo1eArX3J+O+Gi+8pV4PkqjLCNBk3A==", - "dev": true, - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "@tailwindcss/node": "4.1.16", - "@tailwindcss/oxide": "4.1.16", - "postcss": "^8.4.41", - "tailwindcss": "4.1.16" - } - }, - "node_modules/@tanstack/form-core": { - "version": "0.41.4", - "resolved": "https://registry.npmjs.org/@tanstack/form-core/-/form-core-0.41.4.tgz", - "integrity": "sha512-XZJtN7mWJmi3apsc2J+GpWbcsXbv0pWBkZKP47ZW1QD/2Tj1UWsM6JjcaAkzIlrBdaoEFYmrHToLKr/Ddk8BVg==", - "dependencies": { - "@tanstack/store": "^0.7.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } - }, - "node_modules/@tanstack/react-form": { - "version": "0.41.4", - "resolved": "https://registry.npmjs.org/@tanstack/react-form/-/react-form-0.41.4.tgz", - "integrity": "sha512-uIfIDZJNqR1dLW03TNByK/woyKd2jfXIrEBq6DPJbqupqyfYXTDo5TMd/7koTYLO4dgTM5wd+2v3uBX3M2bRaA==", - "dependencies": { - "@remix-run/node": "^2.15.0", - "@tanstack/form-core": "0.41.4", - "@tanstack/react-store": "^0.7.0", - "decode-formdata": "^0.8.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "peerDependencies": { - "@tanstack/start": "^1.43.13", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@tanstack/start": { - "optional": true - } - } - }, - "node_modules/@tanstack/react-store": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/@tanstack/react-store/-/react-store-0.7.7.tgz", - "integrity": "sha512-qqT0ufegFRDGSof9D/VqaZgjNgp4tRPHZIJq2+QIHkMUtHjaJ0lYrrXjeIUJvjnTbgPfSD1XgOMEt0lmANn6Zg==", - "dependencies": { - "@tanstack/store": "0.7.7", - "use-sync-external-store": "^1.5.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/@tanstack/store": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/@tanstack/store/-/store-0.7.7.tgz", - "integrity": "sha512-xa6pTan1bcaqYDS9BDpSiS63qa6EoDkPN9RsRaxHuDdVDNntzq3xNwR5YKTU/V3SkSyC9T4YVOPh2zRQN0nhIQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } - }, - "node_modules/@types/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" - }, - "node_modules/@types/node": { - "version": "20.19.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.23.tgz", - "integrity": "sha512-yIdlVVVHXpmqRhtyovZAcSy0MiPcYWGkoO4CGe/+jpP0hmNuihm4XhHbADpK++MsiLHP5MVlv+bcgdF99kSiFQ==", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/react": { - "version": "19.2.2", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.2.tgz", - "integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==", - "dev": true, - "dependencies": { - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "19.2.2", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.2.tgz", - "integrity": "sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==", - "dev": true, - "peerDependencies": { - "@types/react": "^19.2.0" - } - }, - "node_modules/@web3-storage/multipart-parser": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@web3-storage/multipart-parser/-/multipart-parser-1.0.0.tgz", - "integrity": "sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==" - }, - "node_modules/@zxing/text-encoding": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", - "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", - "optional": true - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001751", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz", - "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "optional": true, - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "optional": true, - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true - }, - "node_modules/data-uri-to-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", - "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/decode-formdata": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/decode-formdata/-/decode-formdata-0.8.0.tgz", - "integrity": "sha512-iUzDgnWsw5ToSkFY7VPFA5Gfph6ROoOxOB7Ybna4miUSzLZ4KaSJk6IAB2AdW6+C9vCVWhjjNA4gjT6wF3eZHQ==" - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "devOptional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/enhanced-resolve": { - "version": "5.18.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", - "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/firebase": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/firebase/-/firebase-11.10.0.tgz", - "integrity": "sha512-nKBXoDzF0DrXTBQJlZa+sbC5By99ysYU1D6PkMRYknm0nCW7rJly47q492Ht7Ndz5MeYSBuboKuhS1e6mFC03w==", - "dependencies": { - "@firebase/ai": "1.4.1", - "@firebase/analytics": "0.10.17", - "@firebase/analytics-compat": "0.2.23", - "@firebase/app": "0.13.2", - "@firebase/app-check": "0.10.1", - "@firebase/app-check-compat": "0.3.26", - "@firebase/app-compat": "0.4.2", - "@firebase/app-types": "0.9.3", - "@firebase/auth": "1.10.8", - "@firebase/auth-compat": "0.5.28", - "@firebase/data-connect": "0.3.10", - "@firebase/database": "1.0.20", - "@firebase/database-compat": "2.0.11", - "@firebase/firestore": "4.8.0", - "@firebase/firestore-compat": "0.3.53", - "@firebase/functions": "0.12.9", - "@firebase/functions-compat": "0.3.26", - "@firebase/installations": "0.6.18", - "@firebase/installations-compat": "0.2.18", - "@firebase/messaging": "0.12.22", - "@firebase/messaging-compat": "0.2.22", - "@firebase/performance": "0.7.7", - "@firebase/performance-compat": "0.2.20", - "@firebase/remote-config": "0.6.5", - "@firebase/remote-config-compat": "0.2.18", - "@firebase/storage": "0.13.14", - "@firebase/storage-compat": "0.3.24", - "@firebase/util": "1.12.1" - } - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", - "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==" - }, - "node_modules/idb": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", - "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", - "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", - "optional": true - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/jiti": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "dev": true, - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, - "node_modules/lightningcss": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", - "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", - "dev": true, - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-android-arm64": "1.30.2", - "lightningcss-darwin-arm64": "1.30.2", - "lightningcss-darwin-x64": "1.30.2", - "lightningcss-freebsd-x64": "1.30.2", - "lightningcss-linux-arm-gnueabihf": "1.30.2", - "lightningcss-linux-arm64-gnu": "1.30.2", - "lightningcss-linux-arm64-musl": "1.30.2", - "lightningcss-linux-x64-gnu": "1.30.2", - "lightningcss-linux-x64-musl": "1.30.2", - "lightningcss-win32-arm64-msvc": "1.30.2", - "lightningcss-win32-x64-msvc": "1.30.2" - } - }, - "node_modules/lightningcss-android-arm64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", - "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", - "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", - "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", - "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", - "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", - "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", - "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", - "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", - "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", - "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", - "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lilconfig": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", - "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" - }, - "node_modules/long": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", - "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==" - }, - "node_modules/magic-string": { - "version": "0.30.19", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", - "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", - "engines": { - "node": ">=10" - } - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/nanostores": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-0.11.4.tgz", - "integrity": "sha512-k1oiVNN4hDK8NcNERSZLQiMfRzEGtfnvZvdBvey3SQbgn8Dcrk0h1I6vpxApjb10PFUflZrgJ2WEZyJQ+5v7YQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "engines": { - "node": "^18.0.0 || >=20.0.0" - } - }, - "node_modules/next": { - "version": "15.1.7", - "resolved": "https://registry.npmjs.org/next/-/next-15.1.7.tgz", - "integrity": "sha512-GNeINPGS9c6OZKCvKypbL8GTsT5GhWPp4DM0fzkXJuXMilOO2EeFxuAY6JZbtk6XIl6Ws10ag3xRINDjSO5+wg==", - "dependencies": { - "@next/env": "15.1.7", - "@swc/counter": "0.1.3", - "@swc/helpers": "0.5.15", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001579", - "postcss": "8.4.31", - "styled-jsx": "5.1.6" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "15.1.7", - "@next/swc-darwin-x64": "15.1.7", - "@next/swc-linux-arm64-gnu": "15.1.7", - "@next/swc-linux-arm64-musl": "15.1.7", - "@next/swc-linux-x64-gnu": "15.1.7", - "@next/swc-linux-x64-musl": "15.1.7", - "@next/swc-win32-arm64-msvc": "15.1.7", - "@next/swc-win32-x64-msvc": "15.1.7", - "sharp": "^0.33.5" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "@playwright/test": "^1.41.2", - "babel-plugin-react-compiler": "*", - "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "@playwright/test": { - "optional": true - }, - "babel-plugin-react-compiler": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/next/node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" - }, - "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", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-load-config": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", - "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "lilconfig": "^3.1.1" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "jiti": ">=1.21.0", - "postcss": ">=8.0.9", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - }, - "postcss": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/protobufjs": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz", - "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/react": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", - "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", - "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", - "dependencies": { - "scheduler": "^0.27.0" - }, - "peerDependencies": { - "react": "^19.2.0" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/scheduler": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", - "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==" - }, - "node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "optional": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/server-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz", - "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==" - }, - "node_modules/set-cookie-parser": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", - "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==" - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/sharp": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", - "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.3", - "semver": "^7.6.3" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.33.5", - "@img/sharp-darwin-x64": "0.33.5", - "@img/sharp-libvips-darwin-arm64": "1.0.4", - "@img/sharp-libvips-darwin-x64": "1.0.4", - "@img/sharp-libvips-linux-arm": "1.0.5", - "@img/sharp-libvips-linux-arm64": "1.0.4", - "@img/sharp-libvips-linux-s390x": "1.0.4", - "@img/sharp-libvips-linux-x64": "1.0.4", - "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", - "@img/sharp-libvips-linuxmusl-x64": "1.0.4", - "@img/sharp-linux-arm": "0.33.5", - "@img/sharp-linux-arm64": "0.33.5", - "@img/sharp-linux-s390x": "0.33.5", - "@img/sharp-linux-x64": "0.33.5", - "@img/sharp-linuxmusl-arm64": "0.33.5", - "@img/sharp-linuxmusl-x64": "0.33.5", - "@img/sharp-wasm32": "0.33.5", - "@img/sharp-win32-ia32": "0.33.5", - "@img/sharp-win32-x64": "0.33.5" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", - "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", - "optional": true, - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/source-map": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", - "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", - "engines": { - "node": ">= 12" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stream-slice": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/stream-slice/-/stream-slice-0.1.2.tgz", - "integrity": "sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==" - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/styled-jsx": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", - "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", - "dependencies": { - "client-only": "0.0.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/tailwind-merge": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.3.1.tgz", - "integrity": "sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/dcastil" - } - }, - "node_modules/tailwindcss": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.16.tgz", - "integrity": "sha512-pONL5awpaQX4LN5eiv7moSiSPd/DLDzKVRJz8Q9PgzmAdd1R4307GQS2ZpfiN7ZmekdQrfhZZiSE5jkLR4WNaA==", - "dev": true - }, - "node_modules/tapable": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", - "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" - }, - "node_modules/turbo-stream": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.1.tgz", - "integrity": "sha512-v8kOJXpG3WoTN/+at8vK7erSzo6nW6CIaeOvNOkHQVDajfz1ZVeSxCbc6tOH4hrGZW7VUCV0TOXd8CPzYnYkrw==" - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "devOptional": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.22.0.tgz", - "integrity": "sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw==", - "engines": { - "node": ">=18.17" - } - }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" - }, - "node_modules/use-sync-external-store": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", - "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/web-encoding": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", - "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", - "dependencies": { - "util": "^0.12.3" - }, - "optionalDependencies": { - "@zxing/text-encoding": "0.9.0" - } - }, - "node_modules/web-streams-polyfill": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/web-vitals": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-4.2.4.tgz", - "integrity": "sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==" - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - } - } -} diff --git a/package.json b/package.json index 1b25b527..570ec467 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "name": "@firebase-oss/ui-root", "private": true, "type": "module", + "packageManager": "pnpm@10.34.4", "scripts": { "emulators": "firebase emulators:start --only auth --project demo-test", "build": "pnpm --filter=@firebase-oss/ui-translations run build && pnpm --filter=@firebase-oss/ui-styles run build && pnpm --filter=@firebase-oss/ui-core run build && pnpm --filter=@firebase-oss/ui-react run build && pnpm --filter=@firebase-oss/ui-angular run build && pnpm --filter=@firebase-oss/ui-shadcn run build && pnpm --filter react run build && pnpm --filter nextjs run build && pnpm --filter nextjs-ssr run build && pnpm --filter angular-example run build && pnpm --filter shadcn run build", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 74598483..55353b04 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -145,6 +145,9 @@ catalogs: specifier: ^0.15.0 version: 0.15.1 +overrides: + firebase-tools: '-' + importers: .: @@ -205,7 +208,7 @@ importers: version: 20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/fire': specifier: ^20.0.1 - version: 20.0.1(c610c615b258e4a2e05e35c7c07ea289) + version: 20.0.1(224a9fe38983fbc914b248dcbaf6f32b) '@angular/forms': specifier: 'catalog:' version: 20.3.21(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.21(@angular/animations@20.3.21(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) @@ -226,7 +229,7 @@ importers: version: 20.3.26(cf5d6e644c41e8ccd7f957989714a299) '@firebase-oss/ui-angular': specifier: workspace:* - version: file:packages/angular(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/fire@20.0.1(c610c615b258e4a2e05e35c7c07ea289)) + version: file:packages/angular(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/fire@20.0.1(224a9fe38983fbc914b248dcbaf6f32b)) '@firebase-oss/ui-core': specifier: workspace:* version: link:../../packages/core @@ -782,7 +785,7 @@ importers: version: 20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/fire': specifier: 'catalog:' - version: 20.0.1(c586ea394f2585d229502db3b5133a2e) + version: 20.0.1(224a9fe38983fbc914b248dcbaf6f32b) '@angular/forms': specifier: 'catalog:' version: 20.3.21(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.21(@angular/animations@20.3.21(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) @@ -1441,7 +1444,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-browser-dynamic': ^20.0.0 '@angular/platform-server': ^20.0.0 - firebase-tools: ^14.0.0 + firebase-tools: '*' rxjs: ~7.8.0 peerDependenciesMeta: '@angular/platform-server': @@ -1516,9 +1519,6 @@ packages: '@antfu/utils@0.7.10': resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} - '@apidevtools/json-schema-ref-parser@9.1.2': - resolution: {integrity: sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==} - '@asamuzakjp/css-color@3.2.0': resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} @@ -2240,14 +2240,6 @@ packages: resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} - '@colors/colors@1.5.0': - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} - - '@colors/colors@1.6.0': - resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} - engines: {node: '>=0.1.90'} - '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -2280,9 +2272,6 @@ packages: resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} - '@dabh/diagnostics@2.0.8': - resolution: {integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==} - '@date-fns/tz@1.4.1': resolution: {integrity: sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==} @@ -2290,17 +2279,6 @@ packages: resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} engines: {node: '>=14.17.0'} - '@electric-sql/pglite-tools@0.2.21': - resolution: {integrity: sha512-kv8Z7UmmBVECHud63VblgQLp4A+qSklNP7H22VQqFQGrWFTodc73bubcjgmBqThFsIIiEeAEQQYwWGaK2lSDtA==} - peerDependencies: - '@electric-sql/pglite': 0.3.16 - - '@electric-sql/pglite@0.2.17': - resolution: {integrity: sha512-qEpKRT2oUaWDH6tjRxLHjdzMqRUGYDnGZlKrnL4dJ77JVMcP2Hpo3NYnOSPKdZdeec57B6QPprCUFg0picx5Pw==} - - '@electric-sql/pglite@0.3.16': - resolution: {integrity: sha512-mZkZfOd9OqTMHsK+1cje8OSzfAQcpD7JmILXTl5ahdempjUDdmg4euf1biDex5/LfQIDJ3gvCu6qDgdnDxfJmA==} - '@emnapi/core@1.6.0': resolution: {integrity: sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg==} @@ -3069,10 +3047,6 @@ packages: resolution: {integrity: sha512-GmzA9ckNokPypTg10pgpeHNQe7ph+iIKKmhKu3Ob9ANkswreCx7R3cKmY781K8QK3AqVL3xVh9A42JvIAbkkSA==} engines: {node: ^20.17.0 || >=22.9.0} - '@google-cloud/cloud-sql-connector@1.11.2': - resolution: {integrity: sha512-ImHGgHunHoAHnQ9Bbsuq9an0rwmMdaPL8nrdQkVNnuIb0GKE+rTyjKNV+po7DJLuk84JPUUbK0cWW9AjPiAblA==} - engines: {node: '>=22'} - '@google-cloud/firestore@7.11.6': resolution: {integrity: sha512-EW/O8ktzwLfyWBOsNuhRoMi8lrC3clHM5LVFhGvO1HCsLozCOOXRAlHrYBoE6HL42Sc8yYMuCb2XqcnJ4OOEpw==} engines: {node: '>=14.0.0'} @@ -3081,10 +3055,6 @@ packages: resolution: {integrity: sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==} engines: {node: '>=14.0.0'} - '@google-cloud/precise-date@4.0.0': - resolution: {integrity: sha512-1TUx3KdaU3cN7nfCdNf+UVqA/PSX29Cjcox3fZZBtINlRrXVTmUkQnCKv2MbBUbCopbK4olAT1IHl76uZyCiVA==} - engines: {node: '>=14.0.0'} - '@google-cloud/projectify@4.0.0': resolution: {integrity: sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==} engines: {node: '>=14.0.0'} @@ -3093,18 +3063,10 @@ packages: resolution: {integrity: sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==} engines: {node: '>=14'} - '@google-cloud/pubsub@4.11.0': - resolution: {integrity: sha512-xWxJAlyUGd6OPp97u8maMcI3xVXuHjxfwh6Dr7P/P+6NK9o446slJobsbgsmK0xKY4nTK8m5uuJrhEKapfZSmQ==} - engines: {node: '>=14.0.0'} - '@google-cloud/storage@7.18.0': resolution: {integrity: sha512-r3ZwDMiz4nwW6R922Z1pwpePxyRwE5GdevYX63hRmAQUkUQJcBH/79EnQPDv5cOv1mFBgevdNWQfi3tie3dHrQ==} engines: {node: '>=14'} - '@googleapis/sqladmin@37.0.0': - resolution: {integrity: sha512-LBxSb3V+avoqsTHY/KsSR4/3FGnRfUw8yhGjx6ihTE5w7Y6l1EZkcx62aCCfCNkaigCQDvgiJG2Pq2jxN1sfag==} - engines: {node: '>=12.0.0'} - '@grpc/grpc-js@1.14.3': resolution: {integrity: sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==} engines: {node: '>=12.10.0'} @@ -3579,9 +3541,6 @@ packages: '@js-sdsl/ordered-map@4.4.2': resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} - '@jsdevtools/ono@7.1.3': - resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} - '@jsonjoy.com/base64@1.1.2': resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} engines: {node: '>=10.0'} @@ -3965,10 +3924,6 @@ packages: resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} - '@opentelemetry/semantic-conventions@1.30.0': - resolution: {integrity: sha512-4VlGgo32k2EQ2wcCY3vEU28A0O13aOtHz3Xt2/2U5FAh9EfhD6t6DqL5Z6yAnRCntbTFDU4YfbpyzSlHNWycPw==} - engines: {node: '>=14'} - '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} engines: {node: '>= 10.0.0'} @@ -4158,18 +4113,6 @@ packages: engines: {node: '>=18'} hasBin: true - '@pnpm/config.env-replace@1.1.0': - resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} - engines: {node: '>=12.22.0'} - - '@pnpm/network.ca-file@1.0.2': - resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} - engines: {node: '>=12.22.0'} - - '@pnpm/npm-conf@3.0.3': - resolution: {integrity: sha512-//0sR/cow/s4ICQaYoAobOl4aU8cjU6x/V24V7XkKotb9+O+3zySIYp146vpaobYHnxa4pZX8NkV54Z5AwbDKA==} - engines: {node: '>=12'} - '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} @@ -5277,19 +5220,12 @@ packages: '@sinclair/typebox@0.34.41': resolution: {integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==} - '@sindresorhus/is@4.6.0': - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} - '@sinonjs/commons@3.0.1': resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} '@sinonjs/fake-timers@13.0.5': resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==} - '@so-ric/colorspace@1.1.6': - resolution: {integrity: sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==} - '@standard-schema/utils@0.3.0': resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} @@ -5548,9 +5484,6 @@ packages: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} - '@tootallnate/quickjs-emscripten@0.23.0': - resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@ts-morph/common@0.19.0': resolution: {integrity: sha512-Unz/WHmd4pGax91rdIKWi51wnVUW11QttMEPpBiBgIewnc9UQIX7UDLxr5vRlqeByXCwhkF6VabSsI0raWcyAQ==} @@ -5765,9 +5698,6 @@ packages: '@types/tough-cookie@4.0.5': resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - '@types/triple-beam@1.3.5': - resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} - '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} @@ -6056,10 +5986,6 @@ packages: resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==} engines: {node: ^20.17.0 || >=22.9.0} - abbrev@5.0.0: - resolution: {integrity: sha512-/XrFJgzQQQHpti1raDJC6m4ws6aNktmjBlhk8Fdlk7LwCEuDoieEJJY9OFHjfiFJFFRM2tK+Ky/IsfbbmlMu1w==} - engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} - abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -6145,9 +6071,6 @@ packages: typescript: '*' typescript-eslint: ^8.0.0 - ansi-align@3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -6192,14 +6115,6 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - archiver-utils@5.0.2: - resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} - engines: {node: '>= 14'} - - archiver@7.0.1: - resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} - engines: {node: '>= 14'} - arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -6258,17 +6173,10 @@ packages: resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} engines: {node: '>=8'} - as-array@2.0.0: - resolution: {integrity: sha512-1Sd1LrodN0XYxYeZcN1J4xYZvmvTwD5tDWaPUGPIzH1mFsmzsPnVtd2exWhecMjtZk/wYWjNZJiD3b1SLCeJqg==} - assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - ast-types@0.13.4: - resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} - engines: {node: '>=4'} - ast-types@0.16.1: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} @@ -6284,15 +6192,9 @@ packages: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} - async-lock@1.4.1: - resolution: {integrity: sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==} - async-retry@1.3.3: resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} - async@3.2.6: - resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -6311,14 +6213,6 @@ packages: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} - b4a@1.8.1: - resolution: {integrity: sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==} - peerDependencies: - react-native-b4a: '*' - peerDependenciesMeta: - react-native-b4a: - optional: true - babel-jest@30.2.0: resolution: {integrity: sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -6373,47 +6267,6 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} - bare-events@2.9.1: - resolution: {integrity: sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg==} - peerDependencies: - bare-abort-controller: '*' - peerDependenciesMeta: - bare-abort-controller: - optional: true - - bare-fs@4.7.2: - resolution: {integrity: sha512-aTvMFUWkBmjzKtEQMDGGDNF8bkfpD5N1b/FCwt7A3wrU4t1o/e/85Wzkluh6JlODCjqVESYCkQCdTXqZ9G7VFg==} - engines: {bare: '>=1.16.0'} - peerDependencies: - bare-buffer: '*' - peerDependenciesMeta: - bare-buffer: - optional: true - - bare-os@3.9.3: - resolution: {integrity: sha512-fF4Q7QsyKVF5Rj0qvI8BgUNjqzC2JvQlpTaPLjVJVxYVUX5Zr9un+y3w1HmA4nNKdFmRBT8z/WmrjvXzXVerKQ==} - engines: {bare: '>=1.14.0'} - - bare-path@3.0.1: - resolution: {integrity: sha512-ghj2DSK/2e99a1anTVPCV4m4YIYtrbXhfM7V3D7XZLOTsybnYyaJloymGqssQc8l/or0UoDyRtNQkmkEF/ysgQ==} - - bare-stream@2.13.3: - resolution: {integrity: sha512-Kc+brLqvEqGkjyfiwJmImAOqLZL7OsoLKuavx+hJjgVV3nLTOjloJyPMFxjUPerGGHrNH0fLU06jjykMLWrERQ==} - peerDependencies: - bare-abort-controller: '*' - bare-buffer: '*' - bare-events: '*' - peerDependenciesMeta: - bare-abort-controller: - optional: true - bare-buffer: - optional: true - bare-events: - optional: true - - bare-url@2.4.5: - resolution: {integrity: sha512-K+y9xF1tN+CdPu4qWwr0QiK1Al07eFPGYK5M2pDXcmHdMdgC/tT/bpmMe1hrmRHaidKLkXrC+cRNYf3XVDUhSQ==} - base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -6426,17 +6279,6 @@ packages: resolution: {integrity: sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==} hasBin: true - basic-auth-connect@1.1.0: - resolution: {integrity: sha512-rKcWjfiRZ3p5WS9e5q6msXa07s6DaFAMXoyowV+mb2xQG+oYdw2QEUyKi0Xp95JvXzShlM+oGy5QuqSK6TfC1Q==} - - basic-auth@2.0.1: - resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} - engines: {node: '>= 0.8'} - - basic-ftp@5.3.1: - resolution: {integrity: sha512-bopVNp6ugyA150DDuZfPFdt1KZ5a94ZDiwX4hMgZDzF+GttD80lEy8kj98kbyhLXnPvhtIo93mdnLIjpCAeeOw==} - engines: {node: '>=10.0.0'} - batch@0.6.1: resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} @@ -6454,9 +6296,6 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - bl@5.1.0: resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} @@ -6478,10 +6317,6 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - boxen@5.1.2: - resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} - engines: {node: '>=10'} - brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -6513,19 +6348,12 @@ packages: bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - buffer-crc32@1.0.0: - resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} - engines: {node: '>=8.0.0'} - buffer-equal-constant-time@1.0.1: resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -6563,9 +6391,6 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} - call-me-maybe@1.0.2: - resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} - callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -6615,10 +6440,6 @@ packages: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - chownr@3.0.0: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} @@ -6627,9 +6448,6 @@ packages: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} - ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - ci-info@4.3.1: resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} engines: {node: '>=8'} @@ -6637,21 +6455,9 @@ packages: cjs-module-lexer@2.1.0: resolution: {integrity: sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==} - cjson@0.3.3: - resolution: {integrity: sha512-yKNcXi/Mvi5kb1uK0sahubYiyfUO2EUgOp4NcY9+8NX5Xmc+4yeNogZuLFkpLBBj7/QI9MjRUIuXrV9XOw5kVg==} - engines: {node: '>= 0.3.0'} - class-variance-authority@0.7.1: resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} - cli-boxes@2.2.1: - resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} - engines: {node: '>=6'} - - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - cli-cursor@4.0.0: resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -6660,19 +6466,10 @@ packages: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} - cli-highlight@2.1.11: - resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} - engines: {node: '>=8.0.0', npm: '>=5.0.0'} - hasBin: true - cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} - cli-table3@0.6.5: - resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} - engines: {node: 10.* || >= 12.*} - cli-truncate@4.0.0: resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} engines: {node: '>=18'} @@ -6684,9 +6481,6 @@ packages: client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -6727,25 +6521,9 @@ packages: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} - color-convert@3.1.3: - resolution: {integrity: sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==} - engines: {node: '>=14.6'} - color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - color-name@2.1.0: - resolution: {integrity: sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==} - engines: {node: '>=12.20'} - - color-string@2.1.4: - resolution: {integrity: sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==} - engines: {node: '>=18'} - - color@5.0.3: - resolution: {integrity: sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==} - engines: {node: '>=18'} - colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -6768,17 +6546,9 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} - commander@5.1.0: - resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} - engines: {node: '>= 6'} - common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - compress-commons@6.0.2: - resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} - engines: {node: '>= 14'} - compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} @@ -6793,21 +6563,10 @@ packages: confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - config-chain@1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} - - configstore@5.0.1: - resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} - engines: {node: '>=8'} - connect-history-api-fallback@2.0.0: resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} engines: {node: '>=0.8'} - connect@3.7.0: - resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} - engines: {node: '>= 0.10.0'} - consola@3.4.2: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} @@ -6886,31 +6645,13 @@ packages: typescript: optional: true - crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true - - crc32-stream@6.0.0: - resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} - engines: {node: '>= 14'} - create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - cross-env@7.0.3: - resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} - engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} - hasBin: true - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - crypto-random-string@2.0.0: - resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} - engines: {node: '>=8'} - css-loader@7.1.2: resolution: {integrity: sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==} engines: {node: '>= 18.12.0'} @@ -6948,9 +6689,6 @@ packages: csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - csv-parse@5.6.0: - resolution: {integrity: sha512-l3nz3euub2QMg5ouu5U09Ew9Wf6/wQ8I++ch1loQ0ljmzhmfZYrH9fflS22i/PQEvsPvxCwxgz5q7UB8K1JO4Q==} - cva@1.0.0-beta.4: resolution: {integrity: sha512-F/JS9hScapq4DBVQXcK85l9U91M6ePeXoBMSp7vypzShoefUBxjQTo3g3935PUHgQd+IW77DjbPRIxugy4/GCQ==} peerDependencies: @@ -7007,10 +6745,6 @@ packages: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} - data-uri-to-buffer@6.0.2: - resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} - engines: {node: '>= 14'} - data-urls@5.0.0: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} @@ -7041,15 +6775,6 @@ packages: supports-color: optional: true - debug@4.3.1: - resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -7080,16 +6805,6 @@ packages: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} - deep-equal-in-any-order@2.2.0: - resolution: {integrity: sha512-lUYf3Oz/HrPcNmKe+S+QSdY5/hzKleftcFBWLwbHNZ5007RUKgN0asWlAHuQGvT9djYd9PYQFiu0TyNS+h3j/g==} - - deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - - deep-freeze@0.0.1: - resolution: {integrity: sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg==} - deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -7120,10 +6835,6 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - degenerator@5.0.1: - resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} - engines: {node: '>= 14'} - delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -7178,9 +6889,6 @@ packages: resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} - discontinuous-range@1.0.0: - resolution: {integrity: sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==} - dns-packet@5.6.1: resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} engines: {node: '>=6'} @@ -7214,10 +6922,6 @@ packages: dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - dot-prop@5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} - dotenv@16.6.1: resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} @@ -7270,16 +6974,10 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - emojilib@2.4.0: - resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} - emojis-list@3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - enabled@2.0.0: - resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} - encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -7395,10 +7093,6 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} - escape-goat@2.1.1: - resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} - engines: {node: '>=8'} - escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} @@ -7410,11 +7104,6 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - eslint-config-prettier@9.1.2: resolution: {integrity: sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==} hasBin: true @@ -7527,12 +7216,6 @@ packages: eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - events-listener@1.1.0: - resolution: {integrity: sha512-Kd3EgYfODHueq6GzVfs/VUolh2EgJsS8hkO3KpnDrxVjU3eq63eXM2ujXkhPP+OkeUOhL8CxdfZbQXzryb5C4g==} - - events-universal@1.0.1: - resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} - events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -7553,14 +7236,6 @@ packages: resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - exegesis-express@4.0.0: - resolution: {integrity: sha512-V2hqwTtYRj0bj43K4MCtm0caD97YWkqOUHFMRCBW5L1x9IjyqOEc7Xa4oQjjiFbeFOSQzzwPV+BzXsQjSz08fw==} - engines: {node: '>=6.0.0', npm: '>5.0.0'} - - exegesis@4.3.0: - resolution: {integrity: sha512-V90IJQ4XYO1SfH5qdJTOijXkQTF3hSpSHHqlf7MstUMDKP22iAvi63gweFLtPZ4Gj3Wnh8RgJX5TGu0WiwTyDQ==} - engines: {node: '>=10.0.0', npm: '>5.0.0'} - exit-x@0.2.2: resolution: {integrity: sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==} engines: {node: '>= 0.8.0'} @@ -7621,9 +7296,6 @@ packages: resolution: {integrity: sha512-6rxyATwPCkaFIL3JLqw8qXqMpIZ942pTX/tbQFkRsDGblS8tNGtlUauA/+mt6RUfqn/4MoEr+WDkYoIQbibWuQ==} engines: {node: '>=6.0.0'} - fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -7660,9 +7332,6 @@ packages: picomatch: optional: true - fecha@4.2.3: - resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} - fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -7674,18 +7343,10 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} - filesize@6.4.0: - resolution: {integrity: sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ==} - engines: {node: '>= 0.4.0'} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@1.1.2: - resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} - engines: {node: '>= 0.8'} - finalhandler@1.3.1: resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} @@ -7714,11 +7375,6 @@ packages: resolution: {integrity: sha512-Zgc6yPtmPxAZo+FoK6LMG6zpSEsoSK8ifIR+IqF4oWuC3uWZU40OjxgfLTSFcsRlj/k/wD66zNv2UiTRreCNSw==} engines: {node: '>=18'} - firebase-tools@14.15.2: - resolution: {integrity: sha512-6wyA9F3tXToAKJR8IkDyHOlOwAOL6j9qoA1inF6psiC8lzMwJ9/t+Lc7HmvIgOb1KDdj82vxL3llX28wcHwonw==} - engines: {node: '>=20.0.0 || >=22.0.0'} - hasBin: true - firebase@11.10.0: resolution: {integrity: sha512-nKBXoDzF0DrXTBQJlZa+sbC5By99ysYU1D6PkMRYknm0nCW7rJly47q492Ht7Ndz5MeYSBuboKuhS1e6mFC03w==} @@ -7736,9 +7392,6 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - fn.name@1.1.0: - resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} - follow-redirects@1.15.11: resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} engines: {node: '>=4.0'} @@ -7783,18 +7436,10 @@ packages: resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} engines: {node: '>= 0.8'} - fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - fs-extra@11.3.2: resolution: {integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==} engines: {node: '>=14.14'} - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - fs-minipass@3.0.3: resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -7825,34 +7470,14 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - fuzzy@0.1.3: - resolution: {integrity: sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w==} - engines: {node: '>= 0.6.0'} - gaxios@6.7.1: resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} engines: {node: '>=14'} - gaxios@7.1.3: - resolution: {integrity: sha512-YGGyuEdVIjqxkxVH1pUTMY/XtmmsApXrCVv5EU25iX6inEPbV+VakJfLealkBtJN69AQmh1eGOdCl9Sm1UP6XQ==} - engines: {node: '>=18'} - - gaxios@7.1.5: - resolution: {integrity: sha512-5FZy72Rh8LhtjmvDrKkI+lVhrsQrVKVsItxMoDm5mNQE+xR0WVIIs+jzPSJgBvKVsLi24fZhXJIsNI0bihDzFg==} - engines: {node: '>=18'} - gcp-metadata@6.1.1: resolution: {integrity: sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==} engines: {node: '>=14'} - gcp-metadata@8.1.2: - resolution: {integrity: sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==} - engines: {node: '>=18'} - - gcp-metadata@8.1.3: - resolution: {integrity: sha512-ziTrzUhhpL9Zk5k0HHzgP/KIpWDJT0VMBC/ynt/QIBvTW+UUcSivQRl6VlwTf/EilDxtSWklHoRsKy1c4k+59w==} - engines: {node: '>=18'} - generator-function@2.0.1: resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} engines: {node: '>= 0.4'} @@ -7900,10 +7525,6 @@ packages: get-tsconfig@4.13.0: resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} - get-uri@6.0.5: - resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==} - engines: {node: '>= 14'} - glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -7912,12 +7533,6 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob-slash@1.0.0: - resolution: {integrity: sha512-ZwFh34WZhZX28ntCMAP1mwyAJkn8+Omagvt/GvA+JQM/qgT0+MR2NPF3vhvgdshfdvDyGZXs8fPXW84K32Wjuw==} - - glob-slasher@1.0.1: - resolution: {integrity: sha512-5MUzqFiycIKLMD1B0dYOE4hGgLLUZUNGGYO4BExdwT32wUwW3DBOE7lMQars7vB1q43Fb3Tyt+HmgLKsJhDYdg==} - glob-to-regex.js@1.2.0: resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} engines: {node: '>=10.0'} @@ -7946,10 +7561,6 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - global-dirs@3.0.1: - resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} - engines: {node: '>=10'} - globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -7962,14 +7573,6 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} - google-auth-library@10.5.0: - resolution: {integrity: sha512-7ABviyMOlX5hIVD60YOfHw4/CxOfBhyduaYB+wbFWCWoni4N7SLcV46hrVRktuBbZjFC9ONyqamZITN7q3n32w==} - engines: {node: '>=18'} - - google-auth-library@10.9.0: - resolution: {integrity: sha512-xtvUqvINPhTaBm7nXqlYPcrMHJPm1lCNdSovxnKKhTm+4JsvQ+KGVYJViLoH9Yxu8w+T0Qv5HubzYT9BLrppJg==} - engines: {node: '>=18'} - google-auth-library@9.15.1: resolution: {integrity: sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==} engines: {node: '>=14'} @@ -7982,21 +7585,10 @@ packages: resolution: {integrity: sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==} engines: {node: '>=14'} - google-logging-utils@1.1.3: - resolution: {integrity: sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==} - engines: {node: '>=14'} - - googleapis-common@8.0.2: - resolution: {integrity: sha512-5MXeQzIZaqCH7B+HJWqhQm946VARpZep6acbWSr/fcgF2cQANq7allgX+i/G0EqF0WyUxB277gtWMzRYHMl9tg==} - engines: {node: '>=18.0.0'} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} - graceful-fs@4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -8011,10 +7603,6 @@ packages: resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} engines: {node: '>=14.0.0'} - gtoken@8.0.0: - resolution: {integrity: sha512-+CqsMbHPiSTdtSO14O51eMNlrp9N79gmeqmXeouJOhfucAedHw9noVe/n5uJk3tbKE6a+6ZCQg3RPhVhHByAIw==} - engines: {node: '>=18'} - handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} @@ -8046,10 +7634,6 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - has-yarn@2.1.0: - resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} - engines: {node: '>=8'} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -8057,13 +7641,6 @@ packages: headers-polyfill@4.0.3: resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} - heap-js@2.7.1: - resolution: {integrity: sha512-EQfezRg0NCZGNlhlDR3Evrw1FVL2G3LhU7EgPoxufQKruNBSYA8MiRPHeWbU+36o+Fhel0wMwM+sLEiBAlNLJA==} - engines: {node: '>=10.0.0'} - - highlight.js@10.7.3: - resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} - hono@4.12.18: resolution: {integrity: sha512-RWzP96k/yv0PQfyXnWjs6zot20TqfpfsNXhOnev8d1InAxubW93L11/oNUc3tQqn2G0bSdAOBpX+2uDFHV7kdQ==} engines: {node: '>=16.9.0'} @@ -8209,10 +7786,6 @@ packages: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} - import-lazy@2.1.0: - resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} - engines: {node: '>=4'} - import-local@3.2.0: resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} engines: {node: '>=8'} @@ -8236,13 +7809,6 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - ini@2.0.0: - resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} - engines: {node: '>=10'} - ini@5.0.0: resolution: {integrity: sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==} engines: {node: ^18.17.0 || >=20.5.0} @@ -8260,11 +7826,6 @@ packages: react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc - install-artifact-from-github@1.6.0: - resolution: {integrity: sha512-wKsuzN8fy8QK7iEUqyWTQmvZ1QFGPn1xyl3/1iIIDthDjS7Hn9HoPwHlNakZirWbCsbad0lZMkr6Xfbpe1pUzw==} - engines: {node: '>=18'} - hasBin: true - internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} @@ -8277,10 +7838,6 @@ packages: resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==} engines: {node: '>= 12'} - ip-regex@2.1.0: - resolution: {integrity: sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==} - engines: {node: '>=4'} - ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -8312,17 +7869,10 @@ packages: resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} - is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-ci@2.0.0: - resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} - hasBin: true - is-core-module@2.16.1: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} @@ -8377,14 +7927,6 @@ packages: engines: {node: '>=14.16'} hasBin: true - is-installed-globally@0.4.0: - resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} - engines: {node: '>=10'} - - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - is-interactive@2.0.0: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} @@ -8404,34 +7946,18 @@ packages: is-node-process@1.2.0: resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} - is-npm@5.0.0: - resolution: {integrity: sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==} - engines: {node: '>=10'} - is-number-object@1.1.1: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} - is-number@2.1.0: - resolution: {integrity: sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==} - engines: {node: '>=0.10.0'} - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-obj@2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} - is-obj@3.0.0: resolution: {integrity: sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==} engines: {node: '>=12'} - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - is-plain-obj@3.0.0: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} engines: {node: '>=10'} @@ -8466,9 +7992,6 @@ packages: resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} - is-stream-ended@0.1.4: - resolution: {integrity: sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==} - is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -8489,13 +8012,6 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} - is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - is-unicode-supported@1.3.0: resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} engines: {node: '>=12'} @@ -8504,9 +8020,6 @@ packages: resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} - is-url@1.2.4: - resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} - is-weakmap@2.0.2: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} @@ -8522,24 +8035,10 @@ packages: is-what@3.14.1: resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} - is-wsl@1.1.0: - resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} - engines: {node: '>=4'} - is-wsl@3.1.0: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} - is-yarn-global@0.3.0: - resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} - - is2@2.0.1: - resolution: {integrity: sha512-+WaJvnaA7aJySz2q/8sLjMb2Mw14KTplHmSwcSpZ/fWJPkUmqw3YTzSWbPJ7OAwRvdYTWF2Wg+yYJ1AdP5Z8CA==} - engines: {node: '>=v0.10.0'} - - isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -8557,9 +8056,6 @@ packages: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} - isomorphic-fetch@3.0.0: - resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} - istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -8752,12 +8248,6 @@ packages: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true - jju@1.4.0: - resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} - - join-path@1.1.1: - resolution: {integrity: sha512-jnt9OC34sLXMLJ6YfPQ2ZEKrR9mB5ZbSnQb4LPaOx1c5rTzxpR33L18jjp0r75mGGTJmsil3qwN1B5IBeTnSSA==} - jose@4.15.9: resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==} @@ -8818,13 +8308,6 @@ packages: resolution: {integrity: sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==} engines: {node: ^20.17.0 || >=22.9.0} - json-parse-helpfulerror@1.0.3: - resolution: {integrity: sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg==} - - json-ptr@3.1.1: - resolution: {integrity: sha512-SiSJQ805W1sDUCD1+/t1/1BIrveq2Fe9HJqENxZmMCILmrPI7WhS/pePpIOx85v6/H2z1Vy7AI08GV2TzfXocg==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -8876,10 +8359,6 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - kind-of@3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} - kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -8892,16 +8371,9 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - kuler@2.0.0: - resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} - launch-editor@2.12.0: resolution: {integrity: sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==} - lazystream@1.0.1: - resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} - engines: {node: '>= 0.6.3'} - less-loader@12.3.0: resolution: {integrity: sha512-0M6+uYulvYIWs52y0LqN4+QM9TqWAohYSNTo4htE8Z7Cn3G/qQMEmktfHmyJT23k+20kU9zHH2wrfFXkxNLtVw==} engines: {node: '>= 18.12.0'} @@ -8936,12 +8408,6 @@ packages: libphonenumber-js@1.12.25: resolution: {integrity: sha512-u90tUu/SEF8b+RaDKCoW7ZNFDakyBtFlX1ex3J+VH+ElWes/UaitJLt/w4jGu8uAE41lltV/s+kMVtywcMEg7g==} - libsodium-wrappers@0.7.16: - resolution: {integrity: sha512-Gtr/WBx4dKjvRL1pvfwZqu7gO6AfrQ0u9vFL+kXihtHf6NfkROR8pjYWn98MFDI3jN19Ii1ZUfPR9afGiPyfHg==} - - libsodium@0.7.16: - resolution: {integrity: sha512-3HrzSPuzm6Yt9aTYCDxYEG8x8/6C0+ag655Y7rhhWZM9PT4NpdnbqlzXhGZlDnkgR6MeSTnOt/VIyHLs9aSf+Q==} - license-webpack-plugin@4.0.2: resolution: {integrity: sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==} peerDependencies: @@ -9066,9 +8532,6 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - lodash._objecttypes@2.4.1: - resolution: {integrity: sha512-XpqGh1e7hhkOzftBfWE7zt+Yn9mVHFkDhicVttvKLsoCMLVVL+xTQjfjB4X4vtznauxv0QZ5ZAeqjvat0dh62Q==} - lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} @@ -9090,9 +8553,6 @@ packages: lodash.isnumber@3.0.3: resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} - lodash.isobject@2.4.1: - resolution: {integrity: sha512-sTebg2a1PoicYEZXD5PBdQcTlIJ6hUslrlWr7iV0O7n+i4596s2NQ9I5CaZ5FbXSfya/9WQsrYLANUJv9paYVA==} - lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} @@ -9108,9 +8568,6 @@ packages: lodash.once@4.1.1: resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - lodash.snakecase@4.1.1: - resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} - lodash.sortby@4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} @@ -9120,10 +8577,6 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - log-symbols@5.1.0: resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} engines: {node: '>=12'} @@ -9136,10 +8589,6 @@ packages: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} - logform@2.7.0: - resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} - engines: {node: '>= 12.0.0'} - long@5.3.2: resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} @@ -9167,16 +8616,9 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} - lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - lru-memoizer@2.3.0: resolution: {integrity: sha512-GXn7gyHAMhO13WSKrIiNfztwxodVsP8IoZ3XfrJV4yH2x0/OeTO/FIaAHTY5YekdGgW94njfuKmyyt1E0mR6Ug==} - lsofi@1.0.0: - resolution: {integrity: sha512-MKr9vM1MSm+TSKfI05IYxpKV1NCxpJaBLnELyIf784zYJ5KV9lGCE1EvpA2DtXDNM3fCuFeCwXUzim/fyQRi+A==} - lucide-react@0.544.0: resolution: {integrity: sha512-t5tS44bqd825zAW45UQxpG2CvcC4urOwn2TrwSH8u+MjeE+1NnWl6QqeQ/6NdjMqdOygyiT9p3Ev0p1NJykxjw==} peerDependencies: @@ -9199,10 +8641,6 @@ packages: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} @@ -9217,17 +8655,6 @@ packages: makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - marked-terminal@7.3.0: - resolution: {integrity: sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==} - engines: {node: '>=16.0.0'} - peerDependencies: - marked: '>=1 <16' - - marked@13.0.3: - resolution: {integrity: sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==} - engines: {node: '>= 18'} - hasBin: true - math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -9289,11 +8716,6 @@ packages: engines: {node: '>=4'} hasBin: true - mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} - hasBin: true - mime@3.0.0: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} @@ -9331,14 +8753,6 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@5.1.9: - resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} - engines: {node: '>=10'} - - minimatch@6.2.3: - resolution: {integrity: sha512-5rvZbDy5y2k40rre/0OBbYnl03en25XPU3gOVO7532beGMjAipq88VdS9OeLOZNrD+Tb0lDhBJHZ7Gcd8qKlPg==} - engines: {node: '>=10'} - minimatch@7.4.6: resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} engines: {node: '>=10'} @@ -9374,10 +8788,6 @@ packages: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} @@ -9386,19 +8796,10 @@ packages: resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - minizlib@3.1.0: resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - mkdirp@2.1.6: resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==} engines: {node: '>=10'} @@ -9407,13 +8808,6 @@ packages: mlly@1.8.0: resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} - moo@0.5.3: - resolution: {integrity: sha512-m2fmM2dDm7GZQsY7KK2cme8agi+AAljILjQnof7p1ZMDe6dQ4bdnSMx0cPppudoeNv5hEFQirN6u+O4fDE0IWA==} - - morgan@1.11.0: - resolution: {integrity: sha512-zSkVu3t18r39pw4ixfBKvfZi3y2UOqr7d4WYwcj3m8nXpEQK4rPO6GLzs/CExoRgmX3y9EjmmcXqv6jq0SK46g==} - engines: {node: '>= 0.8.0'} - mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} @@ -9421,9 +8815,6 @@ packages: ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -9455,9 +8846,6 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nan@2.28.0: - resolution: {integrity: sha512-fTsDz99OTq2sVePhGdp4qQhggZFtKr64ZNVyVajRKtMOkJxYekplBh577PiJB12v/D3s2E5cGtOI45LWp6rnLQ==} - nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -9479,10 +8867,6 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - nearley@2.20.1: - resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==} - hasBin: true - needle@3.3.1: resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} engines: {node: '>= 4.4.x'} @@ -9503,10 +8887,6 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - netmask@2.1.1: - resolution: {integrity: sha512-eonl3sLUha+S1GzTPxychyhnUzKyeQkZ7jLjKrBagJgPla13F+uQ71HgpFefyHgqrjEbCPkDArxYsjY8/+gLKA==} - engines: {node: '>= 0.4.0'} - next-themes@0.4.6: resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==} peerDependencies: @@ -9561,10 +8941,6 @@ packages: engines: {node: '>=10.5.0'} deprecated: Use your platform's native DOMException instead - node-emoji@2.2.0: - resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} - engines: {node: '>=18'} - node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -9591,11 +8967,6 @@ packages: engines: {node: ^20.17.0 || >=22.9.0} hasBin: true - node-gyp@13.0.0: - resolution: {integrity: sha512-FYYyBDWdc+kzoyPd5PqHUgM9DGs1C/Z4jxBZAOnA2GRUVXPivKRREq5q+VVPXVr9aGVqGMaMqyFHbviy/yb7Hg==} - engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} - hasBin: true - node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} @@ -9605,11 +8976,6 @@ packages: node-releases@2.0.36: resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} - nopt@10.0.1: - resolution: {integrity: sha512-df3sBr/6ax9hSGuC3CspvLlbnX8cP5L5nZwXF8cGN8l0zSWR6BvzmQ6jPUKjvo6+/xdpkNvEcucBNUdBeeV13g==} - engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} - hasBin: true - nopt@9.0.0: resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==} engines: {node: ^20.17.0 || >=22.9.0} @@ -9700,10 +9066,6 @@ packages: obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - on-finished@2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} - on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -9715,9 +9077,6 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - one-time@1.0.0: - resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} - onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} @@ -9734,21 +9093,10 @@ packages: resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} engines: {node: '>=18'} - open@6.4.0: - resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} - engines: {node: '>=8'} - - openapi3-ts@3.2.0: - resolution: {integrity: sha512-/ykNWRV5Qs0Nwq7Pc0nJ78fgILvOT/60OxEmB3v7yQ8a8Bwcm43D4diaYazG/KBn6czA+52XYy931WFLMCUeSg==} - optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - ora@6.3.1: resolution: {integrity: sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -9767,10 +9115,6 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} - p-defer@3.0.0: - resolution: {integrity: sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==} - engines: {node: '>=8'} - p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -9795,22 +9139,10 @@ packages: resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} engines: {node: '>=16.17'} - p-throttle@7.0.0: - resolution: {integrity: sha512-aio0v+S0QVkH1O+9x4dHtD4dgCExACcL+3EtNaGqC01GBudS9ijMuUsmN8OVScyV4OOp0jqdLShZFuSlbL/AsA==} - engines: {node: '>=18'} - p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - pac-proxy-agent@7.2.0: - resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} - engines: {node: '>= 14'} - - pac-resolver@7.0.1: - resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} - engines: {node: '>= 14'} - package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} @@ -9834,18 +9166,9 @@ packages: parse5-html-rewriting-stream@8.0.0: resolution: {integrity: sha512-wzh11mj8KKkno1pZEu+l2EVeWsuKDfR5KNWZOTsslfUX8lPDZx77m9T0kIoAVkFtD1nx6YF8oh4BnPHvxMtNMw==} - parse5-htmlparser2-tree-adapter@6.0.1: - resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} - parse5-sax-parser@8.0.0: resolution: {integrity: sha512-/dQ8UzHZwnrzs3EvDj6IkKrD/jIZyTlB+8XrHJvcjNgRdmWruNdN9i9RK/JtxakmlUdPwKubKPTCqvbTgzGhrw==} - parse5@5.1.1: - resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} - - parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} @@ -9889,9 +9212,6 @@ packages: path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} - path-to-regexp@1.9.0: - resolution: {integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==} - path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} @@ -9909,43 +9229,6 @@ packages: resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} - pg-cloudflare@1.4.0: - resolution: {integrity: sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==} - - pg-connection-string@2.14.0: - resolution: {integrity: sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg==} - - pg-gateway@0.3.0-beta.4: - resolution: {integrity: sha512-CTjsM7Z+0Nx2/dyZ6r8zRsc3f9FScoD5UAOlfUx1Fdv/JOIWvRbF7gou6l6vP+uypXQVoYPgw8xZDXgMGvBa4Q==} - - pg-int8@1.0.1: - resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} - engines: {node: '>=4.0.0'} - - pg-pool@3.14.0: - resolution: {integrity: sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==} - peerDependencies: - pg: '>=8.0' - - pg-protocol@1.15.0: - resolution: {integrity: sha512-cq9sECI5s0+uPUXjbz8ioyPJni6RzsRib0US67i5IoTZKw8fNeYlVE7u8F4dG7vEJJtc5wdD1K189lCCUwqWTQ==} - - pg-types@2.2.0: - resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} - engines: {node: '>=4'} - - pg@8.22.0: - resolution: {integrity: sha512-8wih1vVIBMxoUM2oB4soJsD9tDnDpLv4OXBJ+EJzFsvycD+lfyIreC2gGHq78f8jbLLt+bvlPTFdFZfJkOuzAA==} - engines: {node: '>= 16.0.0'} - peerDependencies: - pg-native: '>=3.0.1' - peerDependenciesMeta: - pg-native: - optional: true - - pgpass@1.0.5: - resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -9998,10 +9281,6 @@ packages: engines: {node: '>=18'} hasBin: true - portfinder@1.0.38: - resolution: {integrity: sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==} - engines: {node: '>= 10.12'} - possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} @@ -10083,22 +9362,6 @@ packages: resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} engines: {node: ^10 || ^12 || >=14} - postgres-array@2.0.0: - resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} - engines: {node: '>=4'} - - postgres-bytea@1.0.1: - resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==} - engines: {node: '>=0.10.0'} - - postgres-date@1.0.7: - resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} - engines: {node: '>=0.10.0'} - - postgres-interval@1.2.0: - resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} - engines: {node: '>=0.10.0'} - prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -10132,24 +9395,9 @@ packages: resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==} engines: {node: ^20.17.0 || >=22.9.0} - proc-log@7.0.0: - resolution: {integrity: sha512-FYgfaA69XZ93zaXLoMNQ+ViDXGGBgR8aLh03txzcFhV+9xOXx7+8DLCULrKKpR9+GsH9ZfHm82aSUPpozX0Ztg==} - engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} - process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - - progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - - promise-breaker@6.0.0: - resolution: {integrity: sha512-BthzO9yTPswGf7etOBiHCVuugs2N01/Q/94dIPls48z2zCmrnDptUUZzfIb+41xq0MnYZ/BzmOd6ikDR4ibNZA==} - promise-retry@2.0.1: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} engines: {node: '>=10'} @@ -10161,9 +9409,6 @@ packages: prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - proto-list@1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - proto3-json-serializer@2.0.2: resolution: {integrity: sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==} engines: {node: '>=14.0.0'} @@ -10176,13 +9421,6 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} - proxy-agent@6.5.0: - resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} - engines: {node: '>= 14'} - - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} @@ -10190,10 +9428,6 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - pupa@2.1.1: - resolution: {integrity: sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==} - engines: {node: '>=8'} - pure-rand@7.0.1: resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} @@ -10215,13 +9449,6 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - railroad-diagrams@1.0.0: - resolution: {integrity: sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==} - - randexp@0.4.6: - resolution: {integrity: sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==} - engines: {node: '>=0.12'} - range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -10234,14 +9461,6 @@ packages: resolution: {integrity: sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==} engines: {node: '>= 0.10'} - rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - - re2@1.25.0: - resolution: {integrity: sha512-mtxKjWS+VYIt2ijgt6ohEdwzNlGPom1whyaEKJD40cBc/wqkO1vJoOyK539Qb8Xa9m4GA6hiPGDIbW/d3egSRQ==} - engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} - react-day-picker@9.11.1: resolution: {integrity: sha512-l3ub6o8NlchqIjPKrRFUCkTUEq6KwemQlfv3XZzzwpUeGwmDJ+0u0Upmt38hJyd7D/vn2dQoOoLV/qAp0o3uUw==} engines: {node: '>=18'} @@ -10354,13 +9573,6 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - readable-stream@4.7.0: - resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - readdir-glob@1.1.3: - resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} - readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -10413,14 +9625,6 @@ packages: resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} engines: {node: '>=4'} - registry-auth-token@5.1.1: - resolution: {integrity: sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==} - engines: {node: '>=14'} - - registry-url@5.1.0: - resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} - engines: {node: '>=8'} - regjsgen@0.8.0: resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} @@ -10472,10 +9676,6 @@ packages: resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - restore-cursor@4.0.0: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -10484,10 +9684,6 @@ packages: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} - ret@0.1.15: - resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} - engines: {node: '>=0.12'} - retry-request@7.0.2: resolution: {integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==} engines: {node: '>=14'} @@ -10510,10 +9706,6 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rimraf@5.0.10: - resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} - hasBin: true - rimraf@6.0.1: resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} engines: {node: 20 || >=22} @@ -10585,10 +9777,6 @@ packages: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} - safe-stable-stringify@2.5.0: - resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} - engines: {node: '>=10'} - safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -10649,10 +9837,6 @@ packages: resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} engines: {node: '>=10'} - semver-diff@3.1.1: - resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} - engines: {node: '>=8'} - semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -10785,10 +9969,6 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - skin-tone@2.0.0: - resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} - engines: {node: '>=8'} - slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -10829,10 +10009,6 @@ packages: react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc - sort-any@4.0.7: - resolution: {integrity: sha512-UuZVEXClHW+bVa6ZBQ4biTWmLXMP7y6/jv5arfA0rKk7ZExy+5Zm19uekIqqDx6ZuvUMu7z5Ba9FfBi6FlGXPQ==} - engines: {node: '>=12'} - source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -10878,24 +10054,13 @@ packages: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} - split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - sql-formatter@15.8.2: - resolution: {integrity: sha512-kTYRg5FIcvsDtYUG2Qn9pYT6xKwiLJN5TTIvc5Mur6hIg4pSfdpHu8Yyu5bqESLHnVM3mXzD446cb2+uEaKZXg==} - hasBin: true - ssri@13.0.1: resolution: {integrity: sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==} engines: {node: ^20.17.0 || >=22.9.0} - stack-trace@0.0.10: - resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} - stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -10930,21 +10095,12 @@ packages: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} - stream-chain@2.2.5: - resolution: {integrity: sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==} - stream-events@1.0.5: resolution: {integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==} - stream-json@1.9.1: - resolution: {integrity: sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==} - stream-shift@1.0.3: resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - streamx@2.28.0: - resolution: {integrity: sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw==} - strict-event-emitter@0.5.1: resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} @@ -11021,10 +10177,6 @@ packages: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -11056,11 +10208,6 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true - superstatic@9.2.0: - resolution: {integrity: sha512-QrJAJIpAij0jJT1nEwYTB0SzDi4k0wYygu6GxK0ko8twiQgfgaOAZ7Hu99p02MTAsGho753zhzSvsw8We4PBEQ==} - engines: {node: 18 || 20 || 22} - hasBin: true - supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -11069,10 +10216,6 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} - supports-hyperlinks@3.2.0: - resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} - engines: {node: '>=14.18'} - supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -11101,14 +10244,6 @@ packages: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} - tar-stream@3.2.0: - resolution: {integrity: sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==} - - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - tar@7.5.1: resolution: {integrity: sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==} engines: {node: '>=18'} @@ -11118,16 +10253,10 @@ packages: resolution: {integrity: sha512-dzGK0boVlC4W5QFuQN1EFSl3bIDYsk7Tj40U6eIBnK2k/8ml7TZ5agbI5j5+qnoVcAA+rNtBml8SEiLxZpNqRQ==} engines: {node: '>=18'} - tcp-port-used@1.0.3: - resolution: {integrity: sha512-4CEQ3qRJYo+mtEbJ+OoQu3dF4TDkwaO3RDVC4UzP5cpAOIUWwuwPjD7sdxDFFqsMUjsXVVYBMlg/boAaloThMA==} - teeny-request@9.0.0: resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} engines: {node: '>=14'} - teex@1.0.1: - resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} - terser-webpack-plugin@5.4.0: resolution: {integrity: sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==} engines: {node: '>= 10.13.0'} @@ -11162,12 +10291,6 @@ packages: resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} engines: {node: '>=18'} - text-decoder@1.2.7: - resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==} - - text-hex@1.0.0: - resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} - thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -11181,9 +10304,6 @@ packages: peerDependencies: tslib: ^2 - through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} @@ -11234,10 +10354,6 @@ packages: resolution: {integrity: sha512-Y1KQBgDd/NUc+LfOtKS6mNsC9CCaH+m2P1RoIZy7RAPo3C3/t8X45+zgut31cRZtZ3xKPjfn3TkGTrctC2TQIQ==} hasBin: true - tmp@0.2.7: - resolution: {integrity: sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==} - engines: {node: '>=14.14'} - tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -11261,9 +10377,6 @@ packages: resolution: {integrity: sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==} engines: {node: '>=16'} - toxic@1.0.1: - resolution: {integrity: sha512-WI3rIGdcaKULYg7KVoB0zcjikqvcYYvcuT6D89bFPz2rVR0Rl0PK6x8/X62rtdLtBKIE985NzVf/auTtGegIIg==} - tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -11284,10 +10397,6 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true - triple-beam@1.4.1: - resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} - engines: {node: '>= 14.0.0'} - ts-api-utils@2.1.0: resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} engines: {node: '>=18.12'} @@ -11348,10 +10457,6 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsscmp@1.0.6: - resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} - engines: {node: '>=0.6.x'} - tsup@8.5.0: resolution: {integrity: sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==} engines: {node: '>=18'} @@ -11391,10 +10496,6 @@ packages: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -11430,9 +10531,6 @@ packages: typed-assert@1.0.9: resolution: {integrity: sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==} - typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - typescript-eslint@8.46.2: resolution: {integrity: sha512-vbw8bOmiuYNdzzV3lsiWv6sRwjyuKJMQqWulBOU7M0RrxedXledX8G8kBbQeiOYDnTfiXz0Y4081E1QMNB6iQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -11471,10 +10569,6 @@ packages: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} engines: {node: '>=4'} - unicode-emoji-modifier-base@1.0.0: - resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} - engines: {node: '>=4'} - unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} @@ -11487,14 +10581,6 @@ packages: resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} engines: {node: '>=4'} - unique-string@2.0.0: - resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} - engines: {node: '>=8'} - - universal-analytics@0.5.4: - resolution: {integrity: sha512-db38BYsx+oZEx0bc+PeGmIwG+YiYH5Xluhxf9EBnL39U4+DAXJtXQHLJ+zzTH36lx/N54/WKQQYnh0kQWJ74yg==} - engines: {node: '>=22.0.0'} - universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -11521,19 +10607,9 @@ packages: peerDependencies: browserslist: '>= 4.21.0' - update-notifier-cjs@5.1.7: - resolution: {integrity: sha512-eZWTh8F+VCEoC4UIh0pKmh8h4izj65VvLhCpJpVefUxdYe0fU3GBrC4Sbh1AoWA/miNPAb6UVlp2fUQNsfp+3g==} - engines: {node: '>=14'} - uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - url-join@0.0.1: - resolution: {integrity: sha512-H6dnQ/yPAAVzMQRvEvyz01hhfQL5qRWSEt7BX8t9DqnPw9BjMb64fjIRq76Uvf1hkHp+mTZvEVJ5guXOT0Xqaw==} - - url-template@2.0.8: - resolution: {integrity: sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==} - use-callback-ref@1.3.3: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} @@ -11570,10 +10646,6 @@ packages: resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} hasBin: true - uuid@14.0.1: - resolution: {integrity: sha512-6ZxzVpzDXDa3bJWaHilVayA+BH/1zmxCJoVgvmqJnid/gPoKHxUrS/aC/T6LGQtNHT+XHG9fXPJB4d+IrU30Ew==} - hasBin: true - uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). @@ -11591,9 +10663,6 @@ packages: resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} - valid-url@1.0.9: - resolution: {integrity: sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==} - validate-npm-package-name@6.0.2: resolution: {integrity: sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -11848,31 +10917,14 @@ packages: engines: {node: ^20.17.0 || >=22.9.0} hasBin: true - which@7.0.0: - resolution: {integrity: sha512-RancgH2dmbLdHl6LRhEqvklWMgl/Hdnun0Y90KhBOLkMefg8Qa7/Zel8Sm+8HEcP6DEjzsWzpkuBQEZok58isA==} - engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} - hasBin: true - why-is-node-running@2.3.0: resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} hasBin: true - widest-line@3.1.0: - resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} - engines: {node: '>=8'} - wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - winston-transport@4.9.0: - resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==} - engines: {node: '>= 12.0.0'} - - winston@3.19.0: - resolution: {integrity: sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==} - engines: {node: '>= 12.0.0'} - word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -11899,25 +10951,10 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - write-file-atomic@5.0.1: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - ws@7.5.11: - resolution: {integrity: sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - ws@8.18.3: resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} engines: {node: '>=10.0.0'} @@ -11934,10 +10971,6 @@ packages: resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} engines: {node: '>=18'} - xdg-basedir@4.0.0: - resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} - engines: {node: '>=8'} - xhr2@0.2.1: resolution: {integrity: sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==} engines: {node: '>= 6'} @@ -11949,10 +10982,6 @@ packages: xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -11972,10 +11001,6 @@ packages: engines: {node: '>= 14.6'} hasBin: true - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -11984,10 +11009,6 @@ packages: resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} - yargs@16.2.2: - resolution: {integrity: sha512-Nt9ZJjXTv5R8MHbqby/wXQ6Gi0Bb3TcYZkR1bzuL4yB2OxWPkXknz513gEF0GoA6tn00UpbPvERW8rzCuWCA6w==} - engines: {node: '>=10'} - yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} @@ -12008,10 +11029,6 @@ packages: resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} engines: {node: '>=18'} - zip-stream@6.0.1: - resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} - engines: {node: '>= 14'} - zod-to-json-schema@3.24.6: resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==} peerDependencies: @@ -12659,26 +11676,7 @@ snapshots: '@angular/compiler': 20.3.25 zone.js: 0.15.1 - '@angular/fire@20.0.1(c586ea394f2585d229502db3b5133a2e)': - dependencies: - '@angular-devkit/schematics': 20.3.7(chokidar@4.0.3) - '@angular/common': 20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 20.3.21(@angular/animations@20.3.21(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)) - '@angular/platform-browser-dynamic': 20.3.21(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.3.25)(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.21(@angular/animations@20.3.21(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))) - '@schematics/angular': 20.3.7(chokidar@4.0.3) - firebase: 11.10.0 - rxfire: 6.1.0(firebase@11.10.0)(rxjs@7.8.2) - rxjs: 7.8.2 - tslib: 2.8.1 - optionalDependencies: - '@angular/platform-server': 20.3.25(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.3.25)(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.21(@angular/animations@20.3.21(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) - firebase-tools: 14.15.2(@types/node@24.9.2)(encoding@0.1.13) - transitivePeerDependencies: - - '@react-native-async-storage/async-storage' - - chokidar - - '@angular/fire@20.0.1(c610c615b258e4a2e05e35c7c07ea289)': + '@angular/fire@20.0.1(224a9fe38983fbc914b248dcbaf6f32b)': dependencies: '@angular-devkit/schematics': 20.3.7(chokidar@4.0.3) '@angular/common': 20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) @@ -12692,7 +11690,6 @@ snapshots: tslib: 2.8.1 optionalDependencies: '@angular/platform-server': 20.3.25(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.3.25)(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.21(@angular/animations@20.3.21(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) - firebase-tools: 14.15.2(@types/node@20.19.24)(encoding@0.1.13) transitivePeerDependencies: - '@react-native-async-storage/async-storage' - chokidar @@ -12752,14 +11749,6 @@ snapshots: '@antfu/utils@0.7.10': {} - '@apidevtools/json-schema-ref-parser@9.1.2': - dependencies: - '@jsdevtools/ono': 7.1.3 - '@types/json-schema': 7.0.15 - call-me-maybe: 1.0.2 - js-yaml: 4.1.0 - optional: true - '@asamuzakjp/css-color@3.2.0': dependencies: '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) @@ -13736,12 +12725,6 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} - '@colors/colors@1.5.0': - optional: true - - '@colors/colors@1.6.0': - optional: true - '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 @@ -13766,28 +12749,10 @@ snapshots: '@csstools/css-tokenizer@3.0.4': {} - '@dabh/diagnostics@2.0.8': - dependencies: - '@so-ric/colorspace': 1.1.6 - enabled: 2.0.0 - kuler: 2.0.0 - optional: true - '@date-fns/tz@1.4.1': {} '@discoveryjs/json-ext@0.6.3': {} - '@electric-sql/pglite-tools@0.2.21(@electric-sql/pglite@0.3.16)': - dependencies: - '@electric-sql/pglite': 0.3.16 - optional: true - - '@electric-sql/pglite@0.2.17': - optional: true - - '@electric-sql/pglite@0.3.16': - optional: true - '@emnapi/core@1.6.0': dependencies: '@emnapi/wasi-threads': 1.1.0 @@ -14106,9 +13071,9 @@ snapshots: '@fastify/busboy@3.2.0': {} - '@firebase-oss/ui-angular@file:packages/angular(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/fire@20.0.1(c610c615b258e4a2e05e35c7c07ea289))': + '@firebase-oss/ui-angular@file:packages/angular(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/fire@20.0.1(224a9fe38983fbc914b248dcbaf6f32b))': dependencies: - '@angular/fire': 20.0.1(c610c615b258e4a2e05e35c7c07ea289) + '@angular/fire': 20.0.1(224a9fe38983fbc914b248dcbaf6f32b) '@firebase-oss/ui-core': link:packages/core '@firebase-oss/ui-styles': link:packages/styles '@tanstack/angular-form': 1.23.8(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)) @@ -14455,16 +13420,6 @@ snapshots: '@gar/promise-retry@1.0.3': {} - '@google-cloud/cloud-sql-connector@1.11.2': - dependencies: - '@googleapis/sqladmin': 37.0.0 - gaxios: 7.1.5 - google-auth-library: 10.9.0 - p-throttle: 7.0.0 - transitivePeerDependencies: - - supports-color - optional: true - '@google-cloud/firestore@7.11.6(encoding@0.1.13)': dependencies: '@opentelemetry/api': 1.9.0 @@ -14483,36 +13438,12 @@ snapshots: extend: 3.0.2 optional: true - '@google-cloud/precise-date@4.0.0': - optional: true - '@google-cloud/projectify@4.0.0': optional: true '@google-cloud/promisify@4.0.0': optional: true - '@google-cloud/pubsub@4.11.0(encoding@0.1.13)': - dependencies: - '@google-cloud/paginator': 5.0.2 - '@google-cloud/precise-date': 4.0.0 - '@google-cloud/projectify': 4.0.0 - '@google-cloud/promisify': 4.0.0 - '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.30.0 - arrify: 2.0.1 - extend: 3.0.2 - google-auth-library: 9.15.1(encoding@0.1.13) - google-gax: 4.6.1(encoding@0.1.13) - heap-js: 2.7.1 - is-stream-ended: 0.1.4 - lodash.snakecase: 4.1.1 - p-defer: 3.0.0 - transitivePeerDependencies: - - encoding - - supports-color - optional: true - '@google-cloud/storage@7.18.0(encoding@0.1.13)': dependencies: '@google-cloud/paginator': 5.0.2 @@ -14535,13 +13466,6 @@ snapshots: - supports-color optional: true - '@googleapis/sqladmin@37.0.0': - dependencies: - googleapis-common: 8.0.2 - transitivePeerDependencies: - - supports-color - optional: true - '@grpc/grpc-js@1.14.3': dependencies: '@grpc/proto-loader': 0.8.0 @@ -15238,9 +14162,6 @@ snapshots: '@js-sdsl/ordered-map@4.4.2': optional: true - '@jsdevtools/ono@7.1.3': - optional: true - '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': dependencies: tslib: 2.8.1 @@ -15333,29 +14254,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@modelcontextprotocol/sdk@1.26.0(zod@3.25.76)': - dependencies: - '@hono/node-server': 1.19.14(hono@4.12.18) - ajv: 8.18.0 - ajv-formats: 3.0.1(ajv@8.18.0) - content-type: 1.0.5 - cors: 2.8.5 - cross-spawn: 7.0.6 - eventsource: 3.0.7 - eventsource-parser: 3.0.6 - express: 5.2.1 - express-rate-limit: 8.5.2(express@5.2.1) - hono: 4.12.18 - jose: 6.2.3 - json-schema-typed: 8.0.2 - pkce-challenge: 5.0.0 - raw-body: 3.0.1 - zod: 3.25.76 - zod-to-json-schema: 3.25.2(zod@3.25.76) - transitivePeerDependencies: - - supports-color - optional: true - '@modelcontextprotocol/sdk@1.26.0(zod@4.1.13)': dependencies: '@hono/node-server': 1.19.14(hono@4.12.18) @@ -15605,9 +14503,6 @@ snapshots: '@opentelemetry/api@1.9.0': optional: true - '@opentelemetry/semantic-conventions@1.30.0': - optional: true - '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -15739,22 +14634,7 @@ snapshots: dependencies: playwright: 1.61.1 - '@pnpm/config.env-replace@1.1.0': - optional: true - - '@pnpm/network.ca-file@1.0.2': - dependencies: - graceful-fs: 4.2.10 - optional: true - - '@pnpm/npm-conf@3.0.3': - dependencies: - '@pnpm/config.env-replace': 1.1.0 - '@pnpm/network.ca-file': 1.0.2 - config-chain: 1.1.13 - optional: true - - '@polka/url@1.0.0-next.29': {} + '@polka/url@1.0.0-next.29': {} '@protobufjs/aspromise@1.1.2': {} @@ -16730,9 +15610,6 @@ snapshots: '@sinclair/typebox@0.34.41': {} - '@sindresorhus/is@4.6.0': - optional: true - '@sinonjs/commons@3.0.1': dependencies: type-detect: 4.0.8 @@ -16741,12 +15618,6 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 - '@so-ric/colorspace@1.1.6': - dependencies: - color: 5.0.3 - text-hex: 1.0.0 - optional: true - '@standard-schema/utils@0.3.0': {} '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.28.5)': @@ -17006,9 +15877,6 @@ snapshots: '@tootallnate/once@2.0.0': optional: true - '@tootallnate/quickjs-emscripten@0.23.0': - optional: true - '@ts-morph/common@0.19.0': dependencies: fast-glob: 3.3.3 @@ -17271,9 +16139,6 @@ snapshots: '@types/tough-cookie@4.0.5': {} - '@types/triple-beam@1.3.5': - optional: true - '@types/ws@8.18.1': dependencies: '@types/node': 20.19.24 @@ -17624,9 +16489,6 @@ snapshots: abbrev@4.0.0: {} - abbrev@5.0.0: - optional: true - abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -17743,11 +16605,6 @@ snapshots: - chokidar - supports-color - ansi-align@3.0.1: - dependencies: - string-width: 4.2.3 - optional: true - ansi-colors@4.1.3: {} ansi-escapes@4.3.2: @@ -17779,32 +16636,6 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.2 - archiver-utils@5.0.2: - dependencies: - glob: 10.4.5 - graceful-fs: 4.2.11 - is-stream: 2.0.1 - lazystream: 1.0.1 - lodash: 4.17.21 - normalize-path: 3.0.0 - readable-stream: 4.7.0 - optional: true - - archiver@7.0.1: - dependencies: - archiver-utils: 5.0.2 - async: 3.2.6 - buffer-crc32: 1.0.0 - readable-stream: 4.7.0 - readdir-glob: 1.1.3 - tar-stream: 3.2.0 - zip-stream: 6.0.1 - transitivePeerDependencies: - - bare-abort-controller - - bare-buffer - - react-native-b4a - optional: true - arg@4.1.3: {} arg@5.0.2: {} @@ -17887,16 +16718,8 @@ snapshots: arrify@2.0.1: optional: true - as-array@2.0.0: - optional: true - assertion-error@2.0.1: {} - ast-types@0.13.4: - dependencies: - tslib: 2.8.1 - optional: true - ast-types@0.16.1: dependencies: tslib: 2.8.1 @@ -17911,17 +16734,11 @@ snapshots: async-function@1.0.0: {} - async-lock@1.4.1: - optional: true - async-retry@1.3.3: dependencies: retry: 0.13.1 optional: true - async@3.2.6: - optional: true - asynckit@0.4.0: {} autoprefixer@10.4.21(postcss@8.5.12): @@ -17940,9 +16757,6 @@ snapshots: axobject-query@4.1.0: {} - b4a@1.8.1: - optional: true - babel-jest@30.2.0(@babel/core@7.29.0): dependencies: '@babel/core': 7.29.0 @@ -18029,64 +16843,12 @@ snapshots: balanced-match@4.0.4: {} - bare-events@2.9.1: - optional: true - - bare-fs@4.7.2: - dependencies: - bare-events: 2.9.1 - bare-path: 3.0.1 - bare-stream: 2.13.3(bare-events@2.9.1) - bare-url: 2.4.5 - fast-fifo: 1.3.2 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - optional: true - - bare-os@3.9.3: - optional: true - - bare-path@3.0.1: - dependencies: - bare-os: 3.9.3 - optional: true - - bare-stream@2.13.3(bare-events@2.9.1): - dependencies: - b4a: 1.8.1 - streamx: 2.28.0 - teex: 1.0.1 - optionalDependencies: - bare-events: 2.9.1 - transitivePeerDependencies: - - react-native-b4a - optional: true - - bare-url@2.4.5: - dependencies: - bare-path: 3.0.1 - optional: true - base64-js@1.5.1: {} baseline-browser-mapping@2.10.10: {} baseline-browser-mapping@2.8.20: {} - basic-auth-connect@1.1.0: - dependencies: - tsscmp: 1.0.6 - optional: true - - basic-auth@2.0.1: - dependencies: - safe-buffer: 5.1.2 - optional: true - - basic-ftp@5.3.1: - optional: true - batch@0.6.1: {} beasties@0.3.5: @@ -18106,13 +16868,6 @@ snapshots: binary-extensions@2.3.0: {} - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - optional: true - bl@5.1.0: dependencies: buffer: 6.0.3 @@ -18171,18 +16926,6 @@ snapshots: boolbase@1.0.0: {} - boxen@5.1.2: - dependencies: - ansi-align: 3.0.1 - camelcase: 6.3.0 - chalk: 4.1.2 - cli-boxes: 2.2.1 - string-width: 4.2.3 - type-fest: 0.20.2 - widest-line: 3.1.0 - wrap-ansi: 7.0.0 - optional: true - brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -18224,19 +16967,10 @@ snapshots: dependencies: node-int64: 0.4.0 - buffer-crc32@1.0.0: - optional: true - buffer-equal-constant-time@1.0.1: {} buffer-from@1.1.2: {} - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - optional: true - buffer@6.0.3: dependencies: base64-js: 1.5.1 @@ -18285,9 +17019,6 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 - call-me-maybe@1.0.2: - optional: true - callsites@3.1.0: {} camelcase@5.3.1: {} @@ -18335,37 +17066,18 @@ snapshots: dependencies: readdirp: 4.1.2 - chownr@2.0.0: - optional: true - chownr@3.0.0: {} chrome-trace-event@1.0.4: {} - ci-info@2.0.0: - optional: true - ci-info@4.3.1: {} cjs-module-lexer@2.1.0: {} - cjson@0.3.3: - dependencies: - json-parse-helpfulerror: 1.0.3 - optional: true - class-variance-authority@0.7.1: dependencies: clsx: 2.1.1 - cli-boxes@2.2.1: - optional: true - - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 - optional: true - cli-cursor@4.0.0: dependencies: restore-cursor: 4.0.0 @@ -18374,25 +17086,8 @@ snapshots: dependencies: restore-cursor: 5.1.0 - cli-highlight@2.1.11: - dependencies: - chalk: 4.1.2 - highlight.js: 10.7.3 - mz: 2.7.0 - parse5: 5.1.1 - parse5-htmlparser2-tree-adapter: 6.0.1 - yargs: 16.2.2 - optional: true - cli-spinners@2.9.2: {} - cli-table3@0.6.5: - dependencies: - string-width: 4.2.3 - optionalDependencies: - '@colors/colors': 1.5.0 - optional: true - cli-truncate@4.0.0: dependencies: slice-ansi: 5.0.0 @@ -18402,13 +17097,6 @@ snapshots: client-only@0.0.1: {} - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - optional: true - cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -18453,27 +17141,8 @@ snapshots: dependencies: color-name: 1.1.4 - color-convert@3.1.3: - dependencies: - color-name: 2.1.0 - optional: true - color-name@1.1.4: {} - color-name@2.1.0: - optional: true - - color-string@2.1.4: - dependencies: - color-name: 2.1.0 - optional: true - - color@5.0.3: - dependencies: - color-convert: 3.1.3 - color-string: 2.1.4 - optional: true - colorette@2.0.20: {} combined-stream@1.0.8: @@ -18488,20 +17157,8 @@ snapshots: commander@4.1.1: {} - commander@5.1.0: - optional: true - common-path-prefix@3.0.0: {} - compress-commons@6.0.2: - dependencies: - crc-32: 1.2.2 - crc32-stream: 6.0.0 - is-stream: 2.0.1 - normalize-path: 3.0.0 - readable-stream: 4.7.0 - optional: true - compressible@2.0.18: dependencies: mime-db: 1.54.0 @@ -18522,34 +17179,8 @@ snapshots: confbox@0.1.8: {} - config-chain@1.1.13: - dependencies: - ini: 1.3.8 - proto-list: 1.2.4 - optional: true - - configstore@5.0.1: - dependencies: - dot-prop: 5.3.0 - graceful-fs: 4.2.11 - make-dir: 3.1.0 - unique-string: 2.0.0 - write-file-atomic: 3.0.3 - xdg-basedir: 4.0.0 - optional: true - connect-history-api-fallback@2.0.0: {} - connect@3.7.0: - dependencies: - debug: 2.6.9 - finalhandler: 1.1.2 - parseurl: 1.3.3 - utils-merge: 1.0.1 - transitivePeerDependencies: - - supports-color - optional: true - consola@3.4.2: {} content-disposition@0.5.4: @@ -18618,31 +17249,14 @@ snapshots: optionalDependencies: typescript: 5.9.3 - crc-32@1.2.2: - optional: true - - crc32-stream@6.0.0: - dependencies: - crc-32: 1.2.2 - readable-stream: 4.7.0 - optional: true - create-require@1.1.1: {} - cross-env@7.0.3: - dependencies: - cross-spawn: 7.0.6 - optional: true - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - crypto-random-string@2.0.0: - optional: true - css-loader@7.1.2(webpack@5.105.0(esbuild@0.28.0)): dependencies: icss-utils: 5.1.0(postcss@8.5.14) @@ -18679,9 +17293,6 @@ snapshots: csstype@3.2.3: {} - csv-parse@5.6.0: - optional: true - cva@1.0.0-beta.4(typescript@5.9.3): dependencies: clsx: 2.1.1 @@ -18728,9 +17339,6 @@ snapshots: data-uri-to-buffer@4.0.1: {} - data-uri-to-buffer@6.0.2: - optional: true - data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 @@ -18762,11 +17370,6 @@ snapshots: dependencies: ms: 2.0.0 - debug@4.3.1: - dependencies: - ms: 2.1.2 - optional: true - debug@4.4.3: dependencies: ms: 2.1.3 @@ -18781,17 +17384,6 @@ snapshots: deep-eql@5.0.2: {} - deep-equal-in-any-order@2.2.0: - dependencies: - sort-any: 4.0.7 - optional: true - - deep-extend@0.6.0: - optional: true - - deep-freeze@0.0.1: - optional: true - deep-is@0.1.4: {} deepmerge@4.3.1: {} @@ -18821,13 +17413,6 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 - degenerator@5.0.1: - dependencies: - ast-types: 0.13.4 - escodegen: 2.1.0 - esprima: 4.0.1 - optional: true - delayed-stream@1.0.0: {} depd@1.1.2: {} @@ -18857,9 +17442,6 @@ snapshots: diff@5.2.0: {} - discontinuous-range@1.0.0: - optional: true - dns-packet@5.6.1: dependencies: '@leichtgewicht/ip-codec': 2.0.5 @@ -18900,11 +17482,6 @@ snapshots: no-case: 3.0.4 tslib: 2.8.1 - dot-prop@5.3.0: - dependencies: - is-obj: 2.0.0 - optional: true - dotenv@16.6.1: {} dunder-proto@1.0.1: @@ -18953,14 +17530,8 @@ snapshots: emoji-regex@9.2.2: {} - emojilib@2.4.0: - optional: true - emojis-list@3.0.0: {} - enabled@2.0.0: - optional: true - encodeurl@1.0.2: {} encodeurl@2.0.0: {} @@ -19202,24 +17773,12 @@ snapshots: escalade@3.2.0: {} - escape-goat@2.1.1: - optional: true - escape-html@1.0.3: {} escape-string-regexp@2.0.0: {} escape-string-regexp@4.0.0: {} - escodegen@2.1.0: - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - optional: true - eslint-config-prettier@9.1.2(eslint@9.38.0(jiti@2.6.1)): dependencies: eslint: 9.38.0(jiti@2.6.1) @@ -19356,16 +17915,6 @@ snapshots: eventemitter3@5.0.1: {} - events-listener@1.1.0: - optional: true - - events-universal@1.0.1: - dependencies: - bare-events: 2.9.1 - transitivePeerDependencies: - - bare-abort-controller - optional: true - events@3.3.0: {} eventsource-parser@3.0.6: {} @@ -19398,35 +17947,6 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 3.0.0 - exegesis-express@4.0.0: - dependencies: - exegesis: 4.3.0 - transitivePeerDependencies: - - supports-color - optional: true - - exegesis@4.3.0: - dependencies: - '@apidevtools/json-schema-ref-parser': 9.1.2 - ajv: 8.18.0 - ajv-formats: 2.1.1(ajv@8.18.0) - body-parser: 1.20.3 - content-type: 1.0.5 - deep-freeze: 0.0.1 - events-listener: 1.1.0 - glob: 10.4.5 - json-ptr: 3.1.1 - json-schema-traverse: 1.0.0 - lodash: 4.17.21 - openapi3-ts: 3.2.0 - promise-breaker: 6.0.0 - qs: 6.15.1 - raw-body: 2.5.2 - semver: 7.7.4 - transitivePeerDependencies: - - supports-color - optional: true - exit-x@0.2.2: {} expect-type@1.2.2: {} @@ -19598,9 +18118,6 @@ snapshots: fast-equals@5.3.2: {} - fast-fifo@1.3.2: - optional: true - fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -19636,9 +18153,6 @@ snapshots: optionalDependencies: picomatch: 4.0.4 - fecha@4.2.3: - optional: true - fetch-blob@3.2.0: dependencies: node-domexception: 1.0.0 @@ -19650,26 +18164,10 @@ snapshots: dependencies: flat-cache: 4.0.1 - filesize@6.4.0: - optional: true - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 - finalhandler@1.1.2: - dependencies: - debug: 2.6.9 - encodeurl: 1.0.2 - escape-html: 1.0.3 - on-finished: 2.3.0 - parseurl: 1.3.3 - statuses: 1.5.0 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - optional: true - finalhandler@1.3.1: dependencies: debug: 2.6.9 @@ -19730,185 +18228,7 @@ snapshots: - encoding - supports-color - firebase-tools@14.15.2(@types/node@20.19.24)(encoding@0.1.13): - dependencies: - '@electric-sql/pglite': 0.3.16 - '@electric-sql/pglite-tools': 0.2.21(@electric-sql/pglite@0.3.16) - '@google-cloud/cloud-sql-connector': 1.11.2 - '@google-cloud/pubsub': 4.11.0(encoding@0.1.13) - '@inquirer/prompts': 7.8.2(@types/node@20.19.24) - '@modelcontextprotocol/sdk': 1.26.0(zod@3.25.76) - abort-controller: 3.0.0 - ajv: 8.18.0 - ajv-formats: 3.0.1(ajv@8.18.0) - archiver: 7.0.1 - async-lock: 1.4.1 - body-parser: 1.20.3 - chokidar: 3.6.0 - cjson: 0.3.3 - cli-table3: 0.6.5 - colorette: 2.0.20 - commander: 5.1.0 - configstore: 5.0.1 - cors: 2.8.5 - cross-env: 7.0.3 - cross-spawn: 7.0.6 - csv-parse: 5.6.0 - deep-equal-in-any-order: 2.2.0 - exegesis: 4.3.0 - exegesis-express: 4.0.0 - express: 4.22.1 - filesize: 6.4.0 - form-data: 4.0.4 - fs-extra: 10.1.0 - fuzzy: 0.1.3 - gaxios: 6.7.1(encoding@0.1.13) - glob: 10.4.5 - google-auth-library: 9.15.1(encoding@0.1.13) - ignore: 7.0.5 - js-yaml: 3.14.1 - jsonwebtoken: 9.0.3 - leven: 3.1.0 - libsodium-wrappers: 0.7.16 - lodash: 4.17.21 - lsofi: 1.0.0 - marked: 13.0.3 - marked-terminal: 7.3.0(marked@13.0.3) - mime: 2.6.0 - minimatch: 3.1.2 - morgan: 1.11.0 - node-fetch: 2.7.0(encoding@0.1.13) - open: 6.4.0 - ora: 5.4.1 - p-limit: 3.1.0 - pg: 8.22.0 - pg-gateway: 0.3.0-beta.4 - pglite-2: '@electric-sql/pglite@0.2.17' - portfinder: 1.0.38 - progress: 2.0.3 - proxy-agent: 6.5.0 - retry: 0.13.1 - semver: 7.7.4 - sql-formatter: 15.8.2 - stream-chain: 2.2.5 - stream-json: 1.9.1 - superstatic: 9.2.0(encoding@0.1.13) - tar: 6.2.1 - tcp-port-used: 1.0.3 - tmp: 0.2.7 - triple-beam: 1.4.1 - universal-analytics: 0.5.4 - update-notifier-cjs: 5.1.7(encoding@0.1.13) - uuid: 8.3.2 - winston: 3.19.0 - winston-transport: 4.9.0 - ws: 7.5.11 - yaml: 2.9.0 - zod: 3.25.76 - zod-to-json-schema: 3.25.2(zod@3.25.76) - transitivePeerDependencies: - - '@cfworker/json-schema' - - '@types/node' - - bare-abort-controller - - bare-buffer - - bufferutil - - encoding - - pg-native - - react-native-b4a - - supports-color - - utf-8-validate - optional: true - - firebase-tools@14.15.2(@types/node@24.9.2)(encoding@0.1.13): - dependencies: - '@electric-sql/pglite': 0.3.16 - '@electric-sql/pglite-tools': 0.2.21(@electric-sql/pglite@0.3.16) - '@google-cloud/cloud-sql-connector': 1.11.2 - '@google-cloud/pubsub': 4.11.0(encoding@0.1.13) - '@inquirer/prompts': 7.8.2(@types/node@24.9.2) - '@modelcontextprotocol/sdk': 1.26.0(zod@3.25.76) - abort-controller: 3.0.0 - ajv: 8.18.0 - ajv-formats: 3.0.1(ajv@8.18.0) - archiver: 7.0.1 - async-lock: 1.4.1 - body-parser: 1.20.3 - chokidar: 3.6.0 - cjson: 0.3.3 - cli-table3: 0.6.5 - colorette: 2.0.20 - commander: 5.1.0 - configstore: 5.0.1 - cors: 2.8.5 - cross-env: 7.0.3 - cross-spawn: 7.0.6 - csv-parse: 5.6.0 - deep-equal-in-any-order: 2.2.0 - exegesis: 4.3.0 - exegesis-express: 4.0.0 - express: 4.22.1 - filesize: 6.4.0 - form-data: 4.0.4 - fs-extra: 10.1.0 - fuzzy: 0.1.3 - gaxios: 6.7.1(encoding@0.1.13) - glob: 10.4.5 - google-auth-library: 9.15.1(encoding@0.1.13) - ignore: 7.0.5 - js-yaml: 3.14.1 - jsonwebtoken: 9.0.3 - leven: 3.1.0 - libsodium-wrappers: 0.7.16 - lodash: 4.17.21 - lsofi: 1.0.0 - marked: 13.0.3 - marked-terminal: 7.3.0(marked@13.0.3) - mime: 2.6.0 - minimatch: 3.1.2 - morgan: 1.11.0 - node-fetch: 2.7.0(encoding@0.1.13) - open: 6.4.0 - ora: 5.4.1 - p-limit: 3.1.0 - pg: 8.22.0 - pg-gateway: 0.3.0-beta.4 - pglite-2: '@electric-sql/pglite@0.2.17' - portfinder: 1.0.38 - progress: 2.0.3 - proxy-agent: 6.5.0 - retry: 0.13.1 - semver: 7.7.4 - sql-formatter: 15.8.2 - stream-chain: 2.2.5 - stream-json: 1.9.1 - superstatic: 9.2.0(encoding@0.1.13) - tar: 6.2.1 - tcp-port-used: 1.0.3 - tmp: 0.2.7 - triple-beam: 1.4.1 - universal-analytics: 0.5.4 - update-notifier-cjs: 5.1.7(encoding@0.1.13) - uuid: 8.3.2 - winston: 3.19.0 - winston-transport: 4.9.0 - ws: 7.5.11 - yaml: 2.9.0 - zod: 3.25.76 - zod-to-json-schema: 3.25.2(zod@3.25.76) - transitivePeerDependencies: - - '@cfworker/json-schema' - - '@types/node' - - bare-abort-controller - - bare-buffer - - bufferutil - - encoding - - pg-native - - react-native-b4a - - supports-color - - utf-8-validate - optional: true - - firebase@11.10.0: + firebase@11.10.0: dependencies: '@firebase/ai': 1.4.1(@firebase/app-types@0.9.3)(@firebase/app@0.13.2) '@firebase/analytics': 0.10.17(@firebase/app@0.13.2) @@ -19956,9 +18276,6 @@ snapshots: flatted@3.3.3: {} - fn.name@1.1.0: - optional: true - follow-redirects@1.15.11(debug@4.4.3): optionalDependencies: debug: 4.4.3 @@ -20002,24 +18319,12 @@ snapshots: fresh@2.0.0: {} - fs-extra@10.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.2.0 - universalify: 2.0.1 - optional: true - fs-extra@11.3.2: dependencies: graceful-fs: 4.2.11 jsonfile: 6.2.0 universalify: 2.0.1 - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - optional: true - fs-minipass@3.0.3: dependencies: minipass: 7.1.3 @@ -20048,9 +18353,6 @@ snapshots: functions-have-names@1.2.3: {} - fuzzy@0.1.3: - optional: true - gaxios@6.7.1(encoding@0.1.13): dependencies: extend: 3.0.2 @@ -20062,25 +18364,6 @@ snapshots: - encoding - supports-color - gaxios@7.1.3: - dependencies: - extend: 3.0.2 - https-proxy-agent: 7.0.6 - node-fetch: 3.3.2 - rimraf: 5.0.10 - transitivePeerDependencies: - - supports-color - optional: true - - gaxios@7.1.5: - dependencies: - extend: 3.0.2 - https-proxy-agent: 7.0.6 - node-fetch: 3.3.2 - transitivePeerDependencies: - - supports-color - optional: true - gcp-metadata@6.1.1(encoding@0.1.13): dependencies: gaxios: 6.7.1(encoding@0.1.13) @@ -20090,24 +18373,6 @@ snapshots: - encoding - supports-color - gcp-metadata@8.1.2: - dependencies: - gaxios: 7.1.5 - google-logging-utils: 1.1.3 - json-bigint: 1.0.0 - transitivePeerDependencies: - - supports-color - optional: true - - gcp-metadata@8.1.3: - dependencies: - gaxios: 7.1.3 - google-logging-utils: 1.1.3 - json-bigint: 1.0.0 - transitivePeerDependencies: - - supports-color - optional: true - generator-function@2.0.1: {} gensync@1.0.0-beta.2: {} @@ -20152,15 +18417,6 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 - get-uri@6.0.5: - dependencies: - basic-ftp: 5.3.1 - data-uri-to-buffer: 6.0.2 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - optional: true - glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -20169,16 +18425,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-slash@1.0.0: - optional: true - - glob-slasher@1.0.1: - dependencies: - glob-slash: 1.0.0 - lodash.isobject: 2.4.1 - toxic: 1.0.1 - optional: true - glob-to-regex.js@1.2.0(tslib@2.8.1): dependencies: tslib: 2.8.1 @@ -20218,11 +18464,6 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - global-dirs@3.0.1: - dependencies: - ini: 2.0.0 - optional: true - globals@14.0.0: {} globals@16.4.0: {} @@ -20232,31 +18473,6 @@ snapshots: define-properties: 1.2.1 gopd: 1.2.0 - google-auth-library@10.5.0: - dependencies: - base64-js: 1.5.1 - ecdsa-sig-formatter: 1.0.11 - gaxios: 7.1.5 - gcp-metadata: 8.1.3 - google-logging-utils: 1.1.3 - gtoken: 8.0.0 - jws: 4.0.1 - transitivePeerDependencies: - - supports-color - optional: true - - google-auth-library@10.9.0: - dependencies: - base64-js: 1.5.1 - ecdsa-sig-formatter: 1.0.11 - gaxios: 7.1.5 - gcp-metadata: 8.1.2 - google-logging-utils: 1.1.3 - jws: 4.0.1 - transitivePeerDependencies: - - supports-color - optional: true - google-auth-library@9.15.1(encoding@0.1.13): dependencies: base64-js: 1.5.1 @@ -20290,26 +18506,8 @@ snapshots: google-logging-utils@0.0.2: {} - google-logging-utils@1.1.3: - optional: true - - googleapis-common@8.0.2: - dependencies: - extend: 3.0.2 - gaxios: 7.1.3 - google-auth-library: 10.5.0 - google-logging-utils: 1.1.3 - qs: 6.15.1 - url-template: 2.0.8 - transitivePeerDependencies: - - supports-color - optional: true - gopd@1.2.0: {} - graceful-fs@4.2.10: - optional: true - graceful-fs@4.2.11: {} graphemer@1.4.0: {} @@ -20324,14 +18522,6 @@ snapshots: - encoding - supports-color - gtoken@8.0.0: - dependencies: - gaxios: 7.1.5 - jws: 4.0.1 - transitivePeerDependencies: - - supports-color - optional: true - handle-thing@2.0.1: {} handlebars@4.7.8: @@ -20361,21 +18551,12 @@ snapshots: dependencies: has-symbols: 1.1.0 - has-yarn@2.1.0: - optional: true - hasown@2.0.2: dependencies: function-bind: 1.1.2 headers-polyfill@4.0.3: {} - heap-js@2.7.1: - optional: true - - highlight.js@10.7.3: - optional: true - hono@4.12.18: {} hosted-git-info@9.0.2: @@ -20546,9 +18727,6 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - import-lazy@2.1.0: - optional: true - import-local@3.2.0: dependencies: pkg-dir: 4.2.0 @@ -20567,12 +18745,6 @@ snapshots: inherits@2.0.4: {} - ini@1.3.8: - optional: true - - ini@2.0.0: - optional: true - ini@5.0.0: {} ini@6.0.0: {} @@ -20586,9 +18758,6 @@ snapshots: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - install-artifact-from-github@1.6.0: - optional: true - internal-slot@1.1.0: dependencies: es-errors: 1.3.0 @@ -20599,9 +18768,6 @@ snapshots: ip-address@10.2.0: {} - ip-regex@2.1.0: - optional: true - ipaddr.js@1.9.1: {} ipaddr.js@2.2.0: {} @@ -20635,16 +18801,8 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-buffer@1.1.6: - optional: true - is-callable@1.2.7: {} - is-ci@2.0.0: - dependencies: - ci-info: 2.0.0 - optional: true - is-core-module@2.16.1: dependencies: hasown: 2.0.2 @@ -20694,15 +18852,6 @@ snapshots: dependencies: is-docker: 3.0.0 - is-installed-globally@0.4.0: - dependencies: - global-dirs: 3.0.1 - is-path-inside: 3.0.3 - optional: true - - is-interactive@1.0.0: - optional: true - is-interactive@2.0.0: {} is-map@2.0.3: {} @@ -20713,29 +18862,15 @@ snapshots: is-node-process@1.2.0: {} - is-npm@5.0.0: - optional: true - is-number-object@1.1.1: dependencies: call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-number@2.1.0: - dependencies: - kind-of: 3.2.2 - optional: true - is-number@7.0.0: {} - is-obj@2.0.0: - optional: true - is-obj@3.0.0: {} - is-path-inside@3.0.3: - optional: true - is-plain-obj@3.0.0: {} is-plain-object@2.0.4: @@ -20763,9 +18898,6 @@ snapshots: dependencies: call-bound: 1.0.4 - is-stream-ended@0.1.4: - optional: true - is-stream@2.0.1: {} is-stream@3.0.0: {} @@ -20785,19 +18917,10 @@ snapshots: dependencies: which-typed-array: 1.1.19 - is-typedarray@1.0.0: - optional: true - - is-unicode-supported@0.1.0: - optional: true - is-unicode-supported@1.3.0: {} is-unicode-supported@2.1.0: {} - is-url@1.2.4: - optional: true - is-weakmap@2.0.2: {} is-weakref@1.1.1: @@ -20811,26 +18934,10 @@ snapshots: is-what@3.14.1: {} - is-wsl@1.1.0: - optional: true - is-wsl@3.1.0: dependencies: is-inside-container: 1.0.0 - is-yarn-global@0.3.0: - optional: true - - is2@2.0.1: - dependencies: - deep-is: 0.1.4 - ip-regex: 2.1.0 - is-url: 1.2.4 - optional: true - - isarray@0.0.1: - optional: true - isarray@1.0.0: {} isarray@2.0.5: {} @@ -20841,14 +18948,6 @@ snapshots: isobject@3.0.1: {} - isomorphic-fetch@3.0.0(encoding@0.1.13): - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - whatwg-fetch: 3.6.20 - transitivePeerDependencies: - - encoding - optional: true - istanbul-lib-coverage@3.2.2: {} istanbul-lib-instrument@6.0.3: @@ -21358,16 +19457,6 @@ snapshots: jiti@2.6.1: {} - jju@1.4.0: - optional: true - - join-path@1.1.1: - dependencies: - as-array: 2.0.0 - url-join: 0.0.1 - valid-url: 1.0.9 - optional: true - jose@4.15.9: {} jose@6.2.3: {} @@ -21454,14 +19543,6 @@ snapshots: json-parse-even-better-errors@5.0.0: {} - json-parse-helpfulerror@1.0.3: - dependencies: - jju: 1.4.0 - optional: true - - json-ptr@3.1.1: - optional: true - json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -21531,30 +19612,17 @@ snapshots: dependencies: json-buffer: 3.0.1 - kind-of@3.2.2: - dependencies: - is-buffer: 1.1.6 - optional: true - kind-of@6.0.3: {} kleur@3.0.3: {} kleur@4.1.5: {} - kuler@2.0.0: - optional: true - launch-editor@2.12.0: dependencies: picocolors: 1.1.1 shell-quote: 1.8.3 - lazystream@1.0.1: - dependencies: - readable-stream: 2.3.8 - optional: true - less-loader@12.3.0(less@4.4.0)(webpack@5.105.0(esbuild@0.28.0)): dependencies: less: 4.4.0 @@ -21598,14 +19666,6 @@ snapshots: libphonenumber-js@1.12.25: {} - libsodium-wrappers@0.7.16: - dependencies: - libsodium: 0.7.16 - optional: true - - libsodium@0.7.16: - optional: true - license-webpack-plugin@4.0.2(webpack@5.105.0(esbuild@0.28.0)): dependencies: webpack-sources: 3.3.3 @@ -21713,9 +19773,6 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash._objecttypes@2.4.1: - optional: true - lodash.camelcase@4.3.0: {} lodash.clonedeep@4.5.0: {} @@ -21730,11 +19787,6 @@ snapshots: lodash.isnumber@3.0.3: {} - lodash.isobject@2.4.1: - dependencies: - lodash._objecttypes: 2.4.1 - optional: true - lodash.isplainobject@4.0.6: {} lodash.isstring@4.0.1: {} @@ -21745,21 +19797,12 @@ snapshots: lodash.once@4.1.1: {} - lodash.snakecase@4.1.1: - optional: true - lodash.sortby@4.7.0: {} lodash.truncate@4.4.2: {} lodash@4.17.21: {} - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - optional: true - log-symbols@5.1.0: dependencies: chalk: 5.6.2 @@ -21778,16 +19821,6 @@ snapshots: strip-ansi: 7.1.2 wrap-ansi: 9.0.2 - logform@2.7.0: - dependencies: - '@colors/colors': 1.6.0 - '@types/triple-beam': 1.3.5 - fecha: 4.2.3 - ms: 2.1.3 - safe-stable-stringify: 2.5.0 - triple-beam: 1.4.1 - optional: true - long@5.3.2: {} loose-envify@1.4.0: @@ -21812,20 +19845,11 @@ snapshots: dependencies: yallist: 4.0.0 - lru-cache@7.18.3: - optional: true - lru-memoizer@2.3.0: dependencies: lodash.clonedeep: 4.5.0 lru-cache: 6.0.0 - lsofi@1.0.0: - dependencies: - is-number: 2.1.0 - through2: 2.0.5 - optional: true - lucide-react@0.544.0(react@19.2.3): dependencies: react: 19.2.3 @@ -21852,11 +19876,6 @@ snapshots: semver: 5.7.2 optional: true - make-dir@3.1.0: - dependencies: - semver: 6.3.1 - optional: true - make-dir@4.0.0: dependencies: semver: 7.7.4 @@ -21884,21 +19903,6 @@ snapshots: dependencies: tmpl: 1.0.5 - marked-terminal@7.3.0(marked@13.0.3): - dependencies: - ansi-escapes: 7.1.1 - ansi-regex: 6.2.2 - chalk: 5.6.2 - cli-highlight: 2.1.11 - cli-table3: 0.6.5 - marked: 13.0.3 - node-emoji: 2.2.0 - supports-hyperlinks: 3.2.0 - optional: true - - marked@13.0.3: - optional: true - math-intrinsics@1.1.0: {} mdn-data@2.23.0: {} @@ -21945,9 +19949,6 @@ snapshots: mime@1.6.0: {} - mime@2.6.0: - optional: true - mime@3.0.0: optional: true @@ -21975,16 +19976,6 @@ snapshots: dependencies: brace-expansion: 1.1.12 - minimatch@5.1.9: - dependencies: - brace-expansion: 2.0.2 - optional: true - - minimatch@6.2.3: - dependencies: - brace-expansion: 2.0.2 - optional: true - minimatch@7.4.6: dependencies: brace-expansion: 2.0.2 @@ -22023,26 +20014,14 @@ snapshots: dependencies: yallist: 4.0.0 - minipass@5.0.0: - optional: true - minipass@7.1.2: {} minipass@7.1.3: {} - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - optional: true - minizlib@3.1.0: dependencies: minipass: 7.1.3 - mkdirp@1.0.4: - optional: true - mkdirp@2.1.6: {} mlly@1.8.0: @@ -22052,27 +20031,10 @@ snapshots: pkg-types: 1.3.1 ufo: 1.6.1 - moo@0.5.3: - optional: true - - morgan@1.11.0: - dependencies: - basic-auth: 2.0.1 - debug: 2.6.9 - depd: 2.0.0 - on-finished: 2.4.1 - on-headers: 1.1.0 - transitivePeerDependencies: - - supports-color - optional: true - mrmime@2.0.1: {} ms@2.0.0: {} - ms@2.1.2: - optional: true - ms@2.1.3: {} msgpackr-extract@3.0.3: @@ -22156,9 +20118,6 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nan@2.28.0: - optional: true - nanoid@3.3.11: {} nanostores@0.11.4: {} @@ -22169,14 +20128,6 @@ snapshots: natural-compare@1.4.0: {} - nearley@2.20.1: - dependencies: - commander: 2.20.3 - moo: 0.5.3 - railroad-diagrams: 1.0.0 - randexp: 0.4.6 - optional: true - needle@3.3.1: dependencies: iconv-lite: 0.6.3 @@ -22191,9 +20142,6 @@ snapshots: neo-async@2.6.2: {} - netmask@2.1.1: - optional: true - next-themes@0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: react: 19.2.3 @@ -22268,14 +20216,6 @@ snapshots: node-domexception@1.0.0: {} - node-emoji@2.2.0: - dependencies: - '@sindresorhus/is': 4.6.0 - char-regex: 1.0.2 - emojilib: 2.4.0 - skin-tone: 2.0.0 - optional: true - node-fetch@2.7.0(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 @@ -22308,31 +20248,12 @@ snapshots: undici: 6.25.0 which: 6.0.1 - node-gyp@13.0.0: - dependencies: - env-paths: 2.2.1 - exponential-backoff: 3.1.3 - graceful-fs: 4.2.11 - nopt: 10.0.1 - proc-log: 7.0.0 - semver: 7.7.4 - tar: 7.5.15 - tinyglobby: 0.2.17 - undici: 6.25.0 - which: 7.0.0 - optional: true - node-int64@0.4.0: {} node-releases@2.0.26: {} node-releases@2.0.36: {} - nopt@10.0.1: - dependencies: - abbrev: 5.0.0 - optional: true - nopt@9.0.0: dependencies: abbrev: 4.0.0 @@ -22438,11 +20359,6 @@ snapshots: obuf@1.1.2: {} - on-finished@2.3.0: - dependencies: - ee-first: 1.1.1 - optional: true - on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -22453,11 +20369,6 @@ snapshots: dependencies: wrappy: 1.0.2 - one-time@1.0.0: - dependencies: - fn.name: 1.1.0 - optional: true - onetime@5.1.2: dependencies: mimic-fn: 2.1.0 @@ -22477,16 +20388,6 @@ snapshots: is-inside-container: 1.0.0 wsl-utils: 0.1.0 - open@6.4.0: - dependencies: - is-wsl: 1.1.0 - optional: true - - openapi3-ts@3.2.0: - dependencies: - yaml: 2.9.0 - optional: true - optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -22496,19 +20397,6 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ora@5.4.1: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - optional: true - ora@6.3.1: dependencies: chalk: 5.6.2 @@ -22544,9 +20432,6 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 - p-defer@3.0.0: - optional: true - p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -22571,31 +20456,8 @@ snapshots: is-network-error: 1.3.0 retry: 0.13.1 - p-throttle@7.0.0: - optional: true - p-try@2.2.0: {} - pac-proxy-agent@7.2.0: - dependencies: - '@tootallnate/quickjs-emscripten': 0.23.0 - agent-base: 7.1.4 - debug: 4.4.3 - get-uri: 6.0.5 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - pac-resolver: 7.0.1 - socks-proxy-agent: 8.0.5 - transitivePeerDependencies: - - supports-color - optional: true - - pac-resolver@7.0.1: - dependencies: - degenerator: 5.0.1 - netmask: 2.1.1 - optional: true - package-json-from-dist@1.0.1: {} pacote@21.0.4: @@ -22639,21 +20501,10 @@ snapshots: parse5: 8.0.0 parse5-sax-parser: 8.0.0 - parse5-htmlparser2-tree-adapter@6.0.1: - dependencies: - parse5: 6.0.1 - optional: true - parse5-sax-parser@8.0.0: dependencies: parse5: 8.0.0 - parse5@5.1.1: - optional: true - - parse5@6.0.1: - optional: true - parse5@7.3.0: dependencies: entities: 6.0.1 @@ -22688,65 +20539,15 @@ snapshots: path-to-regexp@0.1.12: {} - path-to-regexp@1.9.0: - dependencies: - isarray: 0.0.1 - optional: true - - path-to-regexp@6.3.0: {} - - path-to-regexp@8.3.0: {} - - path-type@4.0.0: {} - - pathe@2.0.3: {} - - pathval@2.0.1: {} - - pg-cloudflare@1.4.0: - optional: true - - pg-connection-string@2.14.0: - optional: true - - pg-gateway@0.3.0-beta.4: - optional: true - - pg-int8@1.0.1: - optional: true - - pg-pool@3.14.0(pg@8.22.0): - dependencies: - pg: 8.22.0 - optional: true - - pg-protocol@1.15.0: - optional: true + path-to-regexp@6.3.0: {} - pg-types@2.2.0: - dependencies: - pg-int8: 1.0.1 - postgres-array: 2.0.0 - postgres-bytea: 1.0.1 - postgres-date: 1.0.7 - postgres-interval: 1.2.0 - optional: true + path-to-regexp@8.3.0: {} - pg@8.22.0: - dependencies: - pg-connection-string: 2.14.0 - pg-pool: 3.14.0(pg@8.22.0) - pg-protocol: 1.15.0 - pg-types: 2.2.0 - pgpass: 1.0.5 - optionalDependencies: - pg-cloudflare: 1.4.0 - optional: true + path-type@4.0.0: {} - pgpass@1.0.5: - dependencies: - split2: 4.2.0 - optional: true + pathe@2.0.3: {} + + pathval@2.0.1: {} picocolors@1.1.1: {} @@ -22789,14 +20590,6 @@ snapshots: optionalDependencies: fsevents: 2.3.2 - portfinder@1.0.38: - dependencies: - async: 3.2.6 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - optional: true - possible-typed-array-names@1.1.0: {} postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6)(yaml@2.9.0): @@ -22867,20 +20660,6 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - postgres-array@2.0.0: - optional: true - - postgres-bytea@1.0.1: - optional: true - - postgres-date@1.0.7: - optional: true - - postgres-interval@1.2.0: - dependencies: - xtend: 4.0.2 - optional: true - prelude-ls@1.2.1: {} prettier-linter-helpers@1.0.0: @@ -22907,20 +20686,8 @@ snapshots: proc-log@6.1.0: {} - proc-log@7.0.0: - optional: true - process-nextick-args@2.0.1: {} - process@0.11.10: - optional: true - - progress@2.0.3: - optional: true - - promise-breaker@6.0.0: - optional: true - promise-retry@2.0.1: dependencies: err-code: 2.0.3 @@ -22937,9 +20704,6 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 - proto-list@1.2.4: - optional: true - proto3-json-serializer@2.0.2: dependencies: protobufjs: 7.5.4 @@ -22965,33 +20729,11 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 - proxy-agent@6.5.0: - dependencies: - agent-base: 7.1.4 - debug: 4.4.3 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - lru-cache: 7.18.3 - pac-proxy-agent: 7.2.0 - proxy-from-env: 1.1.0 - socks-proxy-agent: 8.0.5 - transitivePeerDependencies: - - supports-color - optional: true - - proxy-from-env@1.1.0: - optional: true - prr@1.0.1: optional: true punycode@2.3.1: {} - pupa@2.1.1: - dependencies: - escape-goat: 2.1.1 - optional: true - pure-rand@7.0.1: {} qrcode-generator@2.0.4: {} @@ -23010,15 +20752,6 @@ snapshots: queue-microtask@1.2.3: {} - railroad-diagrams@1.0.0: - optional: true - - randexp@0.4.6: - dependencies: - discontinuous-range: 1.0.0 - ret: 0.1.15 - optional: true - range-parser@1.2.1: {} raw-body@2.5.2: @@ -23035,21 +20768,6 @@ snapshots: iconv-lite: 0.7.0 unpipe: 1.0.0 - rc@1.2.8: - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - optional: true - - re2@1.25.0: - dependencies: - install-artifact-from-github: 1.6.0 - nan: 2.28.0 - node-gyp: 13.0.0 - optional: true - react-day-picker@9.11.1(react@19.2.3): dependencies: '@date-fns/tz': 1.4.1 @@ -23161,20 +20879,6 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - readable-stream@4.7.0: - dependencies: - abort-controller: 3.0.0 - buffer: 6.0.3 - events: 3.3.0 - process: 0.11.10 - string_decoder: 1.3.0 - optional: true - - readdir-glob@1.1.3: - dependencies: - minimatch: 5.1.9 - optional: true - readdirp@3.6.0: dependencies: picomatch: 2.3.2 @@ -23250,16 +20954,6 @@ snapshots: unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.2.1 - registry-auth-token@5.1.1: - dependencies: - '@pnpm/npm-conf': 3.0.3 - optional: true - - registry-url@5.1.0: - dependencies: - rc: 1.2.8 - optional: true - regjsgen@0.8.0: {} regjsparser@0.13.0: @@ -23308,12 +21002,6 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - optional: true - restore-cursor@4.0.0: dependencies: onetime: 5.1.2 @@ -23324,9 +21012,6 @@ snapshots: onetime: 7.0.0 signal-exit: 4.1.0 - ret@0.1.15: - optional: true - retry-request@7.0.2(encoding@0.1.13): dependencies: '@types/request': 2.48.13 @@ -23347,11 +21032,6 @@ snapshots: rfdc@1.4.1: {} - rimraf@5.0.10: - dependencies: - glob: 10.4.5 - optional: true - rimraf@6.0.1: dependencies: glob: 11.0.3 @@ -23507,9 +21187,6 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 - safe-stable-stringify@2.5.0: - optional: true - safer-buffer@2.1.2: {} sass-loader@16.0.5(sass@1.90.0)(webpack@5.105.0(esbuild@0.28.0)): @@ -23567,11 +21244,6 @@ snapshots: '@types/node-forge': 1.3.14 node-forge: 1.3.1 - semver-diff@3.1.1: - dependencies: - semver: 6.3.1 - optional: true - semver@5.7.2: optional: true @@ -23808,11 +21480,6 @@ snapshots: sisteransi@1.0.5: {} - skin-tone@2.0.0: - dependencies: - unicode-emoji-modifier-base: 1.0.0 - optional: true - slash@3.0.0: {} slice-ansi@4.0.0: @@ -23862,9 +21529,6 @@ snapshots: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - sort-any@4.0.7: - optional: true - source-map-js@1.2.1: {} source-map-loader@5.0.0(webpack@5.105.0(esbuild@0.28.0)): @@ -23921,24 +21585,12 @@ snapshots: transitivePeerDependencies: - supports-color - split2@4.2.0: - optional: true - sprintf-js@1.0.3: {} - sql-formatter@15.8.2: - dependencies: - argparse: 2.0.1 - nearley: 2.20.1 - optional: true - ssri@13.0.1: dependencies: minipass: 7.1.3 - stack-trace@0.0.10: - optional: true - stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 @@ -23964,32 +21616,14 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 - stream-chain@2.2.5: - optional: true - stream-events@1.0.5: dependencies: stubs: 3.0.0 optional: true - stream-json@1.9.1: - dependencies: - stream-chain: 2.2.5 - optional: true - stream-shift@1.0.3: optional: true - streamx@2.28.0: - dependencies: - events-universal: 1.0.1 - fast-fifo: 1.3.2 - text-decoder: 1.2.7 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - optional: true - strict-event-emitter@0.5.1: {} string-length@4.0.2: @@ -24093,9 +21727,6 @@ snapshots: dependencies: min-indent: 1.0.1 - strip-json-comments@2.0.1: - optional: true - strip-json-comments@3.1.1: {} strip-literal@3.1.0: @@ -24123,32 +21754,6 @@ snapshots: pirates: 4.0.7 ts-interface-checker: 0.1.13 - superstatic@9.2.0(encoding@0.1.13): - dependencies: - basic-auth-connect: 1.1.0 - commander: 10.0.1 - compression: 1.8.1 - connect: 3.7.0 - destroy: 1.2.0 - glob-slasher: 1.0.1 - is-url: 1.2.4 - join-path: 1.1.1 - lodash: 4.17.21 - mime-types: 2.1.35 - minimatch: 6.2.3 - morgan: 1.11.0 - on-finished: 2.4.1 - on-headers: 1.1.0 - path-to-regexp: 1.9.0 - router: 2.2.0 - update-notifier-cjs: 5.1.7(encoding@0.1.13) - optionalDependencies: - re2: 1.25.0 - transitivePeerDependencies: - - encoding - - supports-color - optional: true - supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -24157,12 +21762,6 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-hyperlinks@3.2.0: - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - optional: true - supports-preserve-symlinks-flag@1.0.0: {} svg-parser@2.0.4: {} @@ -24187,28 +21786,6 @@ snapshots: tapable@2.3.0: {} - tar-stream@3.2.0: - dependencies: - b4a: 1.8.1 - bare-fs: 4.7.2 - fast-fifo: 1.3.2 - streamx: 2.28.0 - transitivePeerDependencies: - - bare-abort-controller - - bare-buffer - - react-native-b4a - optional: true - - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - optional: true - tar@7.5.1: dependencies: '@isaacs/fs-minipass': 4.0.1 @@ -24225,14 +21802,6 @@ snapshots: minizlib: 3.1.0 yallist: 5.0.0 - tcp-port-used@1.0.3: - dependencies: - debug: 4.3.1 - is2: 2.0.1 - transitivePeerDependencies: - - supports-color - optional: true - teeny-request@9.0.0(encoding@0.1.13): dependencies: http-proxy-agent: 5.0.0 @@ -24245,14 +21814,6 @@ snapshots: - supports-color optional: true - teex@1.0.1: - dependencies: - streamx: 2.28.0 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - optional: true - terser-webpack-plugin@5.4.0(esbuild@0.28.0)(webpack@5.105.0(esbuild@0.28.0)): dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -24289,16 +21850,6 @@ snapshots: glob: 10.4.5 minimatch: 9.0.5 - text-decoder@1.2.7: - dependencies: - b4a: 1.8.1 - transitivePeerDependencies: - - react-native-b4a - optional: true - - text-hex@1.0.0: - optional: true - thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -24311,12 +21862,6 @@ snapshots: dependencies: tslib: 2.8.1 - through2@2.0.5: - dependencies: - readable-stream: 2.3.8 - xtend: 4.0.2 - optional: true - thunky@1.1.0: {} tiny-invariant@1.3.3: {} @@ -24358,9 +21903,6 @@ snapshots: dependencies: tldts-core: 7.0.17 - tmp@0.2.7: - optional: true - tmpl@1.0.5: {} to-regex-range@5.0.1: @@ -24379,11 +21921,6 @@ snapshots: dependencies: tldts: 7.0.17 - toxic@1.0.1: - dependencies: - lodash: 4.17.21 - optional: true - tr46@0.0.3: {} tr46@1.0.1: @@ -24400,9 +21937,6 @@ snapshots: tree-kill@1.2.2: {} - triple-beam@1.4.1: - optional: true - ts-api-utils@2.1.0(typescript@5.9.3): dependencies: typescript: 5.9.3 @@ -24480,9 +22014,6 @@ snapshots: tslib@2.8.1: {} - tsscmp@1.0.6: - optional: true - tsup@8.5.0(jiti@2.6.1)(postcss@8.5.14)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.9.0): dependencies: bundle-require: 5.1.0(esbuild@0.25.11) @@ -24534,9 +22065,6 @@ snapshots: type-detect@4.0.8: {} - type-fest@0.20.2: - optional: true - type-fest@0.21.3: {} type-fest@4.41.0: {} @@ -24587,11 +22115,6 @@ snapshots: typed-assert@1.0.9: {} - typedarray-to-buffer@3.1.5: - dependencies: - is-typedarray: 1.0.0 - optional: true - typescript-eslint@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3): dependencies: '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) @@ -24625,9 +22148,6 @@ snapshots: unicode-canonical-property-names-ecmascript@2.0.1: {} - unicode-emoji-modifier-base@1.0.0: - optional: true - unicode-match-property-ecmascript@2.0.0: dependencies: unicode-canonical-property-names-ecmascript: 2.0.1 @@ -24637,19 +22157,6 @@ snapshots: unicode-property-aliases-ecmascript@2.2.0: {} - unique-string@2.0.0: - dependencies: - crypto-random-string: 2.0.0 - optional: true - - universal-analytics@0.5.4: - dependencies: - debug: 4.4.3 - uuid: 14.0.1 - transitivePeerDependencies: - - supports-color - optional: true - universalify@2.0.1: {} unpipe@1.0.0: {} @@ -24692,38 +22199,10 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - update-notifier-cjs@5.1.7(encoding@0.1.13): - dependencies: - boxen: 5.1.2 - chalk: 4.1.2 - configstore: 5.0.1 - has-yarn: 2.1.0 - import-lazy: 2.1.0 - is-ci: 2.0.0 - is-installed-globally: 0.4.0 - is-npm: 5.0.0 - is-yarn-global: 0.3.0 - isomorphic-fetch: 3.0.0(encoding@0.1.13) - pupa: 2.1.1 - registry-auth-token: 5.1.1 - registry-url: 5.1.0 - semver: 7.7.4 - semver-diff: 3.1.1 - xdg-basedir: 4.0.0 - transitivePeerDependencies: - - encoding - optional: true - uri-js@4.4.1: dependencies: punycode: 2.3.1 - url-join@0.0.1: - optional: true - - url-template@2.0.8: - optional: true - use-callback-ref@1.3.3(@types/react@19.2.7)(react@19.2.3): dependencies: react: 19.2.3 @@ -24749,9 +22228,6 @@ snapshots: uuid@11.1.0: {} - uuid@14.0.1: - optional: true - uuid@8.3.2: {} uuid@9.0.1: {} @@ -24764,9 +22240,6 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 - valid-url@1.0.9: - optional: true - validate-npm-package-name@6.0.2: {} vary@1.1.2: {} @@ -25291,45 +22764,13 @@ snapshots: dependencies: isexe: 4.0.0 - which@7.0.0: - dependencies: - isexe: 4.0.0 - optional: true - why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 stackback: 0.0.2 - widest-line@3.1.0: - dependencies: - string-width: 4.2.3 - optional: true - wildcard@2.0.1: {} - winston-transport@4.9.0: - dependencies: - logform: 2.7.0 - readable-stream: 3.6.2 - triple-beam: 1.4.1 - optional: true - - winston@3.19.0: - dependencies: - '@colors/colors': 1.6.0 - '@dabh/diagnostics': 2.0.8 - async: 3.2.6 - is-stream: 2.0.1 - logform: 2.7.0 - one-time: 1.0.0 - readable-stream: 3.6.2 - safe-stable-stringify: 2.5.0 - stack-trace: 0.0.10 - triple-beam: 1.4.1 - winston-transport: 4.9.0 - optional: true - word-wrap@1.2.5: {} wordwrap@1.0.0: {} @@ -25360,40 +22801,23 @@ snapshots: wrappy@1.0.2: {} - write-file-atomic@3.0.3: - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - optional: true - write-file-atomic@5.0.1: dependencies: imurmurhash: 0.1.4 signal-exit: 4.1.0 - ws@7.5.11: - optional: true - ws@8.18.3: {} wsl-utils@0.1.0: dependencies: is-wsl: 3.1.0 - xdg-basedir@4.0.0: - optional: true - xhr2@0.2.1: {} xml-name-validator@5.0.0: {} xmlchars@2.2.0: {} - xtend@4.0.2: - optional: true - y18n@5.0.8: {} yallist@3.1.1: {} @@ -25405,24 +22829,10 @@ snapshots: yaml@2.9.0: optional: true - yargs-parser@20.2.9: - optional: true - yargs-parser@21.1.1: {} yargs-parser@22.0.0: {} - yargs@16.2.2: - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - optional: true - yargs@17.7.2: dependencies: cliui: 8.0.1 @@ -25448,22 +22858,10 @@ snapshots: yoctocolors-cjs@2.1.3: {} - zip-stream@6.0.1: - dependencies: - archiver-utils: 5.0.2 - compress-commons: 6.0.2 - readable-stream: 4.7.0 - optional: true - zod-to-json-schema@3.24.6(zod@3.25.76): dependencies: zod: 3.25.76 - zod-to-json-schema@3.25.2(zod@3.25.76): - dependencies: - zod: 3.25.76 - optional: true - zod-to-json-schema@3.25.2(zod@4.1.13): dependencies: zod: 4.1.13 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 0ce5677e..7aaf9313 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -84,3 +84,11 @@ allowBuilds: unrs-resolver: true gitChecks: false + +# Block @angular/fire optional peer firebase-tools from entering the lockfile (e2e uses npx; CI uses global install). +peerDependencyRules: + ignoreMissing: + - firebase-tools + +overrides: + firebase-tools: "-" diff --git a/scripts/e2e-run.mjs b/scripts/e2e-run.mjs index e4b6cfe1..3c001da6 100644 --- a/scripts/e2e-run.mjs +++ b/scripts/e2e-run.mjs @@ -14,11 +14,14 @@ * limitations under the License. */ +import { readFileSync, rmSync } from "node:fs"; import { spawnSync } from "node:child_process"; import path from "node:path"; import { fileURLToPath } from "node:url"; +import { resetCoverageArtifacts } from "../e2e/fixtures/coverage-artifacts.mjs"; const REPO_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); +const EMULATOR_STATE_FILE = path.join(REPO_ROOT, "e2e", ".state", "emulator.json"); /** UI examples exercised serially by `pnpm test:e2e` (browser smoke S1–S3). */ const E2E_UI_EXAMPLES = ["react", "shadcn", "nextjs", "nextjs-ssr", "angular-example"]; @@ -39,22 +42,45 @@ function ensurePackagesBuilt() { function runExample(example) { console.log(`\n[e2e-run] Starting ${example}…\n`); - const result = spawnSync( - "pnpm", - ["--filter=e2e", "exec", "playwright", "test", `--project=${example}`], - { - cwd: REPO_ROOT, - stdio: "inherit", - env: { ...process.env, E2E_PROJECT: example, E2E_SKIP_BUILD_PACKAGES: "1" }, - } - ); + const result = spawnSync("pnpm", ["--filter=e2e", "exec", "playwright", "test", `--project=${example}`], { + cwd: REPO_ROOT, + stdio: "inherit", + env: { + ...process.env, + E2E_PROJECT: example, + E2E_SKIP_BUILD_PACKAGES: "1", + E2E_KEEP_EMULATOR: "1", + }, + }); if (result.status !== 0) { process.exitCode = result.status ?? 1; } } +function stopOrchestratedEmulator() { + try { + const state = JSON.parse(readFileSync(EMULATOR_STATE_FILE, "utf8")); + if (state?.startedBySetup && state.pid !== undefined) { + try { + process.kill(-state.pid, "SIGTERM"); + } catch { + // Emulator may already have stopped. + } + } + } catch { + // No state file — nothing to stop. + } + + try { + rmSync(path.dirname(EMULATOR_STATE_FILE), { recursive: true, force: true }); + } catch { + // Best-effort cleanup. + } +} + ensurePackagesBuilt(); +resetCoverageArtifacts(); for (const example of E2E_EXAMPLES) { runExample(example); @@ -63,6 +89,8 @@ for (const example of E2E_EXAMPLES) { } } +stopOrchestratedEmulator(); + if (process.exitCode) { process.exit(process.exitCode); } From def79805724aeb3315e12fecb3dd6d2625b2b5fc Mon Sep 17 00:00:00 2001 From: Mike Hardy Date: Fri, 3 Jul 2026 14:55:04 -0500 Subject: [PATCH 9/9] test(deps): pin workflow actions to SHAs / restrict permissions --- .github/workflows/lint.yaml | 15 +++++++++------ .github/workflows/test.yaml | 9 ++++++--- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index d6d9b602..d9174650 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -6,22 +6,25 @@ on: - main pull_request: +permissions: + contents: read + jobs: lint: name: Lint and Format Check runs-on: ubuntu-latest - + steps: - name: Checkout code - uses: actions/checkout@v4 - + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + - name: Setup Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: '22.13.0' - + - name: Setup pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 with: version: 10.34.4 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 623dd67e..f64e77d9 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -6,21 +6,24 @@ on: - main pull_request: +permissions: + contents: read + jobs: test: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Setup node - uses: actions/setup-node@v4 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: 22.13.0 check-latest: true - name: Setup pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 with: version: 10.34.4