From f69a6ed4f316aeaa1b1375f71d3d67efb18d5a92 Mon Sep 17 00:00:00 2001 From: Elio Bischof Date: Wed, 8 Oct 2025 10:27:02 +0200 Subject: [PATCH] chore: rehaul DevX (#10571) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Which Problems Are Solved Replaces Turbo by Nx and lays the foundation for the next CI improvements. It enables using Nx Cloud to speed the up the pipelines that affect any node package. It streamlines the dev experience for frontend and backend developers by providing the following commands: | Task | Command | Notes | |------|---------|--------| | **Production** | `nx run PROJECT:prod` | Production server | | **Develop** | `nx run PROJECT:dev` | Hot reloading development server | | **Test** | `nx run PROJECT:test` | Run all tests | | **Lint** | `nx run PROJECT:lint` | Check code style | | **Lint Fix** | `nx run PROJECT:lint-fix` | Auto-fix style issues | The following values can be used for PROJECT: - @zitadel/zitadel (root commands) - @zitadel/api, - @zitadel/login, - @zitadel/console, - @zitadel/docs, - @zitadel/client - @zitadel/proto The project names and folders are streamlined: | Old Folder | New Folder | | --- | --- | | ./e2e | ./tests/functional-ui | | ./load-test | ./benchmark | | ./build/zitadel | ./apps/api | | ./console | ./apps/console (postponed so the PR is reviewable) | Also, all references to the TypeScript repo are removed so we can archive it. # How the Problems Are Solved - Ran `npx nx@latest init` - Replaced all turbo.json by project.json and fixed the target configs - Removed Turbo dependency - All JavaScript related code affected by a PRs changes is quality-checked using the `nx affected` command - We move PR checks that are runnable using Nx into the `check` workflow. For workflows where we don't use Nx, yet, we restore previously built dependency artifacts from Nx. - We only use a single and easy to understand dev container - The CONTRIBUTING.md is streamlined - The setup with a generated client pat is orchestrated with Nx - Everything related to the TypeScript repo is updated or removed. A **Deploy with Vercel** button is added to the docs and the CONTRIBUTING.md. # Additional Changes - NPM package names have a consistent pattern. - Docker bake is removed. The login container is built and released like the core container. - The integration tests build the login container before running, so they don't rely on the login container action anymore. This fixes consistently failing checks on PRs from forks. - The docs build in GitHub actions is removed, as we already build on Vercel. # Additional Context - Internal discussion: https://zitadel.slack.com/archives/C087ADF8LRX/p1756277884928169 - Workflow dispatch test: https://github.com/zitadel/zitadel/actions/runs/17760122959 --------- Co-authored-by: Florian Forster Co-authored-by: Tim Möhlmann Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .devcontainer/.env.db | 3 + .devcontainer/base/Dockerfile | 20 - .devcontainer/base/Dockerfile.dockerignore | 2 - .../commands/login-integration.post-attach.sh | 39 - .../login-integration.update-content.sh | 18 - .../commands/turbo-lint-unit.post-attach.sh | 30 - .../turbo-lint-unit.update-content.sh | 12 - .devcontainer/base/devcontainer.json | 29 - .devcontainer/base/docker-compose.yaml | 198 - .devcontainer/compose.sh | 6 + .devcontainer/devcontainer.json | 57 + .devcontainer/docker-compose.yaml | 88 + .../login-integration/devcontainer.json | 26 - .../login-integration/docker-compose.yaml | 35 - .devcontainer/login-subtree/devcontainer.json | 22 - .devcontainer/project.json | 14 + .../turbo-lint-unit/devcontainer.json | 20 - .dockerignore | 31 - .github/instructions/nx.instructions.md | 47 + .github/workflows/build.yml | 145 - .github/workflows/ci.yml | 67 + .github/workflows/codeql.yml | 14 +- .github/workflows/compile.yml | 89 - .github/workflows/console.yml | 54 - .github/workflows/container.yml | 173 - .github/workflows/core-integration-test.yml | 100 - .github/workflows/core-unit-test.yml | 73 - .github/workflows/core.yml | 81 - .github/workflows/docs.yml | 61 - .github/workflows/e2e.yml | 64 - .github/workflows/lint.yml | 93 - .github/workflows/lint_test_build.yml | 98 + .github/workflows/login-container.yml | 69 - .github/workflows/login-integration-test.yml | 58 - .github/workflows/pack.yml | 177 + .github/workflows/release.yml | 79 +- .github/workflows/version.yml | 13 +- .gitignore | 24 +- .golangci.yaml | 10 +- CONTRIBUTING.md | 677 +- LICENSING.md | 5 +- Makefile | 196 - README.md | 12 +- apps/api/.env | 5 + apps/api/.env.prod.test-functional-ui | 5 + apps/api/.env.test-integration | 3 + apps/api/.env.test-integration-run-api | 5 + apps/api/Dockerfile | 34 + {build/zitadel => apps/api}/entrypoint.sh | 0 apps/api/prod-default.yaml | 25 + apps/api/project.json | 470 ++ .../api/test-functional-ui.yaml | 3 - .../api/test-integration-api.yaml | 30 +- apps/login/.env | 5 + apps/login/.env.prod | 1 + apps/login/.env.test | 6 - apps/login/.env.test-integration | 2 + apps/login/.env.test-integration-run-login | 4 + apps/login/.github/ISSUE_TEMPLATE/bug.yaml | 63 - apps/login/.github/ISSUE_TEMPLATE/config.yml | 4 - apps/login/.github/ISSUE_TEMPLATE/docs.yaml | 30 - .../.github/ISSUE_TEMPLATE/improvement.yaml | 54 - .../.github/ISSUE_TEMPLATE/proposal.yaml | 54 - apps/login/.github/custom-i18n.png | Bin 85028 -> 0 bytes apps/login/.github/dependabot.example.yml | 21 - apps/login/.github/pull_request_template.md | 13 - apps/login/.github/workflows/close_pr.yml | 39 - apps/login/.github/workflows/issues.yml | 41 - apps/login/.github/workflows/release.yml | 32 - apps/login/.github/workflows/test.yml | 67 - apps/login/.gitignore | 1 - apps/login/CODE_OF_CONDUCT.md | 128 - apps/login/CONTRIBUTING.md | 218 - apps/login/Dockerfile | 37 +- apps/login/Dockerfile.dockerignore | 22 - apps/login/cypress.config.ts | 10 +- apps/login/docker-bake-release.hcl | 3 - apps/login/docker-bake.hcl | 25 - .../{core-mock => api-mock}/Dockerfile | 4 +- .../zitadel.settings.v2.SettingsService.json | 0 .../mocked-services.cfg | 0 apps/login/integration/api-mock/project.json | 19 + apps/login/integration/support/e2e.ts | 2 +- apps/login/next-env-vars.d.ts | 3 + apps/login/next.config.mjs | 3 +- apps/login/package.json | 36 +- apps/login/project.json | 156 + apps/login/scripts/entrypoint.sh | 21 +- apps/login/tsconfig.json | 10 +- apps/login/turbo.json | 57 - apps/login/vercel.json | 4 + .../database/events_testing/events_test.go | 18 +- .../id_provider_instance_test.go | 16 +- .../database/events_testing/instance_test.go | 22 +- {load-test => benchmark}/.babelrc | 0 {load-test => benchmark}/.gitignore | 0 {load-test => benchmark}/.prettierrc | 0 {load-test => benchmark}/Makefile | 0 {load-test => benchmark}/README.md | 6 +- {load-test => benchmark}/package-lock.json | 0 {load-test => benchmark}/package.json | 5 +- {load-test => benchmark}/src/app.ts | 0 {load-test => benchmark}/src/config.ts | 0 {load-test => benchmark}/src/login_ui.ts | 0 {load-test => benchmark}/src/membership.ts | 0 {load-test => benchmark}/src/metadata.ts | 0 {load-test => benchmark}/src/oidc.ts | 0 {load-test => benchmark}/src/org.ts | 0 {load-test => benchmark}/src/project.ts | 0 {load-test => benchmark}/src/session.ts | 0 {load-test => benchmark}/src/url.ts | 0 .../src/use_cases/human_password_login.ts | 0 .../src/use_cases/introspection.ts | 0 .../machine_client_credentials_login.ts | 0 .../use_cases/machine_jwt_profile_grant.ts | 0 .../machine_jwt_profile_grant_single_user.ts | 0 .../src/use_cases/machine_pat_login.ts | 0 .../src/use_cases/manipulate_user.ts | 0 .../src/use_cases/session/add_session.ts | 0 .../src/use_cases/session/oidc_session.ts | 0 .../src/use_cases/session/otp_session.ts | 0 .../src/use_cases/session/password_session.ts | 0 .../src/use_cases/user_info.ts | 0 .../src/use_cases/users_by_metadata_key.ts | 0 .../src/use_cases/users_by_metadata_value.ts | 0 .../use_cases/verify_all_user_grants_exist.ts | 0 {load-test => benchmark}/src/user.ts | 0 {load-test => benchmark}/src/user_grant.ts | 0 {load-test => benchmark}/tsconfig.json | 0 {load-test => benchmark}/webpack.config.js | 0 build/login/Dockerfile | 55 - build/login/Dockerfile.dockerignore | 38 - build/zitadel/Dockerfile | 33 - build/zitadel/Dockerfile.dockerignore | 3 - cmd/setup/integration_test/setup_test.go | 18 +- console/.env.dev | 1 + console/README.md | 100 +- console/package.json | 19 +- console/project.json | 56 + console/turbo.json | 24 - docker-bake.hcl | 11 - docs/README.md | 71 +- .../self-hosting/deploy/docker-compose.yaml | 2 +- docs/package.json | 25 +- docs/project.json | 75 + docs/turbo.json | 45 - docs/vercel.json | 2 + e2e/README.md | 12 - .../host.docker.internal/docker-compose.yaml | 35 - e2e/config/host.docker.internal/zitadel.yaml | 70 - e2e/config/localhost/docker-compose.yaml | 44 - e2e/docker-compose.yaml | 10 - e2e/package.json | 33 - e2e/turbo.json | 25 - ...ons_allow_public_org_registrations_test.go | 2 +- .../restrictions_allowed_languages_test.go | 4 +- .../group/v2/integration_test/query_test.go | 24 +- .../integration_test/limits_block_test.go | 14 +- .../user/v2/integration_test/user_test.go | 8 +- .../user/v2beta/integration_test/user_test.go | 8 +- .../service_provider_config_expected.json | 2 +- ...er_config_expected_resource_type_user.json | 2 +- ...ovider_config_expected_resource_types.json | 2 +- ...vice_provider_config_expected_schemas.json | 2 +- ..._provider_config_expected_user_schema.json | 2 +- .../api/ui/login/static/resources/generate.go | 4 +- internal/integration/config/client.yaml | 2 +- .../integration/config/docker-compose.yaml | 32 - internal/integration/config/postgres.yaml | 14 - internal/integration/config/steps.yaml | 13 - internal/integration/instance.go | 2 +- nx.json | 54 + package.json | 12 +- packages/zitadel-client/.gitignore | 2 - packages/zitadel-client/package.json | 10 +- packages/zitadel-client/project.json | 43 + packages/zitadel-client/turbo.json | 9 - packages/zitadel-proto/.npmignore | 4 +- packages/zitadel-proto/package.json | 3 +- packages/zitadel-proto/project.json | 17 + packages/zitadel-proto/turbo.json | 16 - pnpm-lock.yaml | 5950 ++++++++++------- pnpm-workspace.yaml | 17 +- project.json | 42 + tests/functional-ui/.env | 4 + tests/functional-ui/.env.open | 1 + {e2e => tests/functional-ui}/.gitignore | 0 {e2e => tests/functional-ui}/.prettierignore | 1 + {e2e => tests/functional-ui}/.prettierrc.json | 0 .../functional-ui}/cypress.config.ts | 27 +- .../functional-ui}/cypress/.gitignore | 0 .../e2e/applications/applications.cy.ts | 0 .../cypress/e2e/events/events.cy.ts | 0 .../cypress/e2e/humans/humans.cy.ts | 0 .../functional-ui}/cypress/e2e/i18n/api.cy.ts | 0 .../e2e/instance/settings/notifications.cy.ts | 0 .../instance/settings/secret-generator.cy.ts | 0 .../cypress/e2e/machines/machines.cy.ts | 0 .../e2e/organization/organizations.cy.ts | 0 .../cypress/e2e/permissions/permissions.cy.ts | 0 .../cypress/e2e/projects/projects.cy.ts | 0 .../settings/external-links-settings.cy.ts | 0 .../cypress/e2e/settings/features.cy.ts | 0 .../cypress/e2e/settings/login-policy.cy.ts | 0 .../cypress/e2e/settings/oidc-settings.cy.ts | 0 .../e2e/settings/password-complexity.cy.ts | 0 .../e2e/settings/private-labeling.cy.ts | 0 .../cypress/fixtures/example.json | 0 .../functional-ui}/cypress/fixtures/logo.png | Bin .../cypress/support/api/apiauth.ts | 0 .../cypress/support/api/ensure.ts | 0 .../support/api/external-links-settings.ts | 0 .../cypress/support/api/features.ts | 0 .../cypress/support/api/grants.ts | 0 .../cypress/support/api/instances.ts | 0 .../cypress/support/api/members.ts | 0 .../cypress/support/api/oidc-settings.ts | 0 .../cypress/support/api/orgs.ts | 0 .../cypress/support/api/policies.ts | 0 .../cypress/support/api/projects.ts | 0 .../cypress/support/api/quota.ts | 0 .../cypress/support/api/search.ts | 0 .../functional-ui}/cypress/support/api/sms.ts | 0 .../cypress/support/api/smtp.ts | 0 .../cypress/support/api/types.ts | 0 .../cypress/support/api/users.ts | 0 .../cypress/support/commands.ts | 0 .../functional-ui}/cypress/support/e2e.ts | 0 .../cypress/support/login/authenticate.ts | 0 .../cypress/support/login/users.ts | 0 .../functional-ui}/cypress/support/types.ts | 0 .../functional-ui}/cypress/tsconfig.json | 0 tests/functional-ui/package.json | 20 + tests/functional-ui/project.json | 56 + {e2e => tests/functional-ui}/tsconfig.json | 0 turbo.json | 54 - 236 files changed, 5708 insertions(+), 6549 deletions(-) create mode 100644 .devcontainer/.env.db delete mode 100644 .devcontainer/base/Dockerfile delete mode 100644 .devcontainer/base/Dockerfile.dockerignore delete mode 100755 .devcontainer/base/commands/login-integration.post-attach.sh delete mode 100755 .devcontainer/base/commands/login-integration.update-content.sh delete mode 100755 .devcontainer/base/commands/turbo-lint-unit.post-attach.sh delete mode 100755 .devcontainer/base/commands/turbo-lint-unit.update-content.sh delete mode 100644 .devcontainer/base/devcontainer.json delete mode 100644 .devcontainer/base/docker-compose.yaml create mode 100755 .devcontainer/compose.sh create mode 100644 .devcontainer/devcontainer.json create mode 100644 .devcontainer/docker-compose.yaml delete mode 100644 .devcontainer/login-integration/devcontainer.json delete mode 100644 .devcontainer/login-integration/docker-compose.yaml delete mode 100644 .devcontainer/login-subtree/devcontainer.json create mode 100644 .devcontainer/project.json delete mode 100644 .devcontainer/turbo-lint-unit/devcontainer.json delete mode 100644 .dockerignore create mode 100644 .github/instructions/nx.instructions.md delete mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/compile.yml delete mode 100644 .github/workflows/console.yml delete mode 100644 .github/workflows/container.yml delete mode 100644 .github/workflows/core-integration-test.yml delete mode 100644 .github/workflows/core-unit-test.yml delete mode 100644 .github/workflows/core.yml delete mode 100644 .github/workflows/docs.yml delete mode 100644 .github/workflows/e2e.yml delete mode 100644 .github/workflows/lint.yml create mode 100644 .github/workflows/lint_test_build.yml delete mode 100644 .github/workflows/login-container.yml delete mode 100644 .github/workflows/login-integration-test.yml create mode 100644 .github/workflows/pack.yml delete mode 100644 Makefile create mode 100644 apps/api/.env create mode 100644 apps/api/.env.prod.test-functional-ui create mode 100644 apps/api/.env.test-integration create mode 100644 apps/api/.env.test-integration-run-api create mode 100644 apps/api/Dockerfile rename {build/zitadel => apps/api}/entrypoint.sh (100%) create mode 100644 apps/api/prod-default.yaml create mode 100644 apps/api/project.json rename e2e/config/localhost/zitadel.yaml => apps/api/test-functional-ui.yaml (95%) rename internal/integration/config/zitadel.yaml => apps/api/test-integration-api.yaml (90%) create mode 100644 apps/login/.env create mode 100644 apps/login/.env.prod delete mode 100644 apps/login/.env.test create mode 100644 apps/login/.env.test-integration create mode 100644 apps/login/.env.test-integration-run-login delete mode 100644 apps/login/.github/ISSUE_TEMPLATE/bug.yaml delete mode 100644 apps/login/.github/ISSUE_TEMPLATE/config.yml delete mode 100644 apps/login/.github/ISSUE_TEMPLATE/docs.yaml delete mode 100644 apps/login/.github/ISSUE_TEMPLATE/improvement.yaml delete mode 100644 apps/login/.github/ISSUE_TEMPLATE/proposal.yaml delete mode 100644 apps/login/.github/custom-i18n.png delete mode 100644 apps/login/.github/dependabot.example.yml delete mode 100644 apps/login/.github/pull_request_template.md delete mode 100644 apps/login/.github/workflows/close_pr.yml delete mode 100644 apps/login/.github/workflows/issues.yml delete mode 100644 apps/login/.github/workflows/release.yml delete mode 100644 apps/login/.github/workflows/test.yml delete mode 100644 apps/login/CODE_OF_CONDUCT.md delete mode 100644 apps/login/CONTRIBUTING.md delete mode 100644 apps/login/Dockerfile.dockerignore delete mode 100644 apps/login/docker-bake-release.hcl delete mode 100644 apps/login/docker-bake.hcl rename apps/login/integration/{core-mock => api-mock}/Dockerfile (86%) rename apps/login/integration/{core-mock => api-mock}/initial-stubs/zitadel.settings.v2.SettingsService.json (100%) rename apps/login/integration/{core-mock => api-mock}/mocked-services.cfg (100%) create mode 100644 apps/login/integration/api-mock/project.json create mode 100644 apps/login/project.json delete mode 100644 apps/login/turbo.json create mode 100644 apps/login/vercel.json rename {load-test => benchmark}/.babelrc (100%) rename {load-test => benchmark}/.gitignore (100%) rename {load-test => benchmark}/.prettierrc (100%) rename {load-test => benchmark}/Makefile (100%) rename {load-test => benchmark}/README.md (96%) rename {load-test => benchmark}/package-lock.json (100%) rename {load-test => benchmark}/package.json (90%) rename {load-test => benchmark}/src/app.ts (100%) rename {load-test => benchmark}/src/config.ts (100%) rename {load-test => benchmark}/src/login_ui.ts (100%) rename {load-test => benchmark}/src/membership.ts (100%) rename {load-test => benchmark}/src/metadata.ts (100%) rename {load-test => benchmark}/src/oidc.ts (100%) rename {load-test => benchmark}/src/org.ts (100%) rename {load-test => benchmark}/src/project.ts (100%) rename {load-test => benchmark}/src/session.ts (100%) rename {load-test => benchmark}/src/url.ts (100%) rename {load-test => benchmark}/src/use_cases/human_password_login.ts (100%) rename {load-test => benchmark}/src/use_cases/introspection.ts (100%) rename {load-test => benchmark}/src/use_cases/machine_client_credentials_login.ts (100%) rename {load-test => benchmark}/src/use_cases/machine_jwt_profile_grant.ts (100%) rename {load-test => benchmark}/src/use_cases/machine_jwt_profile_grant_single_user.ts (100%) rename {load-test => benchmark}/src/use_cases/machine_pat_login.ts (100%) rename {load-test => benchmark}/src/use_cases/manipulate_user.ts (100%) rename {load-test => benchmark}/src/use_cases/session/add_session.ts (100%) rename {load-test => benchmark}/src/use_cases/session/oidc_session.ts (100%) rename {load-test => benchmark}/src/use_cases/session/otp_session.ts (100%) rename {load-test => benchmark}/src/use_cases/session/password_session.ts (100%) rename {load-test => benchmark}/src/use_cases/user_info.ts (100%) rename {load-test => benchmark}/src/use_cases/users_by_metadata_key.ts (100%) rename {load-test => benchmark}/src/use_cases/users_by_metadata_value.ts (100%) rename {load-test => benchmark}/src/use_cases/verify_all_user_grants_exist.ts (100%) rename {load-test => benchmark}/src/user.ts (100%) rename {load-test => benchmark}/src/user_grant.ts (100%) rename {load-test => benchmark}/tsconfig.json (100%) rename {load-test => benchmark}/webpack.config.js (100%) delete mode 100644 build/login/Dockerfile delete mode 100644 build/login/Dockerfile.dockerignore delete mode 100644 build/zitadel/Dockerfile delete mode 100644 build/zitadel/Dockerfile.dockerignore create mode 100644 console/.env.dev create mode 100644 console/project.json delete mode 100644 console/turbo.json delete mode 100644 docker-bake.hcl create mode 100644 docs/project.json delete mode 100644 docs/turbo.json delete mode 100644 e2e/README.md delete mode 100644 e2e/config/host.docker.internal/docker-compose.yaml delete mode 100644 e2e/config/host.docker.internal/zitadel.yaml delete mode 100644 e2e/config/localhost/docker-compose.yaml delete mode 100644 e2e/docker-compose.yaml delete mode 100644 e2e/package.json delete mode 100644 e2e/turbo.json delete mode 100644 internal/integration/config/docker-compose.yaml delete mode 100644 internal/integration/config/postgres.yaml delete mode 100644 internal/integration/config/steps.yaml create mode 100644 nx.json create mode 100644 packages/zitadel-client/project.json delete mode 100644 packages/zitadel-client/turbo.json create mode 100644 packages/zitadel-proto/project.json delete mode 100644 packages/zitadel-proto/turbo.json create mode 100644 project.json create mode 100644 tests/functional-ui/.env create mode 100644 tests/functional-ui/.env.open rename {e2e => tests/functional-ui}/.gitignore (100%) rename {e2e => tests/functional-ui}/.prettierignore (92%) rename {e2e => tests/functional-ui}/.prettierrc.json (100%) rename {e2e => tests/functional-ui}/cypress.config.ts (89%) rename {e2e => tests/functional-ui}/cypress/.gitignore (100%) rename {e2e => tests/functional-ui}/cypress/e2e/applications/applications.cy.ts (100%) rename {e2e => tests/functional-ui}/cypress/e2e/events/events.cy.ts (100%) rename {e2e => tests/functional-ui}/cypress/e2e/humans/humans.cy.ts (100%) rename {e2e => tests/functional-ui}/cypress/e2e/i18n/api.cy.ts (100%) rename {e2e => tests/functional-ui}/cypress/e2e/instance/settings/notifications.cy.ts (100%) rename {e2e => tests/functional-ui}/cypress/e2e/instance/settings/secret-generator.cy.ts (100%) rename {e2e => tests/functional-ui}/cypress/e2e/machines/machines.cy.ts (100%) rename {e2e => tests/functional-ui}/cypress/e2e/organization/organizations.cy.ts (100%) rename {e2e => tests/functional-ui}/cypress/e2e/permissions/permissions.cy.ts (100%) rename {e2e => tests/functional-ui}/cypress/e2e/projects/projects.cy.ts (100%) rename {e2e => tests/functional-ui}/cypress/e2e/settings/external-links-settings.cy.ts (100%) rename {e2e => tests/functional-ui}/cypress/e2e/settings/features.cy.ts (100%) rename {e2e => tests/functional-ui}/cypress/e2e/settings/login-policy.cy.ts (100%) rename {e2e => tests/functional-ui}/cypress/e2e/settings/oidc-settings.cy.ts (100%) rename {e2e => tests/functional-ui}/cypress/e2e/settings/password-complexity.cy.ts (100%) rename {e2e => tests/functional-ui}/cypress/e2e/settings/private-labeling.cy.ts (100%) rename {e2e => tests/functional-ui}/cypress/fixtures/example.json (100%) rename {e2e => tests/functional-ui}/cypress/fixtures/logo.png (100%) rename {e2e => tests/functional-ui}/cypress/support/api/apiauth.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/api/ensure.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/api/external-links-settings.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/api/features.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/api/grants.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/api/instances.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/api/members.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/api/oidc-settings.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/api/orgs.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/api/policies.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/api/projects.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/api/quota.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/api/search.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/api/sms.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/api/smtp.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/api/types.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/api/users.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/commands.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/e2e.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/login/authenticate.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/login/users.ts (100%) rename {e2e => tests/functional-ui}/cypress/support/types.ts (100%) rename {e2e => tests/functional-ui}/cypress/tsconfig.json (100%) create mode 100644 tests/functional-ui/package.json create mode 100644 tests/functional-ui/project.json rename {e2e => tests/functional-ui}/tsconfig.json (100%) delete mode 100644 turbo.json diff --git a/.devcontainer/.env.db b/.devcontainer/.env.db new file mode 100644 index 00000000000..1cd8d648b4f --- /dev/null +++ b/.devcontainer/.env.db @@ -0,0 +1,3 @@ +PGUSER=postgres +POSTGRES_PASSWORD=postgres +POSTGRES_HOST_AUTH_METHOD=trust diff --git a/.devcontainer/base/Dockerfile b/.devcontainer/base/Dockerfile deleted file mode 100644 index 8b5a83cbccd..00000000000 --- a/.devcontainer/base/Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM mcr.microsoft.com/devcontainers/typescript-node:20-bookworm - -ENV SHELL=/bin/bash \ - DEBIAN_FRONTEND=noninteractive \ - LANG=C.UTF-8 \ - LC_ALL=C.UTF-8 \ - CI=1 \ - PNPM_HOME=/home/node/.local/share/pnpm \ - PATH=/home/node/.local/share/pnpm:$PATH - -RUN apt-get update && \ - apt-get --no-install-recommends install -y \ - # Cypress dependencies - libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libnss3 libxss1 libasound2 libxtst6 xauth xvfb && \ - apt-get clean && \ - corepack enable && COREPACK_ENABLE_DOWNLOAD_PROMPT=0 corepack prepare pnpm@10.13.1 --activate - -COPY --chown=node:node commands /commands - -USER node diff --git a/.devcontainer/base/Dockerfile.dockerignore b/.devcontainer/base/Dockerfile.dockerignore deleted file mode 100644 index c363133e099..00000000000 --- a/.devcontainer/base/Dockerfile.dockerignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!commands \ No newline at end of file diff --git a/.devcontainer/base/commands/login-integration.post-attach.sh b/.devcontainer/base/commands/login-integration.post-attach.sh deleted file mode 100755 index 5badbc8bc1b..00000000000 --- a/.devcontainer/base/commands/login-integration.post-attach.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash - -if [ "$FAIL_COMMANDS_ON_ERRORS" == "true" ]; then - set -e -fi - -echo -echo -echo -echo -e "THANKS FOR CONTRIBUTING TO ZITADEL 🚀" -echo -echo "Your dev container is configured for fixing login integration tests." -echo "The login is running in a separate container with the same configuration." -echo "It calls the mock-zitadel container which provides a mocked Zitadel gRPC API." -echo -echo "Also the test suite is configured correctly." -echo "For example, run a single test file:" -echo "pnpm cypress run --spec integration/integration/login.cy.ts" -echo -echo "You can also run the test interactively." -echo "However, this is only possible from outside the dev container." -echo "On your host machine, run:" -echo "cd apps/login" -echo "pnpm cypress open" -echo -echo "If you want to change the login code, you can replace the login container by a hot reloading dev server." -echo "docker stop login-integration" -echo "pnpm turbo dev" -echo "Navigate to the page you want to fix, for example:" -echo "http://localhost:3001/ui/v2/login/verify?userId=221394658884845598&code=abc" -echo "Change some code and reload the page for instant feedback." -echo -echo "When you are done, make sure all integration tests pass:" -echo "pnpm cypress run" -echo - -if [ "$FAIL_COMMANDS_ON_ERRORS" != "true" ]; then - exit 0 -fi diff --git a/.devcontainer/base/commands/login-integration.update-content.sh b/.devcontainer/base/commands/login-integration.update-content.sh deleted file mode 100755 index 80493bc624f..00000000000 --- a/.devcontainer/base/commands/login-integration.update-content.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -if [ "$FAIL_COMMANDS_ON_ERRORS" == "true" ]; then - echo "Running in fail-on-errors mode" - set -e -fi - -pnpm install --frozen-lockfile \ - --filter @zitadel/login \ - --filter @zitadel/client \ - --filter @zitadel/proto \ - --filter zitadel-monorepo -pnpm cypress install -pnpm test:integration:login - -if [ "$FAIL_COMMANDS_ON_ERRORS" != "true" ]; then - exit 0 -fi diff --git a/.devcontainer/base/commands/turbo-lint-unit.post-attach.sh b/.devcontainer/base/commands/turbo-lint-unit.post-attach.sh deleted file mode 100755 index 925183df619..00000000000 --- a/.devcontainer/base/commands/turbo-lint-unit.post-attach.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash - -if [ "$FAIL_COMMANDS_ON_ERRORS" == "true" ]; then - set -e -fi - -echo -echo -echo -echo -e "THANKS FOR CONTRIBUTING TO ZITADEL 🚀" -echo -echo "Your dev container is configured for fixing linting and unit tests." -echo "No other services are running alongside this container." -echo -echo "To fix all auto-fixable linting errors, run:" -echo "pnpm turbo lint:fix" -echo -echo "To watch console linting errors, run:" -echo "pnpm turbo watch lint --filter console" -echo -echo "To watch @zitadel/client unit test failures, run:" -echo "pnpm turbo watch test:unit --filter @zitadel/client" -echo -echo "To watch @zitadel/login relevant unit tests and linting failures, run:" -echo "pnpm turbo watch lint test:unit --filter @zitadel/login..." -echo - -if [ "$FAIL_COMMANDS_ON_ERRORS" != "true" ]; then - exit 0 -fi diff --git a/.devcontainer/base/commands/turbo-lint-unit.update-content.sh b/.devcontainer/base/commands/turbo-lint-unit.update-content.sh deleted file mode 100755 index 5aae2270d4b..00000000000 --- a/.devcontainer/base/commands/turbo-lint-unit.update-content.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -if [ "$FAIL_COMMANDS_ON_ERRORS" == "true" ]; then - set -e -fi - -pnpm install --frozen-lockfile --recursive -pnpm turbo lint test:unit - -if [ "$FAIL_COMMANDS_ON_ERRORS" != "true" ]; then - exit 0 -fi diff --git a/.devcontainer/base/devcontainer.json b/.devcontainer/base/devcontainer.json deleted file mode 100644 index 1154cb183c8..00000000000 --- a/.devcontainer/base/devcontainer.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/devcontainers/spec/refs/heads/main/schemas/devContainer.schema.json", - "name": "Base: Build and Run the Components you need", - "dockerComposeFile": "docker-compose.yaml", - "service": "devcontainer", - "runServices": [ - "devContainer", - "db" - ], - "workspaceFolder": "/workspaces", - "remoteEnv": { - "DISPLAY": "" - }, - "forwardPorts": [ - 3000, - 3001, - 4200, - 8080 - ], - "onCreateCommand": "pnpm install --frozen-lockfile --recursive --prefer-offline", - "features": { - "ghcr.io/devcontainers/features/go:1": { - "version": "1.24" - }, - "ghcr.io/guiyomh/features/golangci-lint:0": {}, - "ghcr.io/jungaretti/features/make:1": {}, - "ghcr.io/devcontainers/features/docker-outside-of-docker": {} - } -} \ No newline at end of file diff --git a/.devcontainer/base/docker-compose.yaml b/.devcontainer/base/docker-compose.yaml deleted file mode 100644 index 71791ebc6a4..00000000000 --- a/.devcontainer/base/docker-compose.yaml +++ /dev/null @@ -1,198 +0,0 @@ -services: - - devcontainer: - container_name: devcontainer - build: - context: ../base - volumes: - - ../../:/workspaces:cached - command: sleep infinity - working_dir: /workspaces - environment: - ZITADEL_DATABASE_POSTGRES_HOST: db - ZITADEL_EXTERNALSECURE: false - - db: - container_name: db - image: postgres:17.0-alpine3.19 - restart: unless-stopped - volumes: - - postgres-data:/var/lib/postgresql/data - environment: - PGUSER: postgres - POSTGRES_PASSWORD: postgres - healthcheck: - test: [ "CMD-SHELL", "pg_isready" ] - interval: "10s" - timeout: "30s" - retries: 5 - start_period: "20s" - ports: - - "5432:5432" - - zitadel: - container_name: zitadel - image: "${ZITADEL_TAG:-ghcr.io/zitadel/zitadel:latest}" - command: 'start-from-init --masterkey "MasterkeyNeedsToHave32Characters" --config /zitadel.yaml --steps /zitadel.yaml' - volumes: - - ../../apps/login/acceptance/pat:/pat:delegated - - ../../apps/login/acceptance/zitadel.yaml:/zitadel.yaml:cached - network_mode: service:devcontainer - healthcheck: - test: - - CMD - - /app/zitadel - - ready - - --config - - /zitadel.yaml - depends_on: - db: - condition: "service_healthy" - - configure-login: - container_name: configure-login - restart: no - build: - context: ../../apps/login/acceptance/setup - dockerfile: ../go-command.Dockerfile - entrypoint: "./setup.sh" - network_mode: service:devcontainer - environment: - PAT_FILE: /pat/zitadel-admin-sa.pat - ZITADEL_API_URL: http://localhost:8080 - WRITE_ENVIRONMENT_FILE: /login-env/.env.test.local - SINK_EMAIL_INTERNAL_URL: http://sink:3333/email - SINK_SMS_INTERNAL_URL: http://sink:3333/sms - SINK_NOTIFICATION_URL: http://sink:3333/notification - LOGIN_BASE_URL: http://localhost:3000/ui/v2/login/ - ZITADEL_API_DOMAIN: localhost - ZITADEL_ADMIN_USER: zitadel-admin@zitadel.localhost - volumes: - - ../../apps/login/acceptance/pat:/pat:cached # Read the PAT file from zitadels setup - - ../../apps/login:/login-env:delegated # Write the environment variables file for the login - depends_on: - zitadel: - condition: "service_healthy" - - login-acceptance: - container_name: login - image: "${LOGIN_TAG:-ghcr.io/zitadel/zitadel-login:latest}" - network_mode: service:devcontainer - volumes: - - ../../apps/login/.env.test.local:/env-files/.env:cached - depends_on: - configure-login: - condition: service_completed_successfully - - mock-notifications: - container_name: mock-notifications - build: - context: ../../apps/login/acceptance/sink - dockerfile: ../go-command.Dockerfile - args: - - LOGIN_TEST_ACCEPTANCE_GOLANG_TAG=${LOGIN_TEST_ACCEPTANCE_GOLANG_TAG:-golang:1.24-alpine} - environment: - PORT: '3333' - command: - - -port - - '3333' - - -email - - '/email' - - -sms - - '/sms' - - -notification - - '/notification' - ports: - - "3333:3333" - depends_on: - configure-login: - condition: "service_completed_successfully" - - mock-oidcrp: - container_name: mock-oidcrp - build: - context: ../../apps/login/acceptance/oidcrp - dockerfile: ../go-command.Dockerfile - args: - - LOGIN_TEST_ACCEPTANCE_GOLANG_TAG=${LOGIN_TEST_ACCEPTANCE_GOLANG_TAG:-golang:1.24-alpine} - network_mode: service:devcontainer - environment: - API_URL: 'http://localhost:8080' - API_DOMAIN: 'localhost' - PAT_FILE: '/pat/zitadel-admin-sa.pat' - LOGIN_URL: 'http://localhost:3000/ui/v2/login' - ISSUER: 'http://localhost:8000' - HOST: 'localhost' - PORT: '8000' - SCOPES: 'openid profile email' - volumes: - - ../../apps/login/acceptance/pat:/pat:cached - depends_on: - configure-login: - condition: "service_completed_successfully" - - # mock-oidcop: - # container_name: mock-oidcop - # build: - # context: ../../apps/login/acceptance/idp/oidc - # dockerfile: ../../go-command.Dockerfile - # args: - # - LOGIN_TEST_ACCEPTANCE_GOLANG_TAG=${LOGIN_TEST_ACCEPTANCE_GOLANG_TAG:-golang:1.24-alpine} - # network_mode: service:devcontainer - # environment: - # API_URL: 'http://localhost:8080' - # API_DOMAIN: 'localhost' - # PAT_FILE: '/pat/zitadel-admin-sa.pat' - # SCHEMA: 'http' - # HOST: 'localhost' - # PORT: "8004" - # volumes: - # - "../apps/login/packages/acceptance/pat:/pat:cached" - # depends_on: - # configure-login: - # condition: "service_completed_successfully" - - mock-samlsp: - container_name: mock-samlsp - build: - context: ../../apps/login/acceptance/samlsp - dockerfile: ../go-command.Dockerfile - args: - - LOGIN_TEST_ACCEPTANCE_GOLANG_TAG=${LOGIN_TEST_ACCEPTANCE_GOLANG_TAG:-golang:1.24-alpine} - network_mode: service:devcontainer - environment: - API_URL: 'http://localhost:8080' - API_DOMAIN: 'localhost' - PAT_FILE: '/pat/zitadel-admin-sa.pat' - LOGIN_URL: 'http://localhost:3000/ui/v2/login' - IDP_URL: 'http://localhost:8080/saml/v2/metadata' - HOST: 'http://localhost:8001' - PORT: '8001' - volumes: - - "../apps/login/packages/acceptance/pat:/pat:cached" - depends_on: - configure-login: - condition: "service_completed_successfully" - # mock-samlidp: - # container_name: mock-samlidp - # build: - # context: ../../apps/login/acceptance/idp/saml - # dockerfile: ../../go-command.Dockerfile - # args: - # - LOGIN_TEST_ACCEPTANCE_GOLANG_TAG=${LOGIN_TEST_ACCEPTANCE_GOLANG_TAG:-golang:1.24-alpine} - # network_mode: service:devcontainer - # environment: - # API_URL: 'http://localhost:8080' - # API_DOMAIN: 'localhost' - # PAT_FILE: '/pat/zitadel-admin-sa.pat' - # SCHEMA: 'http' - # HOST: 'localhost' - # PORT: "8003" - # volumes: - # - "../apps/login/packages/acceptance/pat:/pat" - # depends_on: - # configure-login: - # condition: "service_completed_successfully" - -volumes: - postgres-data: diff --git a/.devcontainer/compose.sh b/.devcontainer/compose.sh new file mode 100755 index 00000000000..0a8c2ed9ae1 --- /dev/null +++ b/.devcontainer/compose.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# This script is used to run Docker Compose commands with the appropriate compose project set. +# This makes sure the commands don't break on different workspace_root folder names. +export DEVCONTAINER_LOCAL_WORKSPACE_ROOT=${DEVCONTAINER_LOCAL_WORKSPACE_ROOT:-${NX_WORKSPACE_ROOT:-zitadel}} +docker compose -p ${DEVCONTAINER_LOCAL_WORKSPACE_ROOT##*/}_devcontainer "$@" diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000000..9ac80d39d6a --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,57 @@ +{ + "$schema": "https://raw.githubusercontent.com/devcontainers/spec/refs/heads/main/schemas/devContainer.schema.json", + "name": "Zitadel Devcontainer", + "dockerComposeFile": "docker-compose.yaml", + "service": "devcontainer", + "runServices": [ + "devcontainer" + ], + "workspaceFolder": "/workspaces/zitadel", + "forwardPorts": [ + 3000, + 4200, + 8080, + 3100 + ], + "portsAttributes": { + "3000": { + "label": "Login", + "onAutoForward": "notify" + }, + "4200": { + "label": "Console", + "onAutoForward": "notify" + }, + "8080": { + "label": "API", + "onAutoForward": "notify" + }, + "3100": { + "label": "Docs", + "onAutoForward": "notify" + } + }, + "features": { + "ghcr.io/devcontainers/features/go:1": { + "version": "1.24" + }, + "ghcr.io/devcontainers/features/docker-outside-of-docker": {}, + "ghcr.io/schlich/devcontainer-features/cypress:1": { + "version": "14" + } + }, + "containerEnv": { + "DEVCONTAINER_LOCAL_WORKSPACE_ROOT": "${localWorkspaceFolder}" + }, + "customizations": { + "vscode": { + "extensions": [ + "golang.Go", + "Angular.ng-template", + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "nrwl.angular-console" + ] + } + } +} \ No newline at end of file diff --git a/.devcontainer/docker-compose.yaml b/.devcontainer/docker-compose.yaml new file mode 100644 index 00000000000..1f4e313d486 --- /dev/null +++ b/.devcontainer/docker-compose.yaml @@ -0,0 +1,88 @@ +services: + + devcontainer: + image: mcr.microsoft.com/devcontainers/typescript-node:22-bookworm + volumes: + - ../:/workspaces/zitadel:cached + command: sleep infinity + working_dir: /workspaces/zitadel + environment: + SHELL: /bin/bash + DEBIAN_FRONTEND: noninteractive + LANG: C.UTF-8 + LC_ALL: C.UTF-8 + COREPACK_ENABLE_DOWNLOAD_PROMPT: 0 + DEVCONTAINER_DB_HOST: db + DEVCONTAINER_API_HOST: api + DEVCONTAINER_LOGIN_HOST: login + DEVCONTAINER_LOGIN_API_MOCK_HOST: login-api-mock + DEVCONTAINER_DB_API_INTEGRATION_HOST: db-api-integration + DEVCONTAINER_DB_FUNCTIONAL_UI_HOST: db-functional-ui + ports: + - "8080:8080" + - "3000:3000" + - "4200:4200" + + db: + image: postgres:17 + restart: unless-stopped + env_file: + - ./.env.db + volumes: + - db-data-dev:/var/lib/postgresql/data + healthcheck: + test: [ "CMD-SHELL", "pg_isready", "-U", "postgres" ] + interval: "10s" + timeout: "30s" + retries: 5 + start_period: "20s" + ports: + - 5432:5432 + + db-api-integration: + image: 'postgres:17' + env_file: + - ./.env.db + environment: + PGPORT: 5433 + command: postgres -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all -c shared_buffers=1GB -c work_mem=16MB -c effective_io_concurrency=100 -c wal_level=minimal -c archive_mode=off -c max_wal_senders=0 + healthcheck: + test: [ "CMD-SHELL", "pg_isready", "-U", "postgres" ] + interval: '10s' + timeout: '30s' + retries: 5 + start_period: '20s' + ports: + - 5433:5433 + + cache-api-integration: + image: 'redis:8' + ports: + - 6379:6379 + + db-functional-ui: + image: 'postgres:17' + env_file: + - ./.env.db + environment: + PGPORT: 5434 + healthcheck: + test: [ "CMD-SHELL", "pg_isready", "-U", "postgres" ] + interval: '10s' + timeout: '30s' + retries: 5 + start_period: '20s' + ports: + - "5434:5434" + + login-api-mock: + build: + context: ../apps/login/integration/api-mock + additional_contexts: + zitadel-protos: ../proto + ports: + - 22220:22220 + - 22222:22222 + +volumes: + db-data-dev: diff --git a/.devcontainer/login-integration/devcontainer.json b/.devcontainer/login-integration/devcontainer.json deleted file mode 100644 index 27f9b260030..00000000000 --- a/.devcontainer/login-integration/devcontainer.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/devcontainers/spec/refs/heads/main/schemas/devContainer.schema.json", - "name": "Login Integration", - "dockerComposeFile": [ - "./docker-compose.yaml" - ], - "service": "login-integration-dev", - "runServices": [ - "login-integration" - ], - "workspaceFolder": "/workspaces/apps/login", - "forwardPorts": [ - 22220, - 22222, - 3001 - ], - "remoteEnv": { - "FAIL_COMMANDS_ON_ERRORS": "${localEnv:FAIL_COMMANDS_ON_ERRORS}", - "DISPLAY": "" - }, - "updateContentCommand": "/commands/login-integration.update-content.sh", - "postAttachCommand": "/commands/login-integration.post-attach.sh", - "features": { - "ghcr.io/devcontainers/features/docker-outside-of-docker": {} - } -} diff --git a/.devcontainer/login-integration/docker-compose.yaml b/.devcontainer/login-integration/docker-compose.yaml deleted file mode 100644 index c750be8aea7..00000000000 --- a/.devcontainer/login-integration/docker-compose.yaml +++ /dev/null @@ -1,35 +0,0 @@ -services: - login-integration-dev: - extends: - file: ../base/docker-compose.yaml - service: devcontainer - container_name: login-integration-dev - env_file: ../../apps/login/.env.test - environment: - CORE_MOCK_STUBS_URL: http://localhost:22220/v1/stubs - LOGIN_BASE_URL: http://localhost:3001/ui/v2/login - CYPRESS_CACHE_FOLDER: /workspaces/.artifacts/cypress - network_mode: service:mock-zitadel - depends_on: - login-integration: - condition: service_healthy - - login-integration: - container_name: login-integration - image: "${LOGIN_TAG:-ghcr.io/zitadel/zitadel-login:latest}" - build: - context: ../.. - dockerfile: build/login/Dockerfile - env_file: ../../apps/login/.env.test - network_mode: service:mock-zitadel - - mock-zitadel: - container_name: mock-zitadel - build: - context: ../../apps/login/integration/core-mock - additional_contexts: - - zitadel-protos=../../proto - ports: - - 22220:22220 - - 22222:22222 - - 3001:3001 diff --git a/.devcontainer/login-subtree/devcontainer.json b/.devcontainer/login-subtree/devcontainer.json deleted file mode 100644 index 000ed9f2626..00000000000 --- a/.devcontainer/login-subtree/devcontainer.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/devcontainers/spec/refs/heads/main/schemas/devContainer.base.schema.json", - "image": "mcr.microsoft.com/devcontainers/typescript-node:20-bookworm", - "name": "Login Subtree Container - Use the Login As If You Would Have Forked the Mirror Repo", - "workspaceFolder": "/login", - "workspaceMount": "source=${localWorkspaceFolder}/apps/login,target=/login,type=bind,consistency=cached", - "mounts": [], - "forwardPorts": [ - 22220, - 22222, - 3000, - 3001 - ], - "features": { - "ghcr.io/devcontainers/features/go:1": { - "version": "1.24" - }, - "ghcr.io/guiyomh/features/golangci-lint:0": {}, - "ghcr.io/jungaretti/features/make:1": {}, - "ghcr.io/devcontainers/features/docker-outside-of-docker": {} - } -} \ No newline at end of file diff --git a/.devcontainer/project.json b/.devcontainer/project.json new file mode 100644 index 00000000000..8b43310ebb0 --- /dev/null +++ b/.devcontainer/project.json @@ -0,0 +1,14 @@ +{ + "$schema": "../node_modules/nx/schemas/project-schema.json", + "name": "@zitadel/devcontainer", + "targets": { + "compose": { + "description": "Runs arbitrary Docker Compose commands with dev container support. All running services are manageable and addressable from in- and outside the dev container. The services are defined in .devcontainer/docker-compose.yaml.", + "executor": "nx:run-commands", + "options": { + "cwd": "{projectRoot}", + "command": "./compose.sh" + } + } + } +} \ No newline at end of file diff --git a/.devcontainer/turbo-lint-unit/devcontainer.json b/.devcontainer/turbo-lint-unit/devcontainer.json deleted file mode 100644 index 29f8ffe60dc..00000000000 --- a/.devcontainer/turbo-lint-unit/devcontainer.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/devcontainers/spec/refs/heads/main/schemas/devContainer.schema.json", - "name": "Turbo Lint and Unit Tests", - "dockerComposeFile": [ - "../base/docker-compose.yaml" - ], - "service": "devcontainer", - "runServices": [ - "devcontainer" - ], - "workspaceFolder": "/workspaces", - "forwardPorts": [ - 3001 - ], - "remoteEnv": { - "FAIL_COMMANDS_ON_ERRORS": "${localEnv:FAIL_COMMANDS_ON_ERRORS}" - }, - "updateContentCommand": "/commands/turbo-lint-unit.update-content.sh", - "postAttachCommand": "/commands/turbo-lint-unit.post-attach.sh" -} \ No newline at end of file diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index a4462d60d7c..00000000000 --- a/.dockerignore +++ /dev/null @@ -1,31 +0,0 @@ - -# .git -.codecov -.github -.gitignore -.dockerignore -**/Dockerfile -**/node_modules -**/.pnpm-store -**/.turbo -**/.next -/console/src/app/proto/generated/ -/console/.angular -/console/tmp/ -.releaserc.js -changelog.config.js -CONTRIBUTING.md -LICENSE -README.md -SECURITY.md -**/Dockerfile -**/*.Dockerfile -pkg/grpc/*/*.pb.* -pkg/grpc/*/*.swagger.json -**/.artifacts -console/.angular -console/node_modules -console/src/app/proto/generated/ -console/tmp/ -build/*.Dockerfile - diff --git a/.github/instructions/nx.instructions.md b/.github/instructions/nx.instructions.md new file mode 100644 index 00000000000..b6b3c5e00d7 --- /dev/null +++ b/.github/instructions/nx.instructions.md @@ -0,0 +1,47 @@ +--- +applyTo: '**' +--- + +// This file is automatically generated by Nx Console + +You are in an nx workspace using Nx 21.6.1 and pnpm as the package manager. + +You have access to the Nx MCP server and the tools it provides. Use them. Follow these guidelines in order to best help the user: + +# General Guidelines +- When answering questions, use the nx_workspace tool first to gain an understanding of the workspace architecture +- For questions around nx configuration, best practices or if you're unsure, use the nx_docs tool to get relevant, up-to-date docs!! Always use this instead of assuming things about nx configuration +- If the user needs help with an Nx configuration or project graph error, use the 'nx_workspace' tool to get any errors +- To help answer questions about the workspace structure or simply help with demonstrating how tasks depend on each other, use the 'nx_visualize_graph' tool + +# Generation Guidelines +If the user wants to generate something, use the following flow: + +- learn about the nx workspace and any specifics the user needs by using the 'nx_workspace' tool and the 'nx_project_details' tool if applicable +- get the available generators using the 'nx_generators' tool +- decide which generator to use. If no generators seem relevant, check the 'nx_available_plugins' tool to see if the user could install a plugin to help them +- get generator details using the 'nx_generator_schema' tool +- you may use the 'nx_docs' tool to learn more about a specific generator or technology if you're unsure +- decide which options to provide in order to best complete the user's request. Don't make any assumptions and keep the options minimalistic +- open the generator UI using the 'nx_open_generate_ui' tool +- wait for the user to finish the generator +- read the generator log file using the 'nx_read_generator_log' tool +- use the information provided in the log file to answer the user's question or continue with what they were doing + +# Running Tasks Guidelines +If the user wants help with tasks or commands (which include keywords like "test", "build", "lint", or other similar actions), use the following flow: +- Use the 'nx_current_running_tasks_details' tool to get the list of tasks (this can include tasks that were completed, stopped or failed). +- If there are any tasks, ask the user if they would like help with a specific task then use the 'nx_current_running_task_output' tool to get the terminal output for that task/command +- Use the terminal output from 'nx_current_running_task_output' to see what's wrong and help the user fix their problem. Use the appropriate tools if necessary +- If the user would like to rerun the task or command, always use `nx run ` to rerun in the terminal. This will ensure that the task will run in the nx context and will be run the same way it originally executed +- If the task was marked as "continuous" do not offer to rerun the task. This task is already running and the user can see the output in the terminal. You can use 'nx_current_running_task_output' to get the output of the task to verify the output. + + +# CI Error Guidelines +If the user wants help with fixing an error in their CI pipeline, use the following flow: +- Retrieve the list of current CI Pipeline Executions (CIPEs) using the 'nx_cloud_cipe_details' tool +- If there are any errors, use the 'nx_cloud_fix_cipe_failure' tool to retrieve the logs for a specific task +- Use the task logs to see what's wrong and help the user fix their problem. Use the appropriate tools if necessary +- Make sure that the problem is fixed by running the task that you passed into the 'nx_cloud_fix_cipe_failure' tool + + diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index be08fb03a83..00000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,145 +0,0 @@ -name: ZITADEL CI/CD - -on: - push: - tags-ignore: - - "*" - branches: - - "main" - pull_request: - workflow_dispatch: - -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -permissions: - contents: write - packages: write - issues: write - pull-requests: write - actions: write - -jobs: - core: - uses: ./.github/workflows/core.yml - with: - node_version: "20" - buf_version: "latest" - - console: - uses: ./.github/workflows/console.yml - with: - node_version: "20" - - docs: - uses: ./.github/workflows/docs.yml - with: - node_version: "20" - buf_version: "latest" - - version: - uses: ./.github/workflows/version.yml - with: - semantic_version: "23.0.7" - dry_run: true - - compile: - needs: [core, console, version] - uses: ./.github/workflows/compile.yml - with: - core_cache_key: ${{ needs.core.outputs.cache_key }} - console_cache_key: ${{ needs.console.outputs.cache_key }} - core_cache_path: ${{ needs.core.outputs.cache_path }} - console_cache_path: ${{ needs.console.outputs.cache_path }} - version: ${{ needs.version.outputs.version }} - node_version: "20" - - core-unit-test: - needs: core - uses: ./.github/workflows/core-unit-test.yml - with: - core_cache_key: ${{ needs.core.outputs.cache_key }} - core_cache_path: ${{ needs.core.outputs.cache_path }} - secrets: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - - core-integration-test: - needs: core - uses: ./.github/workflows/core-integration-test.yml - with: - core_cache_key: ${{ needs.core.outputs.cache_key }} - core_cache_path: ${{ needs.core.outputs.cache_path }} - secrets: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - - lint: - needs: [core, console] - uses: ./.github/workflows/lint.yml - with: - node_version: "18" - buf_version: "latest" - go_lint_version: "latest" - core_cache_key: ${{ needs.core.outputs.cache_key }} - core_cache_path: ${{ needs.core.outputs.cache_path }} - - container: - needs: [compile] - uses: ./.github/workflows/container.yml - secrets: inherit - permissions: - packages: write - if: ${{ github.event_name == 'workflow_dispatch' }} - with: - build_image_name: "ghcr.io/zitadel/zitadel-build" - - login-container: - uses: ./.github/workflows/login-container.yml - permissions: - packages: write - id-token: write - with: - login_build_image_name: "ghcr.io/zitadel/zitadel-login-build" - node_version: "20" - - login-integration-test: - uses: ./.github/workflows/login-integration-test.yml - needs: [login-container] - with: - login_build_image: ${{ needs.login-container.outputs.login_build_image }} - - e2e: - uses: ./.github/workflows/e2e.yml - needs: [compile] - - release: - uses: ./.github/workflows/release.yml - permissions: - packages: write - contents: write - issues: write - pull-requests: write - needs: - [ - version, - core-unit-test, - core-integration-test, - lint, - container, - login-container, - login-integration-test, - e2e, - ] - if: ${{ github.event_name == 'workflow_dispatch' }} - secrets: - GCR_JSON_KEY_BASE64: ${{ secrets.GCR_JSON_KEY_BASE64 }} - APP_ID: ${{ secrets.APP_ID }} - APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }} - with: - build_image_name: ${{ needs.container.outputs.build_image }} - semantic_version: "23.0.7" - image_name: "ghcr.io/zitadel/zitadel" - google_image_name: "europe-docker.pkg.dev/zitadel-common/zitadel-repo/zitadel" - build_image_name_login: ${{ needs.login-container.outputs.login_build_image }} - image_name_login: "ghcr.io/zitadel/zitadel-login" - google_image_name_login: "europe-docker.pkg.dev/zitadel-common/zitadel-repo/zitadel-login" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000000..2e7846f9098 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,67 @@ +name: CI + +on: + push: + tags-ignore: + - "*" + branches: + - "main" + pull_request: + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +permissions: + contents: write + packages: write + issues: write + pull-requests: write + actions: write + +jobs: + lint_test_build: + uses: ./.github/workflows/lint_test_build.yml + with: + node_version: "22" + secrets: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + NX_CLOUD_ACCESS_TOKEN_READONLY: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} + + pack: + uses: ./.github/workflows/pack.yml + secrets: + GCR_JSON_KEY_BASE64: ${{ secrets.GCR_JSON_KEY_BASE64 }} + permissions: + packages: write + if: ${{ github.event_name == 'workflow_dispatch' }} + with: + node_version: "22" + semantic_version: "23.0.7" + image_name_github_api: "ghcr.io/zitadel/zitadel" + image_name_google_api: "europe-docker.pkg.dev/zitadel-common/zitadel-repo/zitadel" + image_name_github_login: "ghcr.io/zitadel/zitadel-login" + image_name_google_login: "europe-docker.pkg.dev/zitadel-common/zitadel-repo/zitadel-login" + + release: + uses: ./.github/workflows/release.yml + permissions: + packages: write + contents: write + issues: write + pull-requests: write + needs: + - lint_test_build + - pack + if: ${{ github.event_name == 'workflow_dispatch' }} + secrets: + GCR_JSON_KEY_BASE64: ${{ secrets.GCR_JSON_KEY_BASE64 }} + APP_ID: ${{ secrets.APP_ID }} + APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }} + with: + semantic_version: "23.0.7" + image_name_github_api: "ghcr.io/zitadel/zitadel" + image_name_google_api: "europe-docker.pkg.dev/zitadel-common/zitadel-repo/zitadel" + image_name_github_login: "ghcr.io/zitadel/zitadel-login" + image_name_google_login: "europe-docker.pkg.dev/zitadel-common/zitadel-repo/zitadel-login" diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 7a997b47f6e..3be436bcc01 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -25,21 +25,21 @@ jobs: matrix: language: [go,javascript] steps: - - name: Checkout repository + - name: Checkout Repository uses: actions/checkout@v4 - if: matrix.language == 'go' name: Install Go uses: actions/setup-go@v5 with: go-version-file: go.mod - - # node to install sass for go - - if: matrix.language == 'go' - uses: actions/setup-node@v4 - if: matrix.language == 'go' + name: Set up pnpm + uses: pnpm/action-setup@v4 + - name: Generate gRPC Stubs and Static Assets + if: matrix.language == 'go' run: | - npm install -g sass - make core_build + pnpm install --frozen-lockfile + pnpm nx run-many --nxBail --projects @zitadel/api --targets generate-stubs generate-statik generate-assets # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@v3 diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml deleted file mode 100644 index 0c36624a46f..00000000000 --- a/.github/workflows/compile.yml +++ /dev/null @@ -1,89 +0,0 @@ -name: Compile - -on: - workflow_call: - inputs: - core_cache_key: - required: true - type: string - core_cache_path: - required: true - type: string - console_cache_key: - required: true - type: string - console_cache_path: - required: true - type: string - version: - required: true - type: string - node_version: - required: true - type: string - -jobs: - executable: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - goos: [linux, darwin, windows] - goarch: [amd64, arm64] - - steps: - - uses: actions/checkout@v4 - - uses: actions/cache/restore@v4 - timeout-minutes: 1 - name: restore console - with: - path: ${{ inputs.console_cache_path }} - key: ${{ inputs.console_cache_key }} - fail-on-cache-miss: true - - uses: actions/cache/restore@v4 - timeout-minutes: 1 - name: restore core - with: - path: ${{ inputs.core_cache_path }} - key: ${{ inputs.core_cache_key }} - fail-on-cache-miss: true - - uses: actions/setup-go@v5 - with: - go-version-file: "go.mod" - - name: compile - timeout-minutes: 5 - run: | - GOOS="${{matrix.goos}}" \ - GOARCH="${{matrix.goarch}}" \ - VERSION="${{ inputs.version }}" \ - COMMIT_SHA="${{ github.sha }}" \ - make compile_pipeline - - name: create folder - run: | - mkdir zitadel-${{ matrix.goos }}-${{ matrix.goarch }} - mv zitadel zitadel-${{ matrix.goos }}-${{ matrix.goarch }}/ - cp LICENSE zitadel-${{ matrix.goos }}-${{ matrix.goarch }}/ - cp README.md zitadel-${{ matrix.goos }}-${{ matrix.goarch }}/ - tar -czvf zitadel-${{ matrix.goos }}-${{ matrix.goarch }}.tar.gz zitadel-${{ matrix.goos }}-${{ matrix.goarch }} - - uses: actions/upload-artifact@v4 - with: - name: zitadel-${{ matrix.goos }}-${{ matrix.goarch }} - path: zitadel-${{ matrix.goos }}-${{ matrix.goarch }}.tar.gz - - checksums: - runs-on: ubuntu-latest - needs: [executable] - steps: - - uses: actions/download-artifact@v4 - with: - path: executables - pattern: 'zitadel-*-*' - - name: move files one folder up - run: mv */*.tar.gz . && find . -type d -empty -delete - working-directory: executables - - run: sha256sum * > checksums.txt - working-directory: executables - - uses: actions/upload-artifact@v4 - with: - name: checksums.txt - path: executables/checksums.txt diff --git a/.github/workflows/console.yml b/.github/workflows/console.yml deleted file mode 100644 index 8cb1227a1a8..00000000000 --- a/.github/workflows/console.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: Build console - -on: - workflow_call: - inputs: - node_version: - required: true - type: string - outputs: - cache_key: - value: ${{ jobs.build.outputs.cache_key }} - cache_path: - value: ${{ jobs.build.outputs.cache_path }} - -env: - cache_path: console/dist/console - -jobs: - build: - outputs: - cache_key: ${{ steps.cache.outputs.cache-primary-key }} - cache_path: ${{ env.cache_path }} - runs-on: - group: zitadel-public - steps: - - uses: actions/checkout@v4 - - uses: actions/cache/restore@v4 - timeout-minutes: 1 - continue-on-error: true - id: cache - with: - key: console-${{ hashFiles('console', 'proto', '!console/dist') }} - restore-keys: | - console- - path: ${{ env.cache_path }} - - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - uses: pnpm/action-setup@v4 - - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - uses: actions/setup-node@v4 - with: - node-version: ${{ inputs.node_version }} - cache: "pnpm" - cache-dependency-path: pnpm-lock.yaml - - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - name: Install dependencies - run: pnpm install --frozen-lockfile - - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - name: Build console with Turbo - run: pnpm turbo build --filter=./console - - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - uses: actions/cache/save@v4 - with: - path: ${{ env.cache_path }} - key: ${{ steps.cache.outputs.cache-primary-key }} diff --git a/.github/workflows/container.yml b/.github/workflows/container.yml deleted file mode 100644 index ec6bbe58847..00000000000 --- a/.github/workflows/container.yml +++ /dev/null @@ -1,173 +0,0 @@ -name: Container - -on: - workflow_call: - inputs: - build_image_name: - required: true - type: string - outputs: - build_image: - value: '${{ inputs.build_image_name }}:${{ github.sha }}' - -permissions: - packages: write - -env: - default_labels: | - org.opencontainers.image.documentation=https://zitadel.com/docs - org.opencontainers.image.vendor=CAOS AG - -jobs: - build: - name: zitadel - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - arch: [amd64,arm64] - steps: - - - uses: actions/checkout@v4 - - - name: Scratch meta - id: scratch-meta - uses: docker/metadata-action@v5 - with: - images: ${{ inputs.build_image_name }} - labels: ${{ env.default_labels}} - tags: | - type=sha,prefix=,suffix=,format=long - - - name: Debug meta - id: debug-meta - uses: docker/metadata-action@v5 - with: - images: ${{ inputs.build_image_name }} - labels: ${{ env.default_labels}} - tags: | - type=sha,prefix=,suffix=-debug,format=long - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to Docker registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - uses: actions/download-artifact@v4 - with: - path: .artifacts - name: zitadel-linux-${{ matrix.arch }} - - - name: Unpack executable - run: | - tar -xvf .artifacts/zitadel-linux-${{ matrix.arch }}.tar.gz - mv zitadel-linux-${{ matrix.arch }}/zitadel ./zitadel - - - name: Debug - id: build-debug - uses: docker/build-push-action@v6 - timeout-minutes: 5 - with: - context: . - cache-from: type=gha - cache-to: type=gha,mode=max - file: build/zitadel/Dockerfile - target: artifact - platforms: linux/${{ matrix.arch }} - push: true - labels: ${{ steps.debug-meta.outputs.labels }} - outputs: type=image,name=${{ inputs.build_image_name }},push-by-digest=true,name-canonical=true,push=true - - - name: Scratch - id: build-scratch - uses: docker/build-push-action@v6 - timeout-minutes: 3 - with: - context: . - cache-from: type=gha - cache-to: type=gha,mode=max - file: build/zitadel/Dockerfile - target: final - platforms: linux/${{ matrix.arch }} - push: true - labels: ${{ steps.scratch-meta.outputs.labels }} - outputs: type=image,name=${{ inputs.build_image_name }},push-by-digest=true,name-canonical=true,push=true - - - name: Export debug digest - run: | - mkdir -p /tmp/digests/debug - digest="${{ steps.build-debug.outputs.digest }}" - touch "/tmp/digests/debug/${digest#sha256:}" - - - name: Export scratch digest - run: | - mkdir -p /tmp/digests/scratch - digest="${{ steps.build-scratch.outputs.digest }}" - touch "/tmp/digests/scratch/${digest#sha256:}" - - - name: Upload digest - uses: actions/upload-artifact@v4 - with: - name: digests-${{ matrix.arch }} - path: /tmp/digests - if-no-files-found: error - retention-days: 1 - - merge: - runs-on: ubuntu-latest - needs: - - build - strategy: - fail-fast: false - matrix: - image: [scratch, debug] - include: - - image: scratch - suffix: '' - - image: debug - suffix: '-debug' - steps: - - - name: Download digests - uses: actions/download-artifact@v4 - with: - pattern: digests-* - path: /tmp/digests - merge-multiple: true - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to Docker registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Docker meta - id: build-meta - uses: docker/metadata-action@v5 - with: - images: '${{ inputs.build_image_name }}' - tags: | - type=sha,prefix=,suffix=${{ matrix.suffix }},format=long - - - name: Create build manifest list and push - working-directory: /tmp/digests/${{ matrix.image }} - run: | - docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< '${{ steps.build-meta.outputs.json }}') \ - $(printf '${{ inputs.build_image_name }}@sha256:%s ' *) - - - name: Inspect build image - run: | - docker buildx imagetools inspect ${{ inputs.build_image_name }}:${{ github.sha }}${{ matrix.suffix }} - diff --git a/.github/workflows/core-integration-test.yml b/.github/workflows/core-integration-test.yml deleted file mode 100644 index be6ad0d3d0d..00000000000 --- a/.github/workflows/core-integration-test.yml +++ /dev/null @@ -1,100 +0,0 @@ -name: Integration test core - -on: - workflow_call: - inputs: - core_cache_key: - required: true - type: string - core_cache_path: - required: true - type: string - secrets: - CODECOV_TOKEN: - required: true - -jobs: - postgres: - runs-on: - group: zitadel-public - services: - postgres: - image: postgres:17 - ports: - - 5432:5432 - env: - POSTGRES_USER: zitadel - PGUSER: zitadel - POSTGRES_DB: zitadel - POSTGRES_HOST_AUTH_METHOD: trust - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - --health-start-period 10s - cache: - image: redis:latest - ports: - - 6379:6379 - steps: - - - uses: actions/checkout@v4 - - - uses: actions/setup-go@v5 - with: - go-version-file: 'go.mod' - - - uses: actions/cache/restore@v4 - timeout-minutes: 1 - name: restore core - id: restore-core - with: - path: ${{ inputs.core_cache_path }} - key: ${{ inputs.core_cache_key }} - fail-on-cache-miss: true - - - id: go-cache-path - name: set cache path - run: echo "GO_CACHE_PATH=$(go env GOCACHE)" >> $GITHUB_OUTPUT - - - uses: actions/cache/restore@v4 - id: cache - timeout-minutes: 1 - continue-on-error: true - name: restore previous results - with: - key: integration-test-postgres-${{ inputs.core_cache_key }} - restore-keys: | - integration-test-postgres-core- - path: ${{ steps.go-cache-path.outputs.GO_CACHE_PATH }} - - - name: test - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - env: - ZITADEL_MASTERKEY: MasterkeyNeedsToHave32Characters - run: make core_integration_test - - - name: upload server logs - if: always() - uses: actions/upload-artifact@v4 - with: - name: integration-test-server-logs - path: | - tmp/zitadel.log - tmp/race.log.* - - - name: publish coverage - uses: codecov/codecov-action@v4.3.0 - with: - file: profile.cov - name: core-integration-tests-postgres - flags: core-integration-tests-postgres - token: ${{ secrets.CODECOV_TOKEN }} - - - uses: actions/cache/save@v4 - name: cache results - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - with: - key: integration-test-postgres-${{ inputs.core_cache_key }} - path: ${{ steps.go-cache-path.outputs.GO_CACHE_PATH }} diff --git a/.github/workflows/core-unit-test.yml b/.github/workflows/core-unit-test.yml deleted file mode 100644 index 9fb5f572c7a..00000000000 --- a/.github/workflows/core-unit-test.yml +++ /dev/null @@ -1,73 +0,0 @@ -name: Unit test core - -on: - workflow_call: - inputs: - core_cache_key: - required: true - type: string - core_cache_path: - required: true - type: string - crdb_version: - required: false - type: string - secrets: - CODECOV_TOKEN: - required: true - -jobs: - test: - runs-on: - group: zitadel-public - steps: - - - uses: actions/checkout@v3 - - - uses: actions/setup-go@v5 - with: - go-version-file: 'go.mod' - - - uses: actions/cache/restore@v4 - timeout-minutes: 1 - name: restore core - id: restore-core - with: - path: ${{ inputs.core_cache_path }} - key: ${{ inputs.core_cache_key }} - fail-on-cache-miss: true - - - id: go-cache-path - name: set cache path - run: echo "GO_CACHE_PATH=$(go env GOCACHE)" >> $GITHUB_OUTPUT - - - uses: actions/cache/restore@v4 - id: cache - timeout-minutes: 1 - continue-on-error: true - name: restore previous results - with: - key: unit-test-${{ inputs.core_cache_key }} - restore-keys: | - unit-test-core- - path: ${{ steps.go-cache-path.outputs.GO_CACHE_PATH }} - - - name: test - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - run: make core_unit_test - - - name: publish coverage - uses: codecov/codecov-action@v4.3.0 - with: - file: profile.cov - name: core-unit-tests - flags: core-unit-tests - token: ${{ secrets.CODECOV_TOKEN }} - - - uses: actions/cache/save@v4 - name: cache results - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - with: - key: unit-test-${{ inputs.core_cache_key }} - path: ${{ steps.go-cache-path.outputs.GO_CACHE_PATH }} - \ No newline at end of file diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml deleted file mode 100644 index 940da35f0d3..00000000000 --- a/.github/workflows/core.yml +++ /dev/null @@ -1,81 +0,0 @@ -name: Build core - -on: - workflow_call: - inputs: - buf_version: - required: true - type: string - node_version: - required: true - type: string - outputs: - cache_key: - value: ${{ jobs.build.outputs.cache_key }} - cache_path: - value: ${{ jobs.build.outputs.cache_path }} - -env: - cache_path: | - internal/statik/statik.go - internal/notification/statik/statik.go - internal/api/ui/login/static/resources/themes/zitadel/css/zitadel.css* - internal/api/ui/login/statik/statik.go - internal/api/assets/authz.go - internal/api/assets/router.go - openapi/v2 - pkg/grpc/**/*.pb.* - pkg/grpc/**/*.connect.go - -jobs: - build: - runs-on: - group: zitadel-public - outputs: - cache_key: ${{ steps.cache.outputs.cache-primary-key }} - cache_path: ${{ env.cache_path }} - steps: - - - uses: actions/checkout@v4 - - - uses: actions/cache/restore@v4 - timeout-minutes: 1 - continue-on-error: true - id: cache - with: - key: core-${{ hashFiles( 'go.*', 'openapi', 'cmd', 'pkg/grpc/**/*.go', 'proto', 'internal', 'backend') }} - restore-keys: | - core- - path: ${{ env.cache_path }} - - - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - uses: bufbuild/buf-setup-action@v1 - with: - github_token: ${{ github.token }} - version: ${{ inputs.buf_version }} - - - - # node to install sass - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - uses: actions/setup-node@v4 - with: - node-version: ${{ inputs.node_version }} - - - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - run: npm install -g sass - - - - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - uses: actions/setup-go@v5 - with: - go-version-file: 'go.mod' - - - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - run: make core_build - - - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - uses: actions/cache/save@v4 - with: - key: ${{ steps.cache.outputs.cache-primary-key }} - path: ${{ env.cache_path }} - \ No newline at end of file diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index 2f0ac3d7af9..00000000000 --- a/.github/workflows/docs.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: Build docs - -on: - workflow_call: - inputs: - node_version: - required: true - type: string - buf_version: - required: true - type: string - outputs: - cache_key: - value: ${{ jobs.build.outputs.cache_key }} - cache_path: - value: ${{ jobs.build.outputs.cache_path }} - -env: - cache_path: docs/build - -jobs: - build: - outputs: - cache_key: ${{ steps.cache.outputs.cache-primary-key }} - cache_path: ${{ env.cache_path }} - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/cache/restore@v4 - timeout-minutes: 1 - continue-on-error: true - id: cache - with: - key: docs-${{ hashFiles('docs', 'proto', '!docs/build', '!docs/node_modules', '!docs/protoc-gen-connect-openapi') }} - restore-keys: | - docs- - path: ${{ env.cache_path }} - - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - uses: bufbuild/buf-setup-action@v1 - with: - github_token: ${{ github.token }} - version: ${{ inputs.buf_version }} - - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - uses: pnpm/action-setup@v4 - - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - uses: actions/setup-node@v4 - with: - node-version: ${{ inputs.node_version }} - cache: "pnpm" - cache-dependency-path: pnpm-lock.yaml - - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - name: Install dependencies - run: pnpm install - - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - name: Build docs with Turbo - run: pnpm turbo build --filter=./docs - - if: ${{ steps.cache.outputs.cache-hit != 'true' }} - uses: actions/cache/save@v4 - with: - path: ${{ env.cache_path }} - key: ${{ steps.cache.outputs.cache-primary-key }} diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml deleted file mode 100644 index caa7a8c07f7..00000000000 --- a/.github/workflows/e2e.yml +++ /dev/null @@ -1,64 +0,0 @@ -name: "ZITADEL e2e Tests" - -on: - workflow_call: - -jobs: - test: - timeout-minutes: 10 - strategy: - fail-fast: false - matrix: - browser: [firefox, chrome] - runs-on: - group: zitadel-public - steps: - - name: Checkout Repository - uses: actions/checkout@v4 - - uses: actions/download-artifact@v4 - with: - path: .artifacts - name: zitadel-linux-amd64 - - name: Unpack executable - run: | - tar -xvf .artifacts/zitadel-linux-amd64.tar.gz - mv zitadel-linux-amd64/zitadel ./zitadel - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - uses: pnpm/action-setup@v4 - - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: "pnpm" - cache-dependency-path: pnpm-lock.yaml - - name: Install dependencies - run: pnpm install - - name: Install Cypress binary - run: cd ./e2e && pnpm exec cypress install - - name: Start DB and ZITADEL - run: | - cd ./e2e - ZITADEL_IMAGE=zitadel:local docker compose up --detach --wait - - name: Cypress run - uses: cypress-io/github-action@v6 - env: - CYPRESS_BASE_URL: http://localhost:8080/ui/console - CYPRESS_WEBHOOK_HANDLER_HOST: host.docker.internal - CYPRESS_DATABASE_CONNECTION_URL: "postgresql://root@localhost:26257/zitadel" - CYPRESS_BACKEND_URL: http://localhost:8080 - with: - working-directory: e2e - browser: ${{ matrix.browser }} - config-file: cypress.config.ts - install: false - - uses: actions/upload-artifact@v4 - if: always() - with: - name: production-tests-${{ matrix.browser }} - path: | - e2e/cypress/screenshots - e2e/cypress/videos - e2e/cypress/results - retention-days: 30 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml deleted file mode 100644 index 7eb0a44672e..00000000000 --- a/.github/workflows/lint.yml +++ /dev/null @@ -1,93 +0,0 @@ -name: Lint - -on: - workflow_call: - inputs: - node_version: - required: true - type: string - buf_version: - required: true - type: string - go_lint_version: - required: true - type: string - core_cache_key: - required: true - type: string - core_cache_path: - required: true - type: string - -jobs: - lint-skip: - name: lint skip - runs-on: ubuntu-latest - if: ${{ github.event_name != 'pull_request' }} - steps: - - name: Lint skip - run: | - echo "Linting outside of pull requests is skipped" - - api: - name: api - runs-on: ubuntu-latest - continue-on-error: true - if: ${{ github.event_name == 'pull_request' }} - steps: - - uses: actions/checkout@v4 - - uses: bufbuild/buf-setup-action@v1 - with: - version: ${{ inputs.buf_version }} - github_token: ${{ secrets.GITHUB_TOKEN }} - - name: lint - uses: bufbuild/buf-lint-action@v1 - - uses: bufbuild/buf-breaking-action@v1 - with: - against: "https://github.com/${{ github.repository }}.git#branch=${{ github.base_ref }}" - - turbo-lint-unit: - if: ${{ github.event_name == 'pull_request' }} - name: turbo-lint-unit - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Install Dev Container CLI - run: npm install -g @devcontainers/cli@0.80.0 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Lint and Unit Test All JavaScript Code - run: npm run devcontainer:lint-unit - - name: Fix Failures - if: failure() - run: | - echo "Reproduce this check locally:" - echo "npm run devcontainer:lint-unit" - echo "If you have pnpm installed, most linting errors can be fixed automatically:" - echo "pnpm turbo lint:fix" - echo "In other cases, you can open the dev container called \"Turbo Lint and Unit Tests\"." - echo "You will have the same environment as the pipeline check as well as some guidance on how to fix the errors." - - core: - name: core - runs-on: ubuntu-latest - if: ${{ github.event_name == 'pull_request' }} - steps: - - name: Checkout - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version-file: "go.mod" - - uses: actions/cache/restore@v4 - timeout-minutes: 1 - name: restore core - with: - path: ${{ inputs.core_cache_path }} - key: ${{ inputs.core_cache_key }} - fail-on-cache-miss: true - - uses: golangci/golangci-lint-action@v8 - with: - version: ${{ inputs.go_lint_version }} - github-token: ${{ github.token }} - only-new-issues: true diff --git a/.github/workflows/lint_test_build.yml b/.github/workflows/lint_test_build.yml new file mode 100644 index 00000000000..66b21aacce9 --- /dev/null +++ b/.github/workflows/lint_test_build.yml @@ -0,0 +1,98 @@ +name: Lint Test Build + +on: + workflow_call: + inputs: + node_version: + required: true + type: string + secrets: + CODECOV_TOKEN: + required: true + NX_CLOUD_ACCESS_TOKEN_READONLY: + required: true + +jobs: + lint_test_build: + name: Lint, Test and Build + runs-on: depot-ubuntu-22.04-16 + environment: ${{ github.ref_protected == 'true' && 'Protected' || null }} + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + filter: tree:0 + - name: Fetch main branch + run: git fetch origin main:main + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version-file: 'go.mod' + - name: Set up pnpm + uses: pnpm/action-setup@v4 + with: + run_install: false + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ inputs.node_version }} + cache: "pnpm" + - name: Set up Docker + uses: docker/setup-docker-action@v4 + with: + version: v28.3.2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + version: v0.28.0 + - name: Set up Docker Compose + uses: docker/setup-compose-action@v1 + with: + version: v2.38.2 + - name: Install dependencies + run: pnpm install --frozen-lockfile + - name: Install Cypress binary + run: pnpm cypress install + working-directory: apps/login + - name: Set SHAs for nx affected commands + uses: nrwl/nx-set-shas@v4 + - name: Lint, Test and Build + env: + NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN || secrets.NX_CLOUD_ACCESS_TOKEN_READONLY }} + run: pnpm nx affected --nxBail --targets lint test build --exclude @zitadel/docs + - name: Suggest Pipeline Fix By Nx Cloud AI + if: failure() || cancelled() + env: + NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN || secrets.NX_CLOUD_ACCESS_TOKEN_READONLY }} + run: pnpm nx fix-ci + - name: Publish API Unit Test Coverage + uses: codecov/codecov-action@v4.3.0 + with: + file: profile.api.test-unit.cov + name: api-test-unit + flags: api-test-unit + token: ${{ secrets.CODECOV_TOKEN }} + - name: Publish API Integration Test Coverage + uses: codecov/codecov-action@v4.3.0 + with: + file: profile.api.test-integration.cov + name: api-test-integration + flags: api-test-integration + token: ${{ secrets.CODECOV_TOKEN }} + - name: Upload API Integration Test Race Logs + if: failure() || cancelled() + uses: actions/upload-artifact@v4 + with: + name: api-integration-test-race-logs + path: | + .artifacts/api-test-integration/race.log.* + - name: Upload Functional UI Test Artifacts + uses: actions/upload-artifact@v4 + if: failure() || cancelled() + with: + name: functional-ui-tests + path: | + tests/functional-ui/cypress/screenshots + tests/functional-ui/cypress/videos + tests/functional-ui/cypress/results diff --git a/.github/workflows/login-container.yml b/.github/workflows/login-container.yml deleted file mode 100644 index 50bd3b5516e..00000000000 --- a/.github/workflows/login-container.yml +++ /dev/null @@ -1,69 +0,0 @@ -name: Login Container - -on: - workflow_call: - inputs: - login_build_image_name: - description: 'The image repository name of the standalone login image' - type: string - required: true - node_version: - required: true - type: string - outputs: - login_build_image: - description: 'The full image tag of the standalone login image' - value: ${{ inputs.login_build_image_name }}:${{ github.sha }} - -permissions: - packages: write - -env: - default_labels: | - org.opencontainers.image.documentation=https://zitadel.com/docs - org.opencontainers.image.vendor=CAOS AG - org.opencontainers.image.licenses=MIT - -jobs: - login-container: - name: Build Login Container - runs-on: ubuntu-latest - permissions: - packages: write - outputs: - login_build_image: ${{ steps.short-sha.outputs.login_build_image }} - steps: - - uses: actions/checkout@v4 - - name: Login meta - id: login-meta - uses: docker/metadata-action@v5 - with: - images: ${{ inputs.login_build_image_name }} - labels: ${{ env.default_labels}} - annotations: | - manifest:org.opencontainers.image.licenses=MIT - tags: | - type=sha,prefix=,format=long - - name: Login to Docker registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: Set up Docker Buildx - id: setup-buildx - uses: docker/setup-buildx-action@v3 - - name: Bake login multi-arch - uses: docker/bake-action@v6 - env: - NODE_VERSION: ${{ inputs.node_version }} - with: - source: . - push: true - provenance: true - targets: login-standalone - files: | - ./apps/login/docker-bake.hcl - ${{ github.event_name == 'workflow_dispatch' && './apps/login/docker-bake-release.hcl' || '' }} - ./docker-bake.hcl - cwd://${{ steps.login-meta.outputs.bake-file }} diff --git a/.github/workflows/login-integration-test.yml b/.github/workflows/login-integration-test.yml deleted file mode 100644 index 5aea6d8f7a4..00000000000 --- a/.github/workflows/login-integration-test.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: Integration test core - -on: - workflow_call: - inputs: - login_build_image: - required: true - type: string - -permissions: - packages: write - -jobs: - login-integration-test: - name: login-integration-test - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Install Dev Container CLI - run: npm install -g @devcontainers/cli@0.80.0 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Pull Login Build Image - run: docker compose --file .devcontainer/login-integration/docker-compose.yaml pull - env: - LOGIN_TAG: ${{ inputs.login_build_image }} - - name: Run Integration Tests against the Login and a Mocked Zitadel API - run: npm run devcontainer:integration:login - env: - LOGIN_TAG: ${{ inputs.login_build_image }} - DOCKER_BUILDKIT: 1 - - name: Fix Failures - if: failure() - run: | - echo "Reproduce this check locally:" - echo "LOGIN_TAG=${{ inputs.login_build_image }} npm run devcontainer:integration:login" - echo "To fix the failures, open the dev container called \"Login Integration Tests\"." - echo "You will have the same environment as the pipeline check as well as some guidance on how to fix the errors." - - name: Show Compose Status - if: failure() - run: docker compose --file .devcontainer/base/docker-compose.yaml --file .devcontainer/login-integration/docker-compose.yaml ps - - name: Print Config - if: failure() - run: COMPOSE_BAKE=1 docker compose --file .devcontainer/base/docker-compose.yaml --file .devcontainer/login-integration/docker-compose.yaml config login-integration - env: - LOGIN_TAG: ${{ inputs.login_build_image }} - - name: Show Container Logs - if: failure() - run: docker compose --file .devcontainer/base/docker-compose.yaml --file .devcontainer/login-integration/docker-compose.yaml logs --timestamps --no-color --tail 100 login-integration - - name: Inspect All Failed Containers - if: failure() - run: | - docker ps -a --filter "status=exited" --filter "status=created" --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Image}}" - for container in $(docker ps -a --filter "status=exited" --filter "status=created" -q); do - echo "Inspecting container $container" - docker inspect $container || true - done diff --git a/.github/workflows/pack.yml b/.github/workflows/pack.yml new file mode 100644 index 00000000000..aa6ac9805fe --- /dev/null +++ b/.github/workflows/pack.yml @@ -0,0 +1,177 @@ +name: Package und Publish Archives and Images + +on: + workflow_call: + inputs: + node_version: + required: true + type: string + image_name_github_api: + required: true + type: string + image_name_github_login: + required: true + type: string + image_name_google_api: + required: true + type: string + image_name_google_login: + required: true + type: string + semantic_version: + required: false + type: string + secrets: + GCR_JSON_KEY_BASE64: + description: 'base64 endcrypted key to connect to Google' + required: true + +permissions: + packages: write + +env: + default_labels: | + org.opencontainers.image.documentation=https://zitadel.com/docs + org.opencontainers.image.vendor=ZITADEL + +jobs: + version: + uses: ./.github/workflows/version.yml + with: + semantic_version: ${{ inputs.semantic_version }} + dry_run: true + + pack: + runs-on: + group: zitadel-public + environment: ${{ github.ref_protected == 'true' && 'Protected' || null }} + needs: version + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + filter: tree:0 + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version-file: 'go.mod' + - name: Set up pnpm + uses: pnpm/action-setup@v4 + with: + run_install: false + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ inputs.node_version }} + cache: "pnpm" + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + version: v0.28.0 + - name: Install dependencies + run: pnpm install --frozen-lockfile + - name: Pack API and Login + env: + ZITADEL_VERSION: ${{ needs.version.outputs.version }} + NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN || secrets.NX_CLOUD_ACCESS_TOKEN_READONLY }} + run: pnpm nx run --nxBail pack + - name: Suggest Pipeline Fix By Nx Cloud AI + if: always() + env: + NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN || secrets.NX_CLOUD_ACCESS_TOKEN_READONLY }} + run: pnpm nx fix-ci + - name: Upload all platform archives + uses: actions/upload-artifact@v4 + with: + name: zitadel-archives + path: .artifacts/pack + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to Docker registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Login to Google Artifact Registry + uses: docker/login-action@v3 + with: + registry: europe-docker.pkg.dev + username: _json_key_base64 + password: ${{ secrets.GCR_JSON_KEY_BASE64 }} + - name: Generate Standard Tags and Labels from the GitHub Context for the API Scratch Container Image + id: scratch-meta + uses: docker/metadata-action@v5 + with: + images: | + ${{ inputs.image_name_github_api }} + ${{ inputs.image_name_google_api }} + labels: ${{ env.default_labels}} + tags: | + type=sha,prefix=,suffix=,format=long + - name: Build and Push the SHA-tagged API Scratch Container Image + id: build-scratch + uses: docker/build-push-action@v6 + timeout-minutes: 3 + with: + context: . + cache-from: type=gha + cache-to: type=gha,mode=max + file: apps/api/Dockerfile + target: final + platforms: linux/amd64,linux/arm64 + push: true + labels: ${{ steps.scratch-meta.outputs.labels }} + tags: ${{ steps.scratch-meta.outputs.tags }} + - name: Generate Standard Tags and Labels from the GitHub Context for the API Debug Container Image + id: debug-meta + uses: docker/metadata-action@v5 + with: + images: | + ${{ inputs.image_name_github_api }} + ${{ inputs.image_name_google_api }} + labels: ${{ env.default_labels}} + tags: | + type=sha,prefix=,suffix=-debug,format=long + - name: Build and Push the SHA-tagged API Debug Container Image + id: build-debug + uses: docker/build-push-action@v6 + timeout-minutes: 5 + with: + context: . + cache-from: type=gha + cache-to: type=gha,mode=max + file: apps/api/Dockerfile + target: builder + platforms: linux/amd64,linux/arm64 + push: true + labels: ${{ steps.debug-meta.outputs.labels }} + tags: ${{ steps.debug-meta.outputs.tags }} + outputs: type=image,name=${{ inputs.image_name_github_api }},name-canonical=true + - name: Generate Standard Tags and Labels from the GitHub Context for the Login Container Image + id: login-meta + uses: docker/metadata-action@v5 + with: + images: | + ${{ inputs.image_name_github_login }} + ${{ inputs.image_name_google_login }} + labels: | + org.opencontainers.image.licenses=MIT + ${{ env.default_labels}} + tags: | + type=sha,prefix=,suffix=,format=long + - name: Build and Push the SHA-tagged Login Container Image + id: build-login + uses: docker/build-push-action@v6 + timeout-minutes: 3 + with: + context: apps/login + cache-from: type=gha + cache-to: type=gha,mode=max + platforms: linux/amd64,linux/arm64 + push: true + labels: ${{ steps.login-meta.outputs.labels }} + tags: ${{ steps.login-meta.outputs.tags }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bfbc3d6934f..ccc3764cc8f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,22 +6,16 @@ on: semantic_version: required: true type: string - build_image_name: + image_name_github_api: required: true type: string - image_name: + image_name_google_api: required: true type: string - google_image_name: + image_name_github_login: required: true type: string - build_image_name_login: - required: true - type: string - image_name_login: - required: true - type: string - google_image_name_login: + image_name_google_login: required: true type: string secrets: @@ -47,7 +41,8 @@ jobs: # https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#create-a-release--parameters publish: runs-on: ubuntu-22.04 - needs: [ version ] + needs: version + if: needs.version.outputs.published == 'true' steps: - id: get_release uses: cardinalby/git-get-release-action@v1 @@ -72,6 +67,7 @@ jobs: docker: runs-on: ubuntu-22.04 needs: [ version ] + if: needs.version.outputs.published == 'true' steps: - name: Set up QEMU @@ -97,38 +93,38 @@ jobs: name: Publish ${{ needs.version.outputs.version }} run: | docker buildx imagetools create \ - --tag ${{ inputs.image_name }}:${{ needs.version.outputs.version }} \ - ${{ inputs.build_image_name }} + --tag ${{ inputs.image_name_github_api }}:${{ needs.version.outputs.version }} \ + ${{ inputs.image_name_github_api }}:${{ github.sha }} docker buildx imagetools create \ - --tag ${{ inputs.image_name }}:${{ needs.version.outputs.version }}-debug \ - ${{ inputs.build_image_name }}-debug + --tag ${{ inputs.image_name_github_api }}:${{ needs.version.outputs.version }}-debug \ + ${{ inputs.image_name_github_api }}:${{ github.sha }}-debug docker buildx imagetools create \ - --tag ${{ inputs.google_image_name }}:${{ needs.version.outputs.version }} \ - ${{ inputs.build_image_name }} + --tag ${{ inputs.image_name_google_api }}:${{ needs.version.outputs.version }} \ + ${{ inputs.image_name_google_api }}:${{ github.sha }} docker buildx imagetools create \ - --tag ${{ inputs.image_name_login }}:${{ needs.version.outputs.version }} \ - ${{ inputs.build_image_name_login }} + --tag ${{ inputs.image_name_github_login }}:${{ needs.version.outputs.version }} \ + ${{ inputs.image_name_github_login }}:${{ github.sha }} docker buildx imagetools create \ - --tag ${{ inputs.google_image_name_login }}:${{ needs.version.outputs.version }} \ - ${{ inputs.build_image_name_login }} + --tag ${{ inputs.image_name_google_login }}:${{ needs.version.outputs.version }} \ + ${{ inputs.image_name_google_login }}:${{ github.sha }} - name: Publish latest if: ${{ github.ref_name == 'next' }} run: | docker buildx imagetools create \ - --tag ${{ inputs.image_name }}:latest \ - ${{ inputs.build_image_name }} + --tag ${{ inputs.image_name_github_api }}:latest \ + ${{ inputs.image_name_github_api }}:${{ github.sha }} docker buildx imagetools create \ - --tag ${{ inputs.image_name }}:latest-debug \ - ${{ inputs.build_image_name }}-debug + --tag ${{ inputs.image_name_github_api }}:latest-debug \ + ${{ inputs.image_name_github_api }}:${{ github.sha }}-debug docker buildx imagetools create \ - --tag ${{ inputs.image_name_login }}:latest \ - ${{ inputs.build_image_name_login }} + --tag ${{ inputs.image_name_github_login }}:latest \ + ${{ inputs.image_name_github_login }}:${{ github.sha }} homebrew-tap: runs-on: ubuntu-22.04 needs: version - if: ${{ github.ref_name == 'next' }} + if: needs.version.outputs.published == 'true' && github.ref_name == 'next' continue-on-error: true steps: - name: generate token @@ -148,7 +144,7 @@ jobs: helm-chart: runs-on: ubuntu-22.04 needs: version - if: ${{ github.ref_name == 'next' }} + if: needs.version.outputs.published == 'true' && github.ref_name == 'next' continue-on-error: true steps: - name: generate token @@ -168,7 +164,7 @@ jobs: npm-packages: runs-on: ubuntu-latest needs: version - if: ${{ github.ref_name == 'next' }} + if: needs.version.outputs.published == 'true' && github.ref_name == 'next' continue-on-error: true steps: - name: Checkout code @@ -194,26 +190,3 @@ jobs: version: ${{ needs.version.outputs.version }} cwd: packages createGithubReleases: false - - login-repo: - runs-on: ubuntu-latest - needs: version - if: ${{ github.ref_name == 'next' }} - continue-on-error: true - steps: - - name: Checkout code - uses: actions/checkout@v4 - - name: Push Subtree - run: make login_push LOGIN_REMOTE_BRANCH=mirror-zitadel-repo - - name: Create Pull Request - uses: peter-evans/create-pull-request@v7 - with: - token: ${{ secrets.GITHUB_TOKEN }} - commit-message: 'chore: mirror zitadel repo' - branch: mirror-zitadel-repo - title: 'chore: mirror zitadel repo' - body: 'This PR updates the login repository with the latest changes from the zitadel repository.' - base: main - reviewers: | - @peintnermax - @eliobischof diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml index 063f6956a52..7b442ad1812 100644 --- a/.github/workflows/version.yml +++ b/.github/workflows/version.yml @@ -11,12 +11,12 @@ on: type: boolean outputs: version: - value: ${{ jobs.generate.outputs.version }} + value: ${{ jobs.semantic.outputs.version }} published: - value: ${{jobs.generate.outputs.published }} + value: ${{jobs.semantic.outputs.published }} jobs: - generate: + semantic: runs-on: ubuntu-22.04 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -25,16 +25,17 @@ jobs: published: ${{ steps.semantic.outputs.new_release_published }} steps: - - name: Source checkout + name: Checkout Repository uses: actions/checkout@v4 - + name: Download Artifacts uses: actions/download-artifact@v4 if: ${{ !inputs.dry_run }} with: path: .artifacts pattern: "{checksums.txt,zitadel-*}" - - name: Semantic Release + name: Run Semantic Release uses: cycjimmy/semantic-release-action@v4 id: semantic env: @@ -46,7 +47,7 @@ jobs: @semantic-release/exec@6.0.3 @semantic-release/github@10.0.2 - - name: output + name: Output Version For Dependent Workflows id: output run: if [[ ! -z "${{ steps.semantic.outputs.new_release_version }}" ]]; then echo "VERSION=v${{ steps.semantic.outputs.new_release_version }}" >> "$GITHUB_OUTPUT"; else echo "VERSION=${{ github.sha }}" >> "$GITHUB_OUTPUT";fi diff --git a/.gitignore b/.gitignore index 4c3c877a187..bbfeccbd32c 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,7 @@ # Coverage coverage.txt -profile.cov +profile*.cov # Output of the go coverage tool, specifically when used with LiteIDE *.out @@ -24,9 +24,9 @@ sandbox.go # IDE .idea -.vscode .DS_STORE .run +.vscode # credential google-credentials @@ -47,7 +47,6 @@ cmd/zitadel/zitadel /zitadel # buildfolders and generated files -tmp/ console/src/app/proto/generated/ **.pb.go !pkg/grpc/protoc/v2/options.pb.go @@ -79,21 +78,22 @@ build/local/*.env /zitadel node_modules/ .kreya +login-client.pat +admin.pat +.env.*local go.work go.work.sum # Local Netlify folder .netlify -load-test/node_modules -load-test/pnpm-debug.log -load-test/dist -load-test/output/* +dist .vercel -# Turbo -.turbo/ -**/.turbo/ - # PNPM -.pnpm-store \ No newline at end of file +.pnpm-store + +# Nx +.nx/cache +.nx/workspace-data +.cursor/rules/nx-rules.mdc diff --git a/.golangci.yaml b/.golangci.yaml index cde08dcf41d..59cf2d3922d 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -99,6 +99,7 @@ linters: - .github - .keys - .vscode + - .devcontainer - build - deploy - guides @@ -113,12 +114,13 @@ linters: - packages - console - docs - - load-test + - benchmark + - tests issues: max-issues-per-linter: 0 max-same-issues: 0 - new-from-rev: main + new-from-rev: origin/main formatters: enable: - gci @@ -138,6 +140,7 @@ formatters: - .github - .keys - .vscode + - .devcontainer - build - deploy - guides @@ -152,4 +155,5 @@ formatters: - packages - console - docs - - load-test + - benchmark + - tests diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6a20ca31d29..2d7b82d3e4a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,5 +1,78 @@ # Contributing to Zitadel +Zitadel is an open-source identity and access management platform built with a modern tech stack including Go (API), Next.js/React (Login), Angular (Console), and Docusaurus (Docs) - all orchestrated through an Nx monorepo with pnpm for efficient development workflows. + +## Quick Start + +1. Clone the repository: `git clone https://github.com/zitadel/zitadel` or [open it in a local Dev Container](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/zitadel/zitadel) or [create a GitHub Codespace](https://codespaces.new/zitadel/zitadel) +2. If you cloned the repository to your local machine, install the required development dependencies + - [Node.js v22.x](https://nodejs.org/en/download/) - Required for UI development and to run development commands `pnpm nx ...` + - [Go 1.24.x](https://go.dev/doc/install) - Required for API development + - [Docker](https://docs.docker.com/engine/install/) - Required for supporting services like the development database and for tests. + - [Cypress runtime dependencies](https://docs.cypress.io/guides/continuous-integration/introduction#Dependencies) - Required for Browser UI tests +
+ WSL2 on Windows 10 users (click to expand) + + For Cypress tests on WSL2, you may need to configure X11 forwarding. Following suggestions [here](https://stackoverflow.com/questions/62641553/setup-cypress-on-wsl-ubuntu-for-windows-10) and [here](https://github.com/microsoft/WSL/issues/4106). Use at your own risk. + + 1. Install `VcXsrv Windows X Server` + 2. Set shortcut target to `"C:\Program Files\VcXsrv\xlaunch.exe" -ac` + 3. In WSL2: `export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0` + 4. Disable access control when starting XLaunch +
+3. Use [Corepack](https://pnpm.io/installation#using-corepack) to make sure you have [pnpm](https://pnpm.io/) installed in the correct version: `corepack enable`. +4. Install node module dependencies: `pnpm install` +5. Generate code `pnpm nx run-many --target generate` +6. Optionally, install the following VSCode plugins: + - [Go](https://marketplace.visualstudio.com/items?itemName=golang.Go) - For API development. Use golangci-lint v2 as linter. + - [Angular Language Service](https://marketplace.visualstudio.com/items?itemName=Angular.ng-template) - For Console development + - [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) - Code linting + - [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) - Code formatting + - [Nx Console](https://marketplace.visualstudio.com/items?itemName=nrwl.angular-console) - Nx task runner tooling + +Jump to the dedicated sections for developing a specific project: + +- [Contributing to the API](#contribute-to-api) +- [Contributing to the Login](#contribute-to-login) +- [Contributing to the Console](#contribute-to-console) +- [Contributing to the Docs](#contribute-to-docs) +- [Contributing translations](#contribute-translations) + +## Development Commands Cheat Sheet + +This repository contains multiple interconnected projects. +You can build and start any project with Nx commands. + +| Task | Command | Notes | Details | +| ----------------------------- | ------------------------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| **Production** | `pnpm nx run PROJECT:prod` | Production server | | +| **Develop** | `pnpm nx run PROJECT:dev` | Development server | | +| **Generate** | `pnpm nx run PROJECT:generate` | Generate .gitignored files | | +| **Generate Go Files** | `pnpm nx run @zitadel/api:generate-go` | Regenerate checked-in files | This is needed to generate files using [Stringer](https://pkg.go.dev/golang.org/x/tools/cmd/stringer), [Enumer](https://github.com/dmarkham/enumer) or [gomock](https://github.com/uber-go/mock) | +| **Test - Unit** | `pnpm nx run PROJECT:test-unit` | Run unit tests | | +| **Test - Integration** | `pnpm nx run PROJECT:test-integration` | Run integration tests | Learn mnore about how to [debug API integration tests](#run-api-integration-tests) | +| **Test - Integration Stop** | `pnpm nx run PROJECT:test-integration-stop` | Stop integration containers | | +| **Test - Functional UI** | `pnpm nx run @zitadel/functional-ui:test` | Run functional UI tests | Learn more about how to [develop the Console and opening the interactive Test Suite](#pass-console-quality-checks) | +| **Test - Functional UI Stop** | `pnpm nx run @zitadel/functional-ui:stop` | Run functional UI containers | | +| **Test** | `pnpm nx run PROJECT:test` | Run all tests | | +| **Lint** | `pnpm nx run PROJECT:lint` | Check code style | | +| **Lint Fix** | `pnpm nx run PROJECT:lint-fix` | Auto-fix style issues | | + +Replace `PROJECT` with one of the following: + +- `@zitadel/zitadel` (you can omit this root level project when using `pnpm nx run`, like `pnpm nx run db`) +- `@zitadel/api` +- `@zitadel/login` +- `@zitadel/console` +- `@zitadel/docs` +- `@zitadel/client` +- `@zitadel/proto` + +Instead of the project names, you can also use their directory names for `PROJECT`, like `pnpm nx run login:dev`. +Alternatively, you can use the infix-notation, like `pnpm nx dev @zitadel/login` or `pnpm nx dev login`. +To stream all logs instead of opening the interactive terminal, disable the TUI with `pnpm nx --tui false ...`. +If a command is stuck because a process is already running, stop the Nx daemon and try again: `pnpm nx daemon --stop`. + ## Introduction Thank you for your interest in contributing! As you might know there is more than code to contribute. You can find all information needed to start contributing here. @@ -31,9 +104,10 @@ Follow [@zitadel](https://twitter.com/zitadel) on twitter [Contribute](#how-to-contribute) -- [Contribute code](#contribute) -- If you found a mistake on our [docs page](https://zitadel.com/docs) or something is missing please read [the docs section](contribute-docs) -- [Translate](#contribute-internationalization) and improve texts +- [Contribute API code](#contribute-to-api) +- [Contribute frontend code](#contribute-to-frontend) +- If you found a mistake on our [Docs page](https://zitadel.com/docs) or something is missing please read [the Docs section](#contribute-to-docs) +- [Translate](#contribute-translations) and improve texts ## How to contribute @@ -49,14 +123,14 @@ Go through the following checklist before you submit the final pull request: The code consists of the following parts: -| name | description | language | where to find | Development Guide | -| --------------- | -------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | -------------------------------------------------- | -| backend | Service that serves the grpc(-web) and RESTful API | [go](https://go.dev) | [API implementation](./internal/api/grpc) | [Contribute to Backend](contribute-backend) | -| API definitions | Specifications of the API | [Protobuf](https://developers.google.com/protocol-buffers) | [./proto/zitadel](./proto/zitadel) | [Contribute to Backend](contribute-backend) | -| console | Frontend the user interacts with after log in | [Angular](https://angular.io), [Typescript](https://www.typescriptlang.org) | [./console](./console) | [Contribute to Frontend](contribute-frontend) | -| login | Modern authentication UI built with Next.js | [Next.js](https://nextjs.org), [React](https://reactjs.org), [TypeScript](https://www.typescriptlang.org) | [./login](./login) | [Contribute to Frontend](contribute-frontend) | -| docs | Project documentation made with docusaurus | [Docusaurus](https://docusaurus.io/) | [./docs](./docs) | [Contribute to Frontend](contribute-frontend) | -| translations | Internationalization files for default languages | [YAML](https://yaml.org/) | [./console](./console) and [./internal](./internal) | [Contribute Translations](contribute-translations) | +| name | description | language | where to find | Development Guide | +| ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| API implementation | Service that serves the grpc(-web) and RESTful API | [go](https://go.dev) | [API implementation](./internal/api/grpc) | [Contribute to API](#contribute-to-api) | +| API definitions | Specifications of the API | [Protobuf](https://developers.google.com/protocol-buffers) | [./proto/zitadel](./proto/zitadel) | [Contribute to API](#contribute-to-api) | +| Console | Frontend the user interacts with after log in | [Angular](https://angular.io), [Typescript](https://www.typescriptlang.org) | [./console](./console) | [Contribute to Frontend](#contribute-to-frontend) | +| Login | Modern authentication UI built with Next.js | [Next.js](https://nextjs.org), [React](https://reactjs.org), [TypeScript](https://www.typescriptlang.org) | [./apps/login](./apps/login) | [Contribute to Frontend](#contribute-to-frontend) | +| Docs | Project documentation made with docusaurus | [Docusaurus](https://docusaurus.io/) | [./docs](./docs) | [Contribute to Frontend](#contribute-to-frontend) | +| translations | Internationalization files for default languages | YAML | [./console](./console) and [./internal](./internal) | [Contribute Translations](#contribute-translations) | Please follow the guides to validate and test the code before you contribute. @@ -67,7 +141,7 @@ Please follow the guides to validate and test the code before you contribute. `git checkout -b my-fix-branch main` -3. Make your changes following the [guidelines](#contribute) in this guide. Make sure that all tests pass. +3. Make your changes following the [guidelines](#how-to-contribute) in this guide. Make sure that all tests pass. 4. Commit the changes on the new branch @@ -149,80 +223,91 @@ The API is designed to be used by different clients, such as web applications, m Therefore, the API is designed to be easy to use, consistent, and reliable. Please check out the dedicated [API guidelines](./API_DESIGN.md) page when contributing to the API. -## Contribute Backend Code +## Contribute to API +To start developing, make sure you followed the [quick start](#quick-start) steps. +### Develop the API -### Backend Requirements - -By executing the commands from this section, you run everything you need to develop the Zitadel backend locally. - -> [!INFO] -> Some [dev containers are available](dev-containers) for remote development with docker and pipeline debugging in isolated environments. -> If you don't want to use one of the dev containers, you can develop the backend components directly on your local machine. -> To do so, proceed with installing the necessary dependencies. - -Using [Docker Compose](https://docs.docker.com/compose/), you run a [PostgreSQL](https://www.postgresql.org/download/) container on your local machine. -With [make](https://www.gnu.org/software/make/), you build a debuggable Zitadel binary and run it using [delve](https://github.com/go-delve/delve). -Then, you test your changes via the console your binary is serving at http://localhost:8080 and by verifying the database. -Once you are happy with your changes, you run end-to-end tests and tear everything down. - -Zitadel uses [golangci-lint v2](https://golangci-lint.run) for code quality checks. Please use [this configuration](.golangci.yaml) when running `golangci-lint`. We recommend setting golangci-lint as the linter in your IDE. - -The commands in this section are tested against the following software versions: - -- [Docker version 20.10.17](https://docs.docker.com/engine/install/) -- [Go version 1.22](https://go.dev/doc/install) -- [Delve 1.9.1](https://github.com/go-delve/delve/tree/v1.9.1/Documentation/installation) - -### Build and Run Zitadel - -Make some changes to the source code, then run the database locally. +Optionally build the Console ```bash -# You just need the db service to develop the backend against. -docker compose --file ./e2e/docker-compose.yaml up --detach db +pnpm nx run @zitadel/api:build-console ``` -Build the binary. This takes a few minutes, but you can speed up rebuilds. +Optionally start the Login in another terminal ```bash -make compile +pnpm nx run @zitadel/login:prod ``` -> Note: With this command, several steps are executed. -> For speeding up rebuilds, you can reexecute only specific steps you think are necessary based on your changes. -> Generating gRPC stubs: `make core_api` -> Running unit tests: `make core_unit_test` -> Generating the console: `make console_build console_move` -> Build the binary: `make compile` +Run the local development database. -You can now run and debug the binary in .artifacts/zitadel/zitadel using your favourite IDE, for example GoLand. -You can test if Zitadel does what you expect by using the UI at http://localhost:8080/ui/console. -Also, you can verify the data by running `psql "host=localhost dbname=zitadel sslmode=disable"` and running SQL queries. +```bash +pnpm nx db +``` -### Run Local Unit Tests +Start a debug session in your IDE. +For example, in VSCode, you can use a `launch.json` configuration like this. + +```json + { + "name": "Debug Zitadel API", + "type": "go", + "request": "launch", + "mode": "debug", + "env": { + "ZITADEL_DATABASE_POSTGRES_HOST": "${env:DEVCONTAINER_DB_HOST}" + }, + "program": "main.go", + "args": [ + "start-from-init", + "--config", + "${workspaceFolder}/apps/api/prod-default.yaml", + "--steps", + "${workspaceFolder}/apps/api/prod-default.yaml", + "--masterkey", + "MasterkeyNeedsToHave32Characters" + ] + } +``` + +If you have built the Console and started the Login, visit http://localhost:8080/ui/console?login_hint=zitadel-admin@zitadel.localhost and enter `Password1!` to log in. + +Call the API using the generated [](./admin.pat) with [grpcurl](https://github.com/fullstorydev/grpcurl) or [grpcui](https://github.com/fullstorydev/grpcui), for example: + +```bash +grpcurl -plaintext -H "Authorization: Bearer $(cat admin.pat)" localhost:8080 zitadel.user.v2.UserService.ListUsers +``` + +To connect to the database and explore Zitadel data, run `psql "host=${DEVCONTAINER_DB_HOST:-localhost} dbname=zitadel sslmode=disable"`. + +### Run API Unit Tests To test the code without dependencies, run the unit tests: ```bash -make core_unit_test +pnpm nx run @zitadel/api:test-unit ``` -### Run Local Integration Tests +### Run API Integration Tests -Integration tests are run as gRPC clients against a running Zitadel server binary. -The server binary is typically [build with coverage enabled](https://go.dev/doc/build-cover). -It is also possible to run a Zitadel sever in a debugger and run the integrations tests like that. In order to run the server, a database is required. - -In order to prepare the local system, the following will bring up the database, builds a coverage binary, initializes the database and starts the sever. +API tests are run as gRPC clients against a running Zitadel server binary. +The server binary is [built with coverage enabled](https://go.dev/doc/build-cover). ```bash -make core_integration_db_up core_integration_server_start +pnpm nx run @zitadel/api:test-integration ``` -When this job is finished, you can run individual package integration tests through your IDE or command-line. The actual integration test clients reside in the `integration_test` subdirectory of the package they aim to test. Integration test files use the `integration` build tag, in order to be excluded from regular unit tests. -Because of the server-client split, Go is usually unaware of changes in server code and tends to cache test results. Pass `-count 1` to disable test caching. +To develop and run the test cases from within your IDE or by the command line, start only the API. +The actual integration test clients reside in the `integration_test` subdirectory of the package they aim to test. +Integration test files use the `integration` build tag, in order to be excluded from regular unit tests. +Because of the server-client split, Go is usually unaware of changes in server code and tends to cache test results. +Pass `-count 1` to disable test caching. + +```bash +pnpm nx run @zitadel/api:test-integration-run-api +``` Example command to run a single package integration test: @@ -233,258 +318,270 @@ go test -count 1 -tags integration ./internal/api/grpc/management/integration_te To run all available integration tests: ```bash -make core_integration_test_packages +go test -count 1 -tags integration -parallel 1 $(go list -tags integration ./... | grep -e \"integration_test\" -e \"events_testing\") ``` -When you change any Zitadel server code, be sure to rebuild and restart the server before the next test run. +It is also possible to run the API in a debugger and run the integrations tests against it. +In order to run the server, a database with correctly set up data is required. +When starting the debugger, make sure the Zitadel binary starts with `start-from-init --config=./apps/api/test-integration-api.yaml --steps=./apps/api/test-integration-api.yaml --masterkey=MasterkeyNeedsToHave32Characters"` + +To cleanup after testing (deletes the ephemeral database!): ```bash -make core_integration_server_stop core_integration_server_start +pnpm nx run @zitadel/devcontainer:compose down db-api-integration cache-api-integration ``` -To cleanup after testing (deletes the database!): +### Run Functional UI Tests + +To test the whole system, including the Console UI and the Login UI, run the Functional UI tests. ```bash -make core_integration_server_stop core_integration_db_down -``` - -The test binary has the race detector enabled. `core_core_integration_server_stop` checks for any race logs reported by Go and will print them along with a `66` exit code when found. Note that the actual race condition may have happened anywhere during the server lifetime, including start, stop or serving gRPC requests during tests. - -### Run Local End-to-End Tests - -To test the whole system, including the console UI and the login UI, run the E2E tests. - -```bash -# Build the production docker image -export Zitadel_IMAGE=zitadel:local GOOS=linux -make docker_image - -# If you made changes in the e2e directory, make sure you reformat the files -pnpm turbo lint:fix --filter=e2e +# If you made changes in the tests/functional-ui directory, make sure you reformat the files +pnpm nx run @zitadel/functional-ui:lint-fix # Run the tests -docker compose --file ./e2e/docker-compose.yaml run --service-ports e2e -``` - -When you are happy with your changes, you can cleanup your environment. - -```bash -# Stop and remove the docker containers for zitadel and the database -docker compose --file ./e2e/docker-compose.yaml down -``` - -### Run Local End-to-End Tests Against Your Dev Server Console - -If you also make [changes to the console](#console), you can run the test suite against your locally built backend code and frontend server. - -```bash -# Install dependencies (from repository root) -pnpm install - -# Run the tests interactively -pnpm run open:golangangular - -# Run the tests non-interactively -pnpm run e2e:golangangular -``` - -When you are happy with your changes, you can cleanup your environment. - -```bash -# Stop and remove the docker containers for zitadel and the database -docker compose --file ./e2e/docker-compose.yaml down +pnpm nx run @zitadel/functional-ui:test ``` ## Contribute Frontend Code -This repository uses **pnpm** as package manager and **Turbo** for build orchestration. -All frontend packages are managed as a monorepo with shared dependencies and optimized builds: +This repository uses **pnpm** as package manager and **Nx** for build orchestration. -- [apps/login](contribute-login) (depends on packages/zitadel-client and packages/zitadel-proto) -- apps/login/integration -- apps/login/acceptance -- [console](contribute-console) (depends on packages/zitadel-client) -- packages/zitadel-client -- packages/zitadel-proto -- [docs](contribute-docs) +### Project Overview -### Frontend Development Requirements +Choose your contribution area: -The frontend components are run in a [Node](https://nodejs.org/en/about/) environment and are managed using the pnpm package manager and the Turborepo orchestrator. +- **[Login App](#contribute-to-login)** (Next.js/React) - Modern authentication flows +- **[Console](#contribute-to-console)** (Angular) - Admin dashboard and user management +- **[Docs](#contribute-to-docs)** (Docusaurus) - Project documentation +- **[Client Packages](#client-packages)** - Shared libraries for API communication -> [!INFO] -> Some [dev containers are available](dev-containers) for remote development with docker and pipeline debugging in isolated environments. -> If you don't want to use one of the dev containers, you can develop the frontend components directly on your local machine. -> To do so, proceed with installing the necessary dependencies. +### Project Dependencies -We use **pnpm** as package manager and **Turbo** for build orchestration. Use angular-eslint/Prettier for linting/formatting. -VSCode users, check out [this ESLint extension](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) and [this Prettier extension](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) to fix lint and formatting issues during development. - -The commands in this section are tested against the following software versions: - -- [Docker version 20.10.17](https://docs.docker.com/engine/install/) -- [Node version v20.x](https://nodejs.org/en/download/) -- [pnpm version 9.x](https://pnpm.io/installation) - -To run tests with Cypress, ensure you have installed the required [Cypress runtime dependencies](https://docs.cypress.io/guides/continuous-integration/introduction#Dependencies) - -
- Note for WSL2 on Windows 10 - Following the suggestions here subsequently here may need to XLaunch and configure your DISPLAY variable. Use at your own risk. - -1. Install `VcXsrv Windows X Server` -2. Set the target of your shortcut to `"C:\Program Files\VcXsrv\xlaunch.exe" -ac` -3. In WSL2 run `export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0` to set your DISPLAY variable -4. When starting XLaunch, make sure to disable access control -
- -### Contribute to Login - -The Login UI is a Next.js application that provides the user interface for authentication flows. -It's located in the `apps/login` directory and uses pnpm and Turbo for development. - -To start developing the login, make sure your system has the [required system dependencies](frontend-dev-requirements) installed. - -#### Development Setup - -```bash -# Start from the root of the repository -# Start the database and Zitadel backend -docker compose --file ./apps/login/acceptance/docker-compose.yaml up --detach zitadel - -# Install dependencies -pnpm install - -# Option 1: Run login development server with Turbo (recommended) -pnpm turbo dev --filter=@zitadel/login - -# Option 2: Build and serve login (production build) -pnpm turbo build --filter=@zitadel/login -cd ./login && pnpm start +``` +apps/login → packages/zitadel-client → packages/zitadel-proto +console → packages/zitadel-client → packages/zitadel-proto +docs → (independent) ``` -The login UI is available at http://localhost:3000. +**Nx handles this automatically** - when you change `zitadel-proto`, Nx rebuilds dependent projects. + +### Contribute to Login + +The Login UI is a Next.js application that provides the user interface for authentication flows. +It is MIT-licensed, so you are free to change and deploy it as you like. +It's located in the `apps/login` directory and uses pnpm and Nx for development. +Get familiar with the [Login ui docs](https://zitadel.com/docs/guides/integrate/login-ui). + +To start developing, make sure you followed the [quick start](#quick-start) steps. + +#### Develop the Login against a local API + +Run the local development database. + +```bash +pnpm nx db +``` + +In another terminal, start the API + +```bash +pnpm nx run @zitadel/api:prod +``` + +In another terminal, start the Login development server + +```bash +pnpm nx run @zitadel/login:dev +``` + +Visit http://localhost:8080/ui/console?login_hint=zitadel-admin@zitadel.localhost and enter `Password1!` to log in. + +Make some changes to the source code and see how the browser is automatically updated. + +#### Develop against a Cloud instance + +If you don't want to build and run a local API, you can just run the Login development server and point it to a cloud instance. + +1. Create a personal access token and point your instance to your local Login, [as described in the Docs](https://zitadel.com/docs/self-hosting/manage/login-client). +2. Save the following file to `apps/login/.env.dev.local` + +```env +ZITADEL_API_URL=https://[your-cloud-instance-domain] +ZITADEL_SERVICE_USER_TOKEN=[personal access token for an IAM Login Client] +``` + +3. Start the development server. + +```bash +pnpm nx run @zitadel/login:dev +``` + +Visit http://localhost:8080/ui/console?login_hint=zitadel-admin@zitadel.localhost and enter `Password1!` to log in. #### Login Architecture -The login application consists of multiple packages: +The Login application consists of multiple packages: - `@zitadel/login` - Main Next.js application - `@zitadel/client` - TypeScript client library for Zitadel APIs - `@zitadel/proto` - Protocol buffer definitions and generated code -The build process uses Turbo to orchestrate dependencies: +The build process uses Nx and pnpm to orchestrate dependencies: -1. Proto generation (`@zitadel/proto#generate`) -2. Client library build (`@zitadel/client#build`) -3. Login application build (`@zitadel/login#build`) +#### Pass Login Quality Checks -#### Pass Quality Checks - -Reproduce the pipelines linting and testing for the login. +Reproduce the pipeline quality checks for the code you changed. ```bash -pnpm turbo quality --filter=./apps/login/* --filter=./packages/* +# Run Login-related linting builds and unit tests +pnpm nx run-many --projects @zitadel/login @zitadel/client @zitadel/proto --targets lint build test ``` -Fix the [quality checks](troubleshoot-frontend), add new checks that cover your changes and mark your pull request as ready for review when the pipeline checks pass. +Fix the quality checks, add new checks that cover your changes and mark your pull request as ready for review when the pipeline checks pass. -### Contribute to Console +#### Deploy -To start developing the console, make sure your system has the [required system dependencies](frontend-dev-requirements) installed. -Then, you need to decide which Zitadel instance you would like to target. -- The easiest starting point is to [configure your environment](console-dev-existing-zitadel) to use a [Zitadel cloud](https://zitadel.com) instance. -- Alternatively, you can [start a local Zitadel instance from scratch and develop against it](console-dev-local-zitadel). +- [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fzitadel%2Fzitadel&env=ZITADEL_API_URL,ZITADEL_SERVICE_USER_ID,ZITADEL_SERVICE_USER_TOKEN&root-directory=apps/login&envDescription=Setup%20a%20service%20account%20with%20IAM_LOGIN_CLIENT%20membership%20on%20your%20instance%20and%20provide%20its%20id%20and%20personal%20access%20token.&project-name=zitadel-login&repository-name=zitadel-login) +- Build and deploy with Docker: `pnpm nx run @zitadel/login:build && docker build -t my-zitadel-login apps/login` +- Build and deploy with NodeJS: `pnpm nx run @zitadel/login:prod` -#### Develop against an already running Zitadel instance +### Contribute to Console -By default, `pnpm dev --filter=console` targets a Zitadel API running at http://localhost:8080. -To change this, export the link to your environment.json in your environment variables. +To learn more about the Console, go to the Consoles [README.md](./console/README.md). + +To start developing, make sure you followed the [quick start](#quick-start) steps. + +#### Develop the Console against a local API + +Run the local development database. ```bash -export ENVIRONMENT_JSON_URL=https://my-cloud-instance-abcdef.us1.zitadel.cloud/ui/console/assets/environment.json +pnpm nx db ``` -Proceed [with configuring your console redirect URIs](console-redirect). - -#### Develop against a local Zitadel instance from scratch - -By executing the commands from this section, you run everything you need to develop the console locally. -Using [Docker Compose](https://docs.docker.com/compose/), you run [PostgreSQL](https://www.postgresql.org/download/) and the [latest release of Zitadel](https://github.com/zitadel/zitadel/releases/latest) on your local machine. -You use the Zitadel container as backend for your console. - -Run the database and the latest backend locally. +In another terminal, start the API ```bash -# Start from the root of the repository -# You just need the db and the zitadel services to develop the console against. -docker compose --file ./e2e/docker-compose.yaml up --detach zitadel +pnpm nx run @zitadel/api:prod ``` -When Zitadel accepts traffic, navigate to http://localhost:8080/ui/console/projects?login_hint=zitadel-admin@zitadel.localhost and log in with _Password1!_. - -Proceed [with configuring your console redirect URIs](console-redirect). - -#### Configure Console redirect URI - -To allow console access via http://localhost:4200, you have to configure the Zitadel backend. - -1. Navigate to /ui/console/projects in your target Zitadel instance. -3. Select the _Zitadel_ project. -4. Select the _Console_ application. -5. Select _Redirect Settings_ -6. Add _http://localhost:4200/auth/callback_ to the _Redirect URIs_ -7. Add _http://localhost:4200/signedout_ to the _Post Logout URIs_ -8. Select the _Save_ button - -#### Develop - -Run the local console development server. +In another terminal, start the Login ```bash -# Install dependencies (from repository root) -pnpm install - -# Option 1: Run console development server with live reloading and dependency rebuilds -pnpm turbo dev --filter=console - -# Option 2: Build and serve console (production build) -pnpm turbo build --filter=console -pnpm turbo serve --filter=console +pnpm nx run @zitadel/login:prod ``` -Navigate to http://localhost:4200/. +Allow the API [to redirect to your dev server](#configure-console-dev-server-redirects). + +In another terminal, start the Console development server + +```bash +pnpm nx run @zitadel/console:dev +``` + +Visit http://localhost:4200/?login_hint=zitadel-admin@zitadel.localhost and enter `Password1!` to log in. + Make some changes to the source code and see how the browser is automatically updated. -#### Pass Quality Checks +#### Develop against a Cloud instance -Reproduce the pipelines linting and testing for the console. +If you don't want to build and run a local API, you can just run the console development server and point it to a cloud instance. -```bash -pnpm turbo quality --filter=console --filter=e2e +Save the following file to console/.env.local + +```env +ENVIRONMENT_JSON_URL=https://[your-cloud-instance-domain]/ui/console/assets/environment.json ``` -Fix the [quality checks](troubleshoot-frontend), add new checks that cover your changes and mark your pull request as ready for review when the pipeline checks pass. +Start the development server. -### Contribute to Docs +```bash +pnpm nx run @zitadel/console:dev +``` -Project documentation is made with Docusaurus and is located under [./docs](./docs). The documentation uses **pnpm** and **Turbo** for development and build processes. +Allow the API [to redirect to your dev server](#configure-console-dev-server-redirects). + +Visit http://localhost:4200/?login_hint=zitadel-admin@zitadel.localhost and enter `Password1!` to log in. + +#### Configure Console Dev Server Redirects + +To allow Console access via http://localhost:4200, you have to configure the Zitadel API. + +1. Navigate to http://localhost:8080/ui/console/projects. +2. Select the _ZITADEL_ project. +3. Select the _Console_ application. +4. Select _Redirect Settings_ +5. Add _http://localhost:4200/auth/callback_ to the _Redirect URIs_ +6. Add _http://localhost:4200/signedout_ to the _Post Logout URIs_ +7. Select the _Save_ button + +#### Pass Console Quality Checks + +Run the quality checks for the code you changed. + +```bash +# Run console-related linting builds and unit tests +pnpm nx run-many --projects @zitadel/console @zitadel/client @zitadel/proto @zitadel/functional-ui --targets lint build test +``` + +Run functional UI tests against a locally built API and a dev server Console. + +Allow the API [to redirect to your dev server](#configure-console-dev-server-redirects). +Alternatively, create the file `tests/functional-ui/.env.open.local` with the following content: + +```conf +CYPRESS_BASE_URL=http://localhost:8080/ui/console +``` + +```bash +# Run the API and the Console dev server +# Beware this doesn't work from within a dev container. +pnpm nx run @zitadel/functional-ui:open +``` + +Or run all tests to completion. + +```bash +# Run the tests +pnpm nx run @zitadel/functional-ui:test +``` + +Fix the quality checks, add new checks that cover your changes and mark your pull request as ready for review when the pipeline checks pass. + +### Contribute to Client Packages + +To start developing, make sure you followed the [quick start](#quick-start) steps. + +**`@zitadel/proto`**: Protocol buffer definitions and generated TypeScript/JavaScript clients. + +```bash +pnpm nx run @zitadel/proto:generate # Regenerate after proto changes +``` + +**`@zitadel/client`**: High-level TypeScript client library with utilities for API interaction. + +```bash +pnpm nx run @zitadel/client:build # Build after changes +``` + +### Contribute to Docs + +Project documentation is made with Docusaurus and is located under [./docs](./docs). The documentation uses **pnpm** and **Nx** for development and build processes. + +To start developing, make sure you followed the [quick start](#quick-start) steps. #### Local Development ```bash -# Install dependencies (from repository root) -pnpm install +# Start development server (recommended) +pnpm nx run @zitadel/docs:dev -# Option 1: Run docs development server with Turbo (recommended) -pnpm turbo dev --filter=zitadel-docs - -# Option 2: Build and serve docs (production build) -pnpm turbo build --filter=zitadel-docs -cd ./docs && pnpm serve +# Or start production server +pnpm nx run @zitadel/docs:prod ``` -The docs build process automatically: +The Docs build process automatically: 1. Downloads required protoc plugins 2. Generates gRPC documentation from proto files @@ -519,87 +616,15 @@ Scope can be left empty (omit the brackets) or refer to the top navigation secti #### Pass Quality Checks -Reproduce the pipelines linting checks for the docs. +Verify the Docs build correctly. ```bash -pnpm turbo quality --filter=docs +pnpm nx run @zitadel/docs:build ``` -Fix the [quality checks](troubleshoot-frontend), add new checks that cover your changes and mark your pull request as ready for review when the pipeline checks pass. +Fix the quality checks, add new checks that cover your changes and mark your pull request as ready for review when the pipeline checks pass. -### Troubleshoot Frontend Quality Checks - -To debug and fix failing tasks, execute them individually using the `--filter` flag. - -We recommend to use [one of the dev containers](dev-containers) to reproduce pipeline issues. - -```bash -# to reproduce linting error in the console: -pnpm lint --filter=console -# To fix them: -pnpm lint:fix --filter=console -``` - -More tasks that are runnable on-demand. -Some tasks have variants like `pnpm test:e2e:angulargolang`, -others support arguments and flags like `pnpm test:integration run --spec apps/login/integration/integration/login.cy.ts`. -For the turbo commands, check your options with `pnpm turbo --help` - -| Command | Description | Example | -| ------------------------- | -------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `pnpm turbo run generate` | Generate stubs from Proto files | Generate API docs: `pnpm turbo run generate --filter zitadel-docs` | -| `pnpm turbo build` | Build runnable JavaScript code | Regenerate the proto stubs and build the @zitadel/client package: `pnpm turbo build --filter @zitadel/client` | -| `pnpm turbo quality` | Reproduce the pipeline quality checks | Run login-related quality checks `pnpm turbo quality --filter './apps/login/*' --filter './packages/*'` | -| `pnpm turbo lint` | Check linting issues | Check login-related linting issues for differences with main `pnpm turbo lint --filter=[main...HEAD] --filter .'/apps/login/**/*' --filter './packages/*'` | -| `pnpm turbo lint:fix` | Fix linting issues | Fix console-relevant linting issues `pnpm turbo lint:fix --filter console --filter './packages/*' --filter zitadel-e2e` | -| `pnpm turbo test:unit` | Run unit tests. Rerun on file changes | Run unit tests in all packages in and watch for file changes `pnpm turbo watch test:unit` | -| `pnpm turbo test:e2e` | Run the Cypress CLI for console e2e tests | Test interactively against the console in a local dev server and Zitadel in a container: `pnpm turbo test:e2e:angular open` | -| `pnpm turbo down` | Remove containers and volumes | Shut down containers from the integration test setup `pnpm turbo down` | -| `pnpm turbo clean` | Remove downloaded dependencies and other generated files | Remove generated docs `pnpm turbo clean --filter zitadel-docs` | - -## Developing Zitadel with Dev Containers - -You can use dev containers if you'd like to make sure you have the same development environment like the corresponding GitHub PR checks use. -The following dev containers are available: - -- **.devcontainer/base/devcontainer.json**: Contains everything you need to run whatever you want. -- **.devcontainer/turbo-lint-unit/devcontainer.json**: Runs a dev container that executes frontent linting and unit tests and then exits. This is useful to reproduce the corresponding GitHub PR check. -- **.devcontainer/turbo-lint-unit-debug/devcontainer.json**: Runs a dev container that executes frontent linting and unit tests in watch mode. You can fix the errors right away and have immediate feedback. -- **.devcontainer/login-integration/devcontainer.json**: Runs a dev container that executes login integration tests and then exits. This is useful to reproduce the corresponding GitHub PR check. -- **.devcontainer/login-integration-debug/devcontainer.json**: Runs a dev container that spins up the login in a hot-reloading dev server and executes login integration tests interactively. You can fix the errors right away and have immediate feedback. - -You can also run the GitHub PR checks locally in dev containers without having to connect to a dev container. - - -The following pnpm commands use the [devcontainer CLI](https://github.com/devcontainers/cli/) and exit when the checks are done. -The minimal system requirements are having Docker and the devcontainers CLI installed. -If you don't have the node_modules installed already, you need to install the devcontainers CLI manually. Run `npm i -g @devcontainers/cli@0.80.0`. Alternatively, the [official Microsoft VS Code extension for Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) offers a command `Dev Containers: Install devcontainer CLI` - - -```bash -npm run devcontainer:lint-unit -npm run devcontainer:integration:login -``` - -If you don't have NPM installed, copy and execute the scripts from the package.json directly. - -To connect to a dev container to have full IDE support, follow the instructions provided by your code editor/IDE to initiate the dev container. -This typically involves opening the "Command Palette" or similar functionality and searching for commands related to "Dev Containers" or "Remote Containers". -The quick start guide for VS Code can found [here](https://code.visualstudio.com/docs/devcontainers/containers#_quick-start-open-an-existing-folder-in-a-container) - -For example, to build and run the Zitadel binary in a dev container, connect your IDE to the dev container described in .devcontainer/base/devcontainer.json. -Run the following commands inside the container to start Zitadel. - -```bash -make compile && ./zitadel start-from-init --masterkey MasterkeyNeedsToHave32Characters --tlsMode disabled -``` - -Zitadel serves traffic as soon as you can see the following log line: - -`INFO[0001] server is listening on [::]:8080` - - -## Contribute Translations +## Contribute Translations Zitadel loads translations from four files: @@ -684,10 +709,10 @@ There are a few general labels that don't belong to a specific category. The category shows which part of Zitadel is affected. - **category: backend**: The backend includes the APIs, event store, command and query side. This is developed in golang. -- **category: ci**: ci is all about continues integration and pipelines. +- **category: ci**: ci is all about continuous integration and pipelines. - **category: design**: All about the ux/ui of Zitadel - **category: docs**: Adjustments or new documentations, this can be found in the docs folder. -- **category: frontend**: The frontend concerns on the one hand the Zitadel management console (Angular) and on the other hand the login (gohtml) +- **category: frontend**: The frontend concerns on the one hand the Zitadel management Console (Angular) and on the other hand the Login (gohtml) - **category: infra**: Infrastructure does include many different parts. E.g Terraform-provider, docker, metrics, etc. - **category: translation**: Everything concerning translations or new languages diff --git a/LICENSING.md b/LICENSING.md index ca4717afa5c..875b6cbea59 100644 --- a/LICENSING.md +++ b/LICENSING.md @@ -22,8 +22,9 @@ proto/ The following files and directories, including their subdirectories, are licensed under the [MIT License](https://opensource.org/license/mit/): ``` -login/ -clients/ +apps/login/ +packages/zitadel-client/ +packages/zitadel-proto/ ``` ## Community Contributions diff --git a/Makefile b/Makefile deleted file mode 100644 index dfc3ff74abb..00000000000 --- a/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -go_bin := "$$(go env GOPATH)/bin" -gen_authopt_path := "$(go_bin)/protoc-gen-authoption" -gen_zitadel_path := "$(go_bin)/protoc-gen-zitadel" - -now := $(shell date '+%Y-%m-%dT%T%z' | sed -E 's/.([0-9]{2})([0-9]{2})$$/-\1:\2/') -VERSION ?= development-$(now) -COMMIT_SHA ?= $(shell git rev-parse HEAD) -ZITADEL_IMAGE ?= zitadel:local - -GOCOVERDIR = tmp/coverage -ZITADEL_MASTERKEY ?= MasterkeyNeedsToHave32Characters - -export GOCOVERDIR ZITADEL_MASTERKEY - -LOGIN_REMOTE_NAME := login -LOGIN_REMOTE_URL ?= https://github.com/zitadel/typescript.git -LOGIN_REMOTE_BRANCH ?= main - -.PHONY: compile -compile: core_build console_build compile_pipeline - -.PHONY: docker_image -docker_image: - @if [ ! -f ./zitadel ]; then \ - echo "Compiling zitadel binary"; \ - $(MAKE) compile; \ - else \ - echo "Reusing precompiled zitadel binary"; \ - fi - DOCKER_BUILDKIT=1 docker build -f build/zitadel/Dockerfile -t $(ZITADEL_IMAGE) . - -.PHONY: compile_pipeline -compile_pipeline: console_move - CGO_ENABLED=0 go build -o zitadel -v -ldflags="-s -w -X 'github.com/zitadel/zitadel/cmd/build.commit=$(COMMIT_SHA)' -X 'github.com/zitadel/zitadel/cmd/build.date=$(now)' -X 'github.com/zitadel/zitadel/cmd/build.version=$(VERSION)' " - chmod +x zitadel - -.PHONY: core_dependencies -core_dependencies: - go mod download - -.PHONY: core_static -core_static: - go install github.com/rakyll/statik@v0.1.7 - go generate internal/api/ui/login/static/resources/generate.go - go generate internal/api/ui/login/statik/generate.go - go generate internal/notification/statik/generate.go - go generate internal/statik/generate.go - -.PHONY: core_generate_all -core_generate_all: - go install github.com/dmarkham/enumer@v1.5.11 # https://pkg.go.dev/github.com/dmarkham/enumer?tab=versions - go install github.com/rakyll/statik@v0.1.7 # https://pkg.go.dev/github.com/rakyll/statik?tab=versions - go install go.uber.org/mock/mockgen@v0.4.0 # https://pkg.go.dev/go.uber.org/mock/mockgen?tab=versions - go install golang.org/x/tools/cmd/stringer@v0.36.0 # https://pkg.go.dev/golang.org/x/tools/cmd/stringer?tab=versions - go generate ./... - -.PHONY: core_assets -core_assets: - mkdir -p docs/apis/assets - go run internal/api/assets/generator/asset_generator.go -directory=internal/api/assets/generator/ -assets=docs/apis/assets/assets.md - -.PHONY: core_api_generator -core_api_generator: -ifeq (,$(wildcard $(gen_authopt_path))) - go install internal/protoc/protoc-gen-authoption/main.go \ - && mv $$(go env GOPATH)/bin/main $(gen_authopt_path) -endif -ifeq (,$(wildcard $(gen_zitadel_path))) - go install internal/protoc/protoc-gen-zitadel/main.go \ - && mv $$(go env GOPATH)/bin/main $(gen_zitadel_path) -endif - -.PHONY: core_grpc_dependencies -core_grpc_dependencies: - go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.35.1 # https://pkg.go.dev/google.golang.org/protobuf/cmd/protoc-gen-go?tab=versions - go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.5.1 # https://pkg.go.dev/google.golang.org/grpc/cmd/protoc-gen-go-grpc?tab=versions - go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@v2.22.0 # https://pkg.go.dev/github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway?tab=versions - go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@v2.22.0 # https://pkg.go.dev/github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2?tab=versions - go install github.com/envoyproxy/protoc-gen-validate@v1.1.0 # https://pkg.go.dev/github.com/envoyproxy/protoc-gen-validate?tab=versions - go install github.com/bufbuild/buf/cmd/buf@v1.45.0 # https://pkg.go.dev/github.com/bufbuild/buf/cmd/buf?tab=versions - go install connectrpc.com/connect/cmd/protoc-gen-connect-go@v1.18.1 # https://pkg.go.dev/connectrpc.com/connect/cmd/protoc-gen-connect-go?tab=versions - -.PHONY: core_api -core_api: core_api_generator core_grpc_dependencies - buf generate - mkdir -p pkg/grpc - cp -r .artifacts/grpc/github.com/zitadel/zitadel/pkg/grpc/** pkg/grpc/ - mkdir -p openapi/v2/zitadel - cp -r .artifacts/grpc/zitadel/ openapi/v2/zitadel - -.PHONY: core_build -core_build: core_dependencies core_api core_static core_assets - -.PHONY: console_move -console_move: - cp -r console/dist/console/* internal/api/ui/console/static - -.PHONY: console_dependencies -console_dependencies: - npx pnpm install --frozen-lockfile --filter=console... - -.PHONY: console_build -console_build: console_dependencies - npx pnpm turbo build --filter=./console - -.PHONY: clean -clean: - $(RM) -r .artifacts/grpc - $(RM) $(gen_authopt_path) - $(RM) $(gen_zitadel_path) - $(RM) -r tmp/ - -.PHONY: core_unit_test -core_unit_test: - go test -race -coverprofile=profile.cov -coverpkg=./internal/... ./... - -.PHONY: core_integration_db_up -core_integration_db_up: - docker compose -f internal/integration/config/docker-compose.yaml up --pull always --wait cache postgres - -.PHONY: core_integration_db_down -core_integration_db_down: - docker compose -f internal/integration/config/docker-compose.yaml down -v - -.PHONY: core_integration_setup -core_integration_setup: - go build -cover -race -tags integration -o zitadel.test main.go - mkdir -p $${GOCOVERDIR} - GORACE="halt_on_error=1" ./zitadel.test init --config internal/integration/config/zitadel.yaml --config internal/integration/config/postgres.yaml - GORACE="halt_on_error=1" ./zitadel.test setup --masterkeyFromEnv --init-projections --config internal/integration/config/zitadel.yaml --config internal/integration/config/postgres.yaml --steps internal/integration/config/steps.yaml - -.PHONY: core_integration_server_start -core_integration_server_start: core_integration_setup - GORACE="log_path=tmp/race.log" \ - ./zitadel.test start --masterkeyFromEnv --config internal/integration/config/zitadel.yaml --config internal/integration/config/postgres.yaml \ - > tmp/zitadel.log 2>&1 \ - & printf $$! > tmp/zitadel.pid - -.PHONY: core_integration_test_packages -core_integration_test_packages: - go test -race -count 1 -tags integration -timeout 60m -parallel 1 $$(go list -tags integration ./... | grep -e "integration_test" -e "events_testing") - -.PHONY: core_integration_server_stop -core_integration_server_stop: - pid=$$(cat tmp/zitadel.pid); \ - $(RM) tmp/zitadel.pid; \ - kill $$pid; \ - if [ -s tmp/race.log.$$pid ]; then \ - cat tmp/race.log.$$pid; \ - exit 66; \ - fi - -.PHONY: core_integration_reports -core_integration_reports: - go tool covdata textfmt -i=tmp/coverage -pkg=github.com/zitadel/zitadel/internal/...,github.com/zitadel/zitadel/cmd/...,github.com/zitadel/zitadel/backend/... -o profile.cov - -.PHONY: core_integration_test -core_integration_test: core_integration_server_start core_integration_test_packages core_integration_server_stop core_integration_reports - -.PHONY: console_lint -console_lint: - npx pnpm turbo lint --filter=./console - -.PHONY: core_lint -core_lint: - golangci-lint run \ - --timeout 10m \ - --config ./.golangci.yaml \ - --out-format=github-actions \ - --concurrency=$$(getconf _NPROCESSORS_ONLN) - -.PHONY: login_pull -login_pull: login_ensure_remote - @echo "Pulling changes from the 'apps/login' subtree on remote $(LOGIN_REMOTE_NAME) branch $(LOGIN_REMOTE_BRANCH)" - git fetch $(LOGIN_REMOTE_NAME) $(LOGIN_REMOTE_BRANCH) - git merge -s ours --allow-unrelated-histories $(LOGIN_REMOTE_NAME)/$(LOGIN_REMOTE_BRANCH) -m "Synthetic merge to align histories" - git push - -.PHONY: login_push -login_push: login_ensure_remote - @echo "Pushing changes to the 'apps/login' subtree on remote $(LOGIN_REMOTE_NAME) branch $(LOGIN_REMOTE_BRANCH)" - git subtree split --prefix=apps/login -b login-sync-tmp - git checkout login-sync-tmp - git fetch $(LOGIN_REMOTE_NAME) main - git merge -s ours --allow-unrelated-histories $(LOGIN_REMOTE_NAME)/main -m "Synthetic merge to align histories" - git push $(LOGIN_REMOTE_NAME) login-sync-tmp:$(LOGIN_REMOTE_BRANCH) - git checkout - - git branch -D login-sync-tmp - -login_ensure_remote: - @if ! git remote get-url $(LOGIN_REMOTE_NAME) > /dev/null 2>&1; then \ - echo "Adding remote $(LOGIN_REMOTE_NAME)"; \ - git remote add $(LOGIN_REMOTE_NAME) $(LOGIN_REMOTE_URL); \ - else \ - echo "Remote $(LOGIN_REMOTE_NAME) already exists."; \ - fi diff --git a/README.md b/README.md index 2d933176c24..6bc74d8c08b 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@

+ + @@ -117,14 +119,14 @@ Authentication - Username / Password - Multifactor authentication with OTP, U2F, Email OTP, SMS OTP - [LDAP](https://zitadel.com/docs/guides/integrate/identity-providers/ldap) -- [External enterprise identity providers and social logins](https://zitadel.com/docs/guides/integrate/identity-providers/introduction) +- [External enterprise identity providers and social logins](https://zitadel.com/docs/guides/integrate/identity-providers/introduction) - [Device authorization](https://zitadel.com/docs/guides/solution-scenarios/device-authorization) - [OpenID Connect certified](https://openid.net/certification/#OPs) => [OIDC Endpoints](https://zitadel.com/docs/apis/openidoauth/endpoints) - [SAML 2.0](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html) => [SAML Endpoints](https://zitadel.com/docs/apis/saml/endpoints) - [Custom sessions](https://zitadel.com/docs/guides/integrate/login-ui/username-password) if you need to go beyond OIDC or SAML - [Machine-to-machine](https://zitadel.com/docs/guides/integrate/service-users/authenticate-service-users) with JWT profile, Personal Access Tokens (PAT), and Client Credentials - [Token exchange and impersonation](https://zitadel.com/docs/guides/integrate/token-exchange) -- [Beta: Hosted Login V2](https://zitadel.com/docs/guides/integrate/login/hosted-login#hosted-login-version-2-beta) our new login version 2.0 +- [Beta: Hosted Login V2](https://zitadel.com/docs/guides/integrate/login/hosted-login#hosted-login-version-2-beta) our new Login version 2.0 Multi-Tenancy @@ -142,7 +144,7 @@ Integration - [Examples and SDKs](https://zitadel.com/docs/sdk-examples/introduction) - [Audit Log and SOC/SIEM](https://zitadel.com/docs/guides/integrate/external-audit-log) - [User registration and onboarding](https://zitadel.com/docs/guides/integrate/onboarding) -- [Hosted and custom login user interface](https://zitadel.com/docs/guides/integrate/login/login-users) +- [Hosted and custom Login user interface](https://zitadel.com/docs/guides/integrate/login/login-users) Self-Service - [Self-registration](https://zitadel.com/docs/concepts/features/selfservice#registration) including verification @@ -179,7 +181,7 @@ Secure a React Application using OpenID Connect Authorization Code with PKCE ### Login with Passkeys -Use our login widget to allow easy and secure access to your applications and enjoy all the benefits of Passkeys (FIDO 2 / WebAuthN): +Use our Login widget to allow easy and secure access to your applications and enjoy all the benefits of Passkeys (FIDO 2 / WebAuthN): [![Passkeys](https://user-images.githubusercontent.com/1366906/223664178-4132faef-4832-4014-b9ab-90c2a8d15436.gif)](https://www.youtube.com/watch?v=cZjHQYurSjw&list=PLTDa7jTlOyRLdABgD2zL0LGM7rx5GZ1IR&index=2 "Passkeys") @@ -191,7 +193,7 @@ Use [Console](https://zitadel.com/docs/guides/manage/console/overview) or our [A ### Login V2 -Check out our new Login V2 version in our [typescript repository](https://github.com/zitadel/typescript) or in our [documentation](https://zitadel.com/docs/guides/integrate/login/hosted-login#hosted-login-version-2-beta) +Check out our new Login V2 version in our [documentation](https://zitadel.com/docs/guides/integrate/login/hosted-login#hosted-login-version-2-beta) ![New Login Showcase](https://github.com/user-attachments/assets/cb5c5212-128b-4dc9-b11d-cabfd3f73e26) ## Security diff --git a/apps/api/.env b/apps/api/.env new file mode 100644 index 00000000000..e2719c55198 --- /dev/null +++ b/apps/api/.env @@ -0,0 +1,5 @@ +ZITADEL_DATABASE_POSTGRES_HOST=${DEVCONTAINER_DB_API_HOST:-localhost} +ZITADEL_DATABASE_POSTGRES_PORT=5432 +ZITADEL_PORT=8080 +ZITADEL_EXTERNALPORT=8080 +API_AWAIT_DB_SERVICE=db \ No newline at end of file diff --git a/apps/api/.env.prod.test-functional-ui b/apps/api/.env.prod.test-functional-ui new file mode 100644 index 00000000000..02acf24582c --- /dev/null +++ b/apps/api/.env.prod.test-functional-ui @@ -0,0 +1,5 @@ +ZITADEL_DATABASE_POSTGRES_HOST=${DEVCONTAINER_DB_FUNCTIONAL_UI_HOST:-localhost} +ZITADEL_DATABASE_POSTGRES_PORT=5434 +ZITADEL_PORT=8083 +ZITADEL_EXTERNALPORT=8083 +API_AWAIT_DB_SERVICE=db-functional-ui \ No newline at end of file diff --git a/apps/api/.env.test-integration b/apps/api/.env.test-integration new file mode 100644 index 00000000000..d861c8eacdb --- /dev/null +++ b/apps/api/.env.test-integration @@ -0,0 +1,3 @@ +ZITADEL_DATABASE_POSTGRES_HOST=${DEVCONTAINER_DB_API_INTEGRATION_HOST:-localhost} +ZITADEL_DATABASE_POSTGRES_PORT=5433 +ZITADEL_API_URL=http://localhost:8082 diff --git a/apps/api/.env.test-integration-run-api b/apps/api/.env.test-integration-run-api new file mode 100644 index 00000000000..cebcc8e9e5e --- /dev/null +++ b/apps/api/.env.test-integration-run-api @@ -0,0 +1,5 @@ +ZITADEL_DATABASE_POSTGRES_HOST=${DEVCONTAINER_DB_API_INTEGRATION_HOST:-localhost} +ZITADEL_DATABASE_POSTGRES_PORT=5433 +ZITADEL_PORT=8082 +ZITADEL_EXTERNALPORT=8082 +API_AWAIT_DB_SERVICE=db-api-integration diff --git a/apps/api/Dockerfile b/apps/api/Dockerfile new file mode 100644 index 00000000000..92964b83fb0 --- /dev/null +++ b/apps/api/Dockerfile @@ -0,0 +1,34 @@ +# Builder stage: Sets up the environment, installs dependencies, copies the Zitadel binary, and configures permissions for the application. +# This stage produces a runnable image that can be used for debugging. +FROM debian:latest AS builder +ARG TARGETPLATFORM + +RUN apt-get update && apt-get install ca-certificates -y + +COPY apps/api/entrypoint.sh /app/entrypoint.sh +COPY ./.artifacts/bin/${TARGETPLATFORM}/zitadel /app/zitadel + +RUN useradd -s "" --home / zitadel && \ + chown zitadel /app/zitadel && \ + chmod +x /app/zitadel && \ + chown zitadel /app/entrypoint.sh && \ + chmod +x /app/entrypoint.sh + +WORKDIR /app +ENV PATH="/app:${PATH}" + +USER zitadel +ENTRYPOINT ["/app/entrypoint.sh"] + +# Final stage: Creates a minimal container image with just the Zitadel binary and necessary files +FROM scratch AS final + +COPY --from=builder /etc/passwd /etc/passwd +COPY --from=builder /etc/ssl/certs /etc/ssl/certs +COPY --from=builder /app/zitadel /app/zitadel + +HEALTHCHECK NONE +EXPOSE 8080 + +USER zitadel +ENTRYPOINT ["/app/zitadel"] diff --git a/build/zitadel/entrypoint.sh b/apps/api/entrypoint.sh similarity index 100% rename from build/zitadel/entrypoint.sh rename to apps/api/entrypoint.sh diff --git a/apps/api/prod-default.yaml b/apps/api/prod-default.yaml new file mode 100644 index 00000000000..7a332fbeb25 --- /dev/null +++ b/apps/api/prod-default.yaml @@ -0,0 +1,25 @@ +ExternalSecure: false +TLS.Enabled: false +Database.Postgres: + Database: zitadel + MaxOpenConns: 20 + MaxIdleConns: 20 + ConnMaxLifetime: 60m + ConnMaxIdleTime: 10m +FirstInstance: + LoginClientPatPath: login-client.pat + PatPath: admin.pat + InstanceName: ZITADEL + DefaultLanguage: en + Org: + LoginClient: + Machine: + Username: login-client + Name: Automatically Initialized IAM Login Client + Pat.ExpirationDate: 2099-01-01T00:00:00Z + Machine: + Machine: + Username: admin + Name: Automatically Initialized IAM admin Client + Pat.ExpirationDate: 2099-01-01T00:00:00Z +DefaultInstance.Features.LoginV2.BaseURI: http://localhost:3000/ui/v2/login diff --git a/apps/api/project.json b/apps/api/project.json new file mode 100644 index 00000000000..deb962cbb1c --- /dev/null +++ b/apps/api/project.json @@ -0,0 +1,470 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "name": "@zitadel/api", + "projectType": "application", + "namedInputs": { + "sources": [ + "{workspaceRoot}/cmd/**/*.go", + "{workspaceRoot}/internal/**/*.go", + "{workspaceRoot}/proto/**/*.go", + "{workspaceRoot}/pkg/**/*.go", + "{workspaceRoot}/main.go" + ], + "runtime": [ + "sources", + "{workspaceRoot}/go*", + "!{workspaceRoot}/internal/integration/**/*", + "!{workspaceRoot}/**/*_test.go", + "!{workspaceRoot}/**/integration_test/**/*" + ], + "pack": [ + { "env": "VERSION" }, + "runtime" + ] + }, + "targets": { + "prod": { + "description": "Runs the Go-based API backend in production mode", + "continuous": true, + "dependsOn": [ + "build" + ], + "executor": "nx:run-commands", + "options": { + "parallel": false, + "commands": [ + "timeout 300 bash -c 'until nx run @zitadel/devcontainer:compose exec ${API_AWAIT_DB_SERVICE} pg_isready -U postgres -h localhost; do echo \"Awaiting DB\"; sleep 2; done' || (echo \"Database readiness check timed out after 5 minutes\" && exit 1)", + "./.artifacts/bin/$(go env GOOS)/$(go env GOARCH)/${ZITADEL_BINARY:-zitadel.local} start-from-init --config ${API_CONFIG_FILE} --steps ${API_CONFIG_FILE} --masterkey MasterkeyNeedsToHave32Characters" + ] + }, + "defaultConfiguration": "default", + "configurations": { + "default": { + "env": { + "API_CONFIG_FILE": "{projectRoot}/prod-default.yaml" + } + }, + "test-integration-api": { + "env": { + "API_CONFIG_FILE": "{projectRoot}/test-integration-api.yaml" + } + }, + "test-functional-ui": { + "env": { + "API_CONFIG_FILE": "{projectRoot}/test-functional-ui.yaml" + } + } + } + }, + "build": { + "description": "Compiles the Go-based API backend into an executable binary.", + "dependsOn": [ + "generate", + "build-console" + ], + "command": "bash -c 'CGO_ENABLED=0 go build -o .artifacts/bin/$(go env GOOS)/$(go env GOARCH)/zitadel.local -v -ldflags=\"-s -w\"'", + "inputs": [ + { "runtime": "go env GOOS" }, + { "runtime": "go env GOARCH" }, + "runtime" + ], + "outputs": [ + "{workspaceRoot}/.artifacts/bin/*/*/zitadel.local" + ] + }, + "generate": { + "description": "Generates the code needed to start a full-featured API: gRPC and OpenAPI stubs, static files for the embedded login v1, asset routes and documentation.", + "dependsOn": [ + "generate-stubs", + "generate-assets", + "generate-statik" + ] + }, + "lint-install":{ + "description": "Installs golangci-lint binary for linting. Using go install is not recommended in the official docs, because this can produce non-deterministic results.", + "cache": true, + "command": "curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/HEAD/install.sh | sh -s -- -b .artifacts/bin/$(go env GOOS)/$(go env GOARCH) v2.5.0", + "inputs": [ + { "runtime": "go env GOOS" }, + { "runtime": "go env GOARCH" } + ], + "outputs": [ + "{workspaceRoot}/.artifacts/bin/*/*/golangci-lint" + ] + }, + "lint": { + "description": "Lints the Go code with golangci-lint using the configuration in .golangci.yaml", + "dependsOn": [ + "lint-install", + "generate-stubs", + "generate-assets" + ], + "command": "PATH=\"${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH):$PATH\" golangci-lint run --timeout 15m --config ./.golangci.yaml --verbose", + "cache": true, + "inputs": [ + "sources", + "{workspaceRoot}/.golangci.yaml" + ] + }, + "test": { + "description": "Runs all tests (unit and integration)", + "dependsOn": [ + "test-unit", + "test-integration" + ] + }, + "test-unit": { + "description": "Runs the unit tests with coverage", + "dependsOn": [ + "generate-stubs", + "generate-assets", + "generate-statik" + ], + "command": "go test -race -coverprofile=profile.api.test-unit.cov -coverpkg=./internal/... ./...", + "inputs": [ + "sources", + "{workspaceRoot}/go*" + ], + "outputs": [ + "{workspaceRoot}/profile.api.test-unit.cov" + ] + }, + "test-integration-build": { + "description": "Builds the test binary for integration tests.", + "dependsOn": [ + "generate-stubs", + "generate-assets", + "generate-statik" + ], + "command": "go build -cover -race -tags integration -o .artifacts/bin/$(go env GOOS)/$(go env GOARCH)/zitadel.test main.go", + "cache": true, + "inputs": [ + { "runtime": "go env GOOS" }, + { "runtime": "go env GOARCH" }, + "sources", + "{workspaceRoot}/internal/integration/**", + "{workspaceRoot}/go*" + ], + "outputs": [ + "{workspaceRoot}/.artifacts/bin/*/*/zitadel.test" + ] + }, + "test-integration-run-db": { + "description": "Runs the database and cache for integration tests.", + "continuous": true, + "command": "nx run @zitadel/devcontainer:compose up --force-recreate --renew-anon-volumes db-api-integration cache-api-integration" + }, + "test-integration-run-api": { + "description": "Runs the API server for the integration tests.", + "continuous": true, + "dependsOn": [ + "test-integration-build" + ], + "executor": "nx:run-commands", + "options": { + "env": { + "ZITADEL_BINARY": "zitadel.test", + "GOCOVERDIR": "{workspaceRoot}/.artifacts/api-test-integration/coverage", + "GORACE": "log_path=.artifacts/api-test-integration/race.log" + }, + "parallel": false, + "commands": [ + "rm -rf .artifacts/api-test-integration", + "mkdir -p ${GOCOVERDIR}", + "nx run @zitadel/api:prod:test-integration-api --excludeTaskDependencies" + ] + } + }, + "test-integration": { + "description": "Runs the integration tests sequentially with coverage and race condition detection. Go test caching is disabled, because the tests run against an out-of-process API.", + "dependsOn": [ + "test-integration-run-db", + "test-integration-run-api" + ], + "executor": "nx:run-commands", + "options": { + "parallel": false, + "env": { + "GOCOVERDIR": "{workspaceRoot}/.artifacts/api-test-integration/coverage" + }, + "commands": [ + "wait-on --verbose --interval 2000 --simultaneous 1 --timeout 30m \"${ZITADEL_API_URL}/debug/ready\"", + "bash -c 'go test -race -count 1 -tags integration -timeout 60m -parallel 1 $(go list -tags integration ./... | grep -e \"integration_test\" -e \"events_testing\")'", + "go tool covdata textfmt -i=$GOCOVERDIR -pkg=github.com/zitadel/zitadel/internal/...,github.com/zitadel/zitadel/cmd/...,github.com/zitadel/zitadel/backend/... -o profile.api.test-integration.cov", + "nx run @zitadel/api:test-integration-stop" + ] + }, + "inputs": [ + { "runtime": "go env GOOS" }, + { "runtime": "go env GOARCH" }, + "sources", + "{workspaceRoot}/internal/integration/**", + "{workspaceRoot}/go*" + ], + "outputs": [ + "{workspaceRoot}/profile.api.test-integration.cov" + ] + }, + "test-integration-stop": { + "description": "Stops the database and cache containers used for integration tests.", + "command": "nx run @zitadel/devcontainer:compose down --volumes db-api-integration cache-api-integration" + }, + "build-console": { + "description": "Builds the Console and copies its static files to the API.", + "dependsOn": [ + "@zitadel/console:build" + ], + "command": "cp -r console/dist/console/* internal/api/ui/console/static", + "cache": true, + "outputs": [ + "{workspaceRoot}/internal/api/ui/console/static" + ] + }, + "generate-install": { + "description": "Installs the binaries needed for generating code. We avoid using go tools so the dev tool dependencies don't interfere with the prod dependencies.", + "executor": "nx:run-commands", + "options": { + "commands": [ + "GOBIN=${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH) go install github.com/dmarkham/enumer@v1.5.11", + "GOBIN=${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH) go install go.uber.org/mock/mockgen@v0.4.0", + "GOBIN=${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH) go install golang.org/x/tools/cmd/stringer@v0.36.0", + "GOBIN=${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH) go install github.com/rakyll/statik@v0.1.7", + + "GOBIN=${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH) go install github.com/bufbuild/buf/cmd/buf@v1.45.0", + "GOBIN=${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH) go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.35.1", + "GOBIN=${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH) go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.5.1", + "GOBIN=${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH) go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@v2.22.0", + "GOBIN=${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH) go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@v2.22.0", + "GOBIN=${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH) go install github.com/envoyproxy/protoc-gen-validate@v1.1.0", + "GOBIN=${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH) go install connectrpc.com/connect/cmd/protoc-gen-connect-go@v1.18.1", + "GOBIN=${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH) go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.35.1", + + "GOBIN=${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH) go install ./internal/protoc/protoc-gen-authoption", + "GOBIN=${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH) go install ./internal/protoc/protoc-gen-zitadel" + ] + }, + "cache": true, + "inputs": [ + { "runtime": "go env GOOS" }, + { "runtime": "go env GOARCH" }, + "{workspaceRoot}/internal/protoc/protoc-gen-authoption/**/*", + "{workspaceRoot}/internal/protoc/protoc-gen-zitadel/**/*" + ], + "outputs": [ + "{workspaceRoot}/.artifacts/bin/*/*/enumer", + "{workspaceRoot}/.artifacts/bin/*/*/mockgen", + "{workspaceRoot}/.artifacts/bin/*/*/stringer", + "{workspaceRoot}/.artifacts/bin/*/*/statik", + + "{workspaceRoot}/.artifacts/bin/*/*/buf", + "{workspaceRoot}/.artifacts/bin/*/*/protoc-gen-go", + "{workspaceRoot}/.artifacts/bin/*/*/protoc-gen-go-grpc", + "{workspaceRoot}/.artifacts/bin/*/*/protoc-gen-grpc-gateway", + "{workspaceRoot}/.artifacts/bin/*/*/protoc-gen-openapiv2", + "{workspaceRoot}/.artifacts/bin/*/*/protoc-gen-validate", + "{workspaceRoot}/.artifacts/bin/*/*/protoc-gen-connect-go", + + "{workspaceRoot}/.artifacts/bin/*/*/protoc-gen-authoption", + "{workspaceRoot}/.artifacts/bin/*/*/protoc-gen-zitadel" + ] + }, + "generate-stubs": { + "description": "Generates the gRPC and OpenAPI stubs from the proto files.", + "dependsOn": [ + "generate-install" + ], + "executor": "nx:run-commands", + "options": { + "parallel": false, + "commands": [ + "bash -c 'PATH=\"${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH):$PATH\" buf generate'", + "mkdir -p pkg/grpc openapi/v2/zitadel", + "cp -r .artifacts/grpc/github.com/zitadel/zitadel/pkg/grpc/** pkg/grpc/", + "cp -r .artifacts/grpc/zitadel/ openapi/v2/zitadel" + ] + }, + "cache": true, + "inputs": [ + "{workspaceRoot}/proto/**/*", + "{workspaceRoot}/buf.gen.yaml", + "{workspaceRoot}/buf.yaml" + ], + "outputs": [ + "{workspaceRoot}/pkg/grpc/**/*", + "{workspaceRoot}/openapi/v2/zitadel/**/*" + ] + }, + "generate-statik": { + "description": "Generates statik files for embedding static resources", + "dependsOn": [ + "generate-install" + ], + "executor": "nx:run-commands", + "options": { + "commands": [ + "PATH=\"${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH):$PATH\" go generate internal/api/ui/login/static/resources/generate.go", + "PATH=\"${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH):$PATH\" go generate internal/api/ui/login/statik/generate.go", + "PATH=\"${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH):$PATH\" go generate internal/notification/statik/generate.go", + "PATH=\"${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH):$PATH\" go generate internal/statik/generate.go" + ] + }, + "cache": true, + "inputs": [ + { "runtime": "go env GOOS" }, + { "runtime": "go env GOARCH" }, + "{workspaceRoot}/internal/statik/generate.go", + "{workspaceRoot}/internal/notification/statik/generate.go", + "{workspaceRoot}/internal/api/ui/login/static/resources/generate.go", + "{workspaceRoot}/internal/api/ui/login/statik/generate.go" + ], + "outputs": [ + "{workspaceRoot}/internal/statik/statik.go", + "{workspaceRoot}/internal/notification/statik/statik.go", + "{workspaceRoot}/internal/api/ui/login/static/resources/themes/zitadel/css/zitadel.css*", + "{workspaceRoot}/internal/api/ui/login/statik/statik.go" + ] + }, + "generate-assets": { + "description": "Generates asset routes and documentation", + "dependsOn": [ + "generate-install" + ], + "command": "mkdir -p docs/apis/assets && go run internal/api/assets/generator/asset_generator.go -directory=internal/api/assets/generator/ -assets=docs/apis/assets/assets.md", + "cache": true, + "inputs": [ + "{workspaceRoot}/internal/api/assets/generator/asset_generator.go" + ], + "outputs": [ + "{workspaceRoot}/internal/api/assets/authz.go", + "{workspaceRoot}/internal/api/assets/router.go", + "{workspaceRoot}/docs/apis/assets/assets.md" + ] + }, + "generate-go": { + "description": "Generates Go using Go native generation tools. This only needs to be run if sources for //go:generate files change, like for Stringer, Enumer, Mockgen etc.", + "dependsOn": [ + "generate-install" + ], + "command": "PATH=\"${PWD}/.artifacts/bin/$(go env GOOS)/$(go env GOARCH):$PATH\" go generate ./..." + }, + "pack-platform": { + "description": "Cross-compiles the binary and packages it for the platform defined by GOOS and GOARCH environment variables. The version is taken from the ZITADEL_VERSION environment variable.", + "executor": "nx:run-commands", + "options": { + "commands": [ + "mkdir -p .artifacts/pack .artifacts/bin/$GOOS/$GOARCH", + "bash -c 'EXT=\"\"; if [ \"$GOOS\" = \"windows\" ]; then EXT=\".exe\"; fi; echo \"Building for $GOOS-$GOARCH...\"; CGO_ENABLED=0 go build -o .artifacts/bin/$GOOS/$GOARCH/zitadel$EXT -v -ldflags=\"-s -w -X github.com/zitadel/zitadel/cmd/build.commit=$(git rev-parse --short HEAD) -X github.com/zitadel/zitadel/cmd/build.date=$(date \"+%Y-%m-%dT%T%z\" | sed -E \"s/.([0-9]{2})([0-9]{2})$/-\\1:\\2/\") -X github.com/zitadel/zitadel/cmd/build.version=${ZITADEL_VERSION}\"'", + "bash -c 'EXT=\"\"; if [ \"$GOOS\" = \"windows\" ]; then EXT=\".exe\"; fi; FOLDER=\".artifacts/pack/zitadel-$GOOS-$GOARCH\"; mkdir -p \"$FOLDER\"; cp \".artifacts/bin/$GOOS/$GOARCH/zitadel$EXT\" \"$FOLDER/\"; cp LICENSE \"$FOLDER/\"; cp README.md \"$FOLDER/\"; tar -czvf \"$FOLDER.tar.gz\" \"$FOLDER\"; rm -rf \"$FOLDER\"'" + ] + } + }, + "pack-darwin-amd64": { + "description": "Packages the API for Darwin AMD64 (Intel) architecture", + "dependsOn": [ + "generate-stubs", + "generate-assets", + "generate-statik" + ], + "command": "GOOS=darwin GOARCH=amd64 nx run @zitadel/api:pack-platform", + "cache": true, + "inputs": [ + "pack", + { "env": "ZITADEL_VERSION" } + ], + "outputs": [ + "{workspaceRoot}/.artifacts/pack/zitadel-darwin-amd64.tar.gz", + "{workspaceRoot}/.artifacts/bin/darwin/amd64/zitadel" + ] + }, + "pack-darwin-arm64": { + "description": "Packages the API for Darwin ARM64 (Apple Silicon) architecture", + "dependsOn": [ + "generate-stubs", + "generate-assets", + "generate-statik" + ], + "command": "GOOS=darwin GOARCH=arm64 nx run @zitadel/api:pack-platform", + "cache": true, + "inputs": [ + "pack", + { "env": "ZITADEL_VERSION" } + ], + "outputs": [ + "{workspaceRoot}/.artifacts/pack/zitadel-darwin-arm64.tar.gz", + "{workspaceRoot}/.artifacts/bin/darwin/arm64/zitadel" + ] + }, + "pack-linux-amd64": { + "description": "Packages the API for Linux AMD64 architecture", + "dependsOn": [ + "generate-stubs", + "generate-assets", + "generate-statik" + ], + "command": "GOOS=linux GOARCH=amd64 nx run @zitadel/api:pack-platform", + "cache": true, + "inputs": [ + "pack", + { "env": "ZITADEL_VERSION" } + ], + "outputs": [ + "{workspaceRoot}/.artifacts/pack/zitadel-linux-amd64.tar.gz", + "{workspaceRoot}/.artifacts/bin/linux/amd64/zitadel" + ] + }, + "pack-linux-arm64": { + "description": "Packages the API for Linux ARM64 architecture", + "dependsOn": [ + "generate-stubs", + "generate-assets", + "generate-statik" + ], + "command": "GOOS=linux GOARCH=arm64 nx run @zitadel/api:pack-platform", + "cache": true, + "inputs": [ + "pack", + { "env": "ZITADEL_VERSION" } + ], + "outputs": [ + "{workspaceRoot}/.artifacts/pack/zitadel-linux-arm64.tar.gz", + "{workspaceRoot}/.artifacts/bin/linux/arm64/zitadel" + ] + }, + "pack-windows-amd64": { + "description": "Packages the API for Windows AMD64 architecture", + "dependsOn": [ + "generate-stubs", + "generate-assets", + "generate-statik" + ], + "command": "GOOS=windows GOARCH=amd64 nx run @zitadel/api:pack-platform", + "cache": true, + "inputs": [ + "pack", + { "env": "ZITADEL_VERSION" } + ], + "outputs": [ + "{workspaceRoot}/.artifacts/pack/zitadel-windows-amd64.tar.gz", + "{workspaceRoot}/.artifacts/bin/windows/amd64/zitadel.exe" + ] + }, + "pack-windows-arm64": { + "description": "Packages the API for Windows ARM64 architecture", + "dependsOn": [ + "generate-stubs", + "generate-assets", + "generate-statik" + ], + "command": "GOOS=windows GOARCH=arm64 nx run @zitadel/api:pack-platform", + "cache": true, + "inputs": [ + "pack", + { "env": "ZITADEL_VERSION" } + ], + "outputs": [ + "{workspaceRoot}/.artifacts/pack/zitadel-windows-arm64.tar.gz", + "{workspaceRoot}/.artifacts/bin/windows/arm64/zitadel.exe" + ] + } + } +} \ No newline at end of file diff --git a/e2e/config/localhost/zitadel.yaml b/apps/api/test-functional-ui.yaml similarity index 95% rename from e2e/config/localhost/zitadel.yaml rename to apps/api/test-functional-ui.yaml index 701e7b806bc..9db92d26acb 100644 --- a/e2e/config/localhost/zitadel.yaml +++ b/apps/api/test-functional-ui.yaml @@ -1,14 +1,11 @@ Log: Level: info -ExternalDomain: localhost ExternalSecure: false Database: postgres: # This makes the e2e config reusable with an out-of-docker zitadel process and an /etc/hosts entry - Host: host.docker.internal - Port: 5432 database: zitadel MaxOpenConns: 15 MaxIdleConns: 10 diff --git a/internal/integration/config/zitadel.yaml b/apps/api/test-integration-api.yaml similarity index 90% rename from internal/integration/config/zitadel.yaml rename to apps/api/test-integration-api.yaml index 74956afe658..819d7b90b79 100644 --- a/internal/integration/config/zitadel.yaml +++ b/apps/api/test-integration-api.yaml @@ -1,3 +1,26 @@ +Database: + Postgres: + MaxOpenConns: 20 + MaxIdleConns: 20 + MaxConnLifetime: 1h + MaxConnIdleTime: 5m + Database: zitadel +FirstInstance: + Skip: false + PatPath: .artifacts/api-test-integration/admin-pat.txt + InstanceName: ZITADEL + DefaultLanguage: en + Org: + Name: ZITADEL + Machine: + Machine: + Username: boss + Name: boss + Pat: + ExpirationDate: 2099-01-01T00:00:00Z + Human: + PasswordChangeRequired: false + Log: Level: info @@ -47,11 +70,6 @@ Telemetry: - "multi-value-1" - "multi-value-2" -FirstInstance: - Org: - Human: - PasswordChangeRequired: false - LogStore: Execution: Stdout: @@ -107,4 +125,4 @@ OIDC: DefaultLogoutURLV2: "/logout?post_logout_redirect=" # ZITADEL_OIDC_DEFAULTLOGOUTURLV2 SAML: - DefaultLoginURLV2: "/login?authRequest=" # ZITADEL_SAML_DEFAULTLOGINURLV2 + DefaultLoginURLV2: "/login?authRequest=" # ZITADEL_SAML_DEFAULTLOGINURLV2 \ No newline at end of file diff --git a/apps/login/.env b/apps/login/.env new file mode 100644 index 00000000000..941bd7206b3 --- /dev/null +++ b/apps/login/.env @@ -0,0 +1,5 @@ +NEXT_PUBLIC_BASE_PATH=/ui/v2/login +EMAIL_VERIFICATION=false +DEBUG=true +ZITADEL_API_URL=http://localhost:8080 +ZITADEL_SERVICE_USER_TOKEN_FILE=../../login-client.pat diff --git a/apps/login/.env.prod b/apps/login/.env.prod new file mode 100644 index 00000000000..454804b07cf --- /dev/null +++ b/apps/login/.env.prod @@ -0,0 +1 @@ +ZITADEL_SERVICE_USER_TOKEN_FILE=../../../../login-client.pat diff --git a/apps/login/.env.test b/apps/login/.env.test deleted file mode 100644 index c0344ebf0fd..00000000000 --- a/apps/login/.env.test +++ /dev/null @@ -1,6 +0,0 @@ -ZITADEL_API_URL=http://localhost:22222 -ZITADEL_SERVICE_USER_TOKEN="yolo" -EMAIL_VERIFICATION=true -DEBUG=true -PORT=3001 -NEXT_PUBLIC_BASE_PATH=/ui/v2/login diff --git a/apps/login/.env.test-integration b/apps/login/.env.test-integration new file mode 100644 index 00000000000..136bf21f25a --- /dev/null +++ b/apps/login/.env.test-integration @@ -0,0 +1,2 @@ +API_MOCK_STUBS_HOST=${DEVCONTAINER_LOGIN_API_MOCK_HOST:-localhost} +API_MOCK_STUBS_URL=http://${API_MOCK_STUBS_HOST}:22220/v1/stubs diff --git a/apps/login/.env.test-integration-run-login b/apps/login/.env.test-integration-run-login new file mode 100644 index 00000000000..8eb5c685d09 --- /dev/null +++ b/apps/login/.env.test-integration-run-login @@ -0,0 +1,4 @@ +ZITADEL_API_URL=http://${DEVCONTAINER_LOGIN_API_MOCK_HOST:-localhost}:22222 +ZITADEL_SERVICE_USER_TOKEN=none +ZITADEL_SERVICE_USER_TOKEN_FILE="" +PORT=3001 \ No newline at end of file diff --git a/apps/login/.github/ISSUE_TEMPLATE/bug.yaml b/apps/login/.github/ISSUE_TEMPLATE/bug.yaml deleted file mode 100644 index 2764c1a365a..00000000000 --- a/apps/login/.github/ISSUE_TEMPLATE/bug.yaml +++ /dev/null @@ -1,63 +0,0 @@ -name: 🐛 Bug Report -description: "Create a bug report to help us improve ZITADEL Typescript Library." -title: "[Bug]: " -labels: ["bug"] -body: -- type: markdown - attributes: - value: | - Thanks for taking the time to fill out this bug report! -- type: checkboxes - id: preflight - attributes: - label: Preflight Checklist - options: - - label: - I could not find a solution in the documentation, the existing issues or discussions - required: true - - label: - I have joined the [ZITADEL chat](https://zitadel.com/chat) - validations: - required: true -- type: input - id: version - attributes: - label: Version - description: Which version of ZITADEL Typescript Library are you using. -- type: textarea - id: impact - attributes: - label: Describe the problem caused by this bug - description: A clear and concise description of the problem you have and what the bug is. - validations: - required: true -- type: textarea - id: reproduce - attributes: - label: To reproduce - description: Steps to reproduce the behaviour - placeholder: | - Steps to reproduce the behavior: - 1. ... - validations: - required: true -- type: textarea - id: screenshots - attributes: - label: Screenshots - description: If applicable, add screenshots to help explain your problem. -- type: textarea - id: expected - attributes: - label: Expected behavior - description: A clear and concise description of what you expected to happen. -- type: textarea - id: config - attributes: - label: Relevant Configuration - description: Add any relevant configurations that could help us. Make sure to redact any sensitive information. -- type: textarea - id: additional - attributes: - label: Additional Context - description: Please add any other infos that could be useful. diff --git a/apps/login/.github/ISSUE_TEMPLATE/config.yml b/apps/login/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 7e690b93441..00000000000 --- a/apps/login/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,4 +0,0 @@ -blank_issues_enabled: true -contact_links: - - name: 💬 ZITADEL Community Chat - url: https://zitadel.com/chat diff --git a/apps/login/.github/ISSUE_TEMPLATE/docs.yaml b/apps/login/.github/ISSUE_TEMPLATE/docs.yaml deleted file mode 100644 index 04c1c0cdb1c..00000000000 --- a/apps/login/.github/ISSUE_TEMPLATE/docs.yaml +++ /dev/null @@ -1,30 +0,0 @@ -name: 📄 Documentation -description: Create an issue for missing or wrong documentation. -labels: ["docs"] -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to fill out this issue. - - type: checkboxes - id: preflight - attributes: - label: Preflight Checklist - options: - - label: - I could not find a solution in the existing issues, docs, nor discussions - required: true - - label: - I have joined the [ZITADEL chat](https://zitadel.com/chat) - - type: textarea - id: docs - attributes: - label: Describe the docs your are missing or that are wrong - placeholder: As a [type of user], I want [some goal] so that [some reason]. - validations: - required: true - - type: textarea - id: additional - attributes: - label: Additional Context - description: Please add any other infos that could be useful. diff --git a/apps/login/.github/ISSUE_TEMPLATE/improvement.yaml b/apps/login/.github/ISSUE_TEMPLATE/improvement.yaml deleted file mode 100644 index cfe79d407bd..00000000000 --- a/apps/login/.github/ISSUE_TEMPLATE/improvement.yaml +++ /dev/null @@ -1,54 +0,0 @@ -name: 🛠️ Improvement -description: "Create an new issue for an improvment in ZITADEL" -labels: ["improvement"] -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to fill out this improvement request - - type: checkboxes - id: preflight - attributes: - label: Preflight Checklist - options: - - label: - I could not find a solution in the existing issues, docs, nor discussions - required: true - - label: - I have joined the [ZITADEL chat](https://zitadel.com/chat) - - type: textarea - id: problem - attributes: - label: Describe your problem - description: Please describe your problem this improvement is supposed to solve. - placeholder: Describe the problem you have - validations: - required: true - - type: textarea - id: solution - attributes: - label: Describe your ideal solution - description: Which solution do you propose? - placeholder: As a [type of user], I want [some goal] so that [some reason]. - validations: - required: true - - type: input - id: version - attributes: - label: Version - description: Which version of the typescript library are you using. - - type: dropdown - id: environment - attributes: - label: Environment - description: How do you use ZITADEL? - options: - - ZITADEL Cloud - - Self-hosted - validations: - required: true - - type: textarea - id: additional - attributes: - label: Additional Context - description: Please add any other infos that could be useful. diff --git a/apps/login/.github/ISSUE_TEMPLATE/proposal.yaml b/apps/login/.github/ISSUE_TEMPLATE/proposal.yaml deleted file mode 100644 index cd9ff66972b..00000000000 --- a/apps/login/.github/ISSUE_TEMPLATE/proposal.yaml +++ /dev/null @@ -1,54 +0,0 @@ -name: 💡 Proposal / Feature request -description: "Create an issue for a feature request/proposal." -labels: ["enhancement"] -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to fill out this proposal / feature reqeust - - type: checkboxes - id: preflight - attributes: - label: Preflight Checklist - options: - - label: - I could not find a solution in the existing issues, docs, nor discussions - required: true - - label: - I have joined the [ZITADEL chat](https://zitadel.com/chat) - - type: textarea - id: problem - attributes: - label: Describe your problem - description: Please describe your problem this proposal / feature is supposed to solve. - placeholder: Describe the problem you have. - validations: - required: true - - type: textarea - id: solution - attributes: - label: Describe your ideal solution - description: Which solution do you propose? - placeholder: As a [type of user], I want [some goal] so that [some reason]. - validations: - required: true - - type: input - id: version - attributes: - label: Version - description: Which version of the Typescript Library are you using. - - type: dropdown - id: environment - attributes: - label: Environment - description: How do you use ZITADEL? - options: - - ZITADEL Cloud - - Self-hosted - validations: - required: true - - type: textarea - id: additional - attributes: - label: Additional Context - description: Please add any other infos that could be useful. diff --git a/apps/login/.github/custom-i18n.png b/apps/login/.github/custom-i18n.png deleted file mode 100644 index 2306e62f8709d5b6f756b773410eca411b3b5c2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85028 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 z 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/zitadel.git\` - 3. Change directory to your Zitadel forks root. - 4. Pull your changes into the Zitadel fork by running \`make login_pull LOGIN_REMOTE_URL=https://github.com//typescript.git LOGIN_REMOTE_BRANCH=\`. - 5. Push your changes and [open a pull request to zitadel/zitadel](https://github.com/zitadel/zitadel/compare) - `.trim(); - await github.rest.issues.createComment({ - ...context.repo, - issue_number: context.issue.number, - body: message - }); - await github.rest.pulls.update({ - ...context.repo, - pull_number: context.issue.number, - state: "closed" - }); diff --git a/apps/login/.github/workflows/issues.yml b/apps/login/.github/workflows/issues.yml deleted file mode 100644 index ff12b8fe043..00000000000 --- a/apps/login/.github/workflows/issues.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: Add new issues to product management project - -on: - issues: - types: - - opened - -jobs: - add-to-project: - name: Add issue and community pr to project - runs-on: ubuntu-latest - if: github.repository_id == '622995060' - steps: - - name: add issue - uses: actions/add-to-project@v1.0.2 - if: ${{ github.event_name == 'issues' }} - with: - # You can target a repository in a different organization - # to the issue - project-url: https://github.com/orgs/zitadel/projects/2 - github-token: ${{ secrets.ADD_TO_PROJECT_PAT }} - - uses: tspascoal/get-user-teams-membership@v3 - id: checkUserMember - if: github.actor != 'dependabot[bot]' - with: - username: ${{ github.actor }} - GITHUB_TOKEN: ${{ secrets.ADD_TO_PROJECT_PAT }} - - name: add pr - uses: actions/add-to-project@v1.0.2 - if: ${{ github.event_name == 'pull_request_target' && github.actor != 'dependabot[bot]' && !contains(steps.checkUserMember.outputs.teams, 'engineers')}} - with: - # You can target a repository in a different organization - # to the issue - project-url: https://github.com/orgs/zitadel/projects/2 - github-token: ${{ secrets.ADD_TO_PROJECT_PAT }} - - uses: actions-ecosystem/action-add-labels@v1.1.3 - if: ${{ github.event_name == 'pull_request_target' && github.actor != 'dependabot[bot]' && !contains(steps.checkUserMember.outputs.teams, 'staff')}} - with: - github_token: ${{ secrets.ADD_TO_PROJECT_PAT }} - labels: | - os-contribution diff --git a/apps/login/.github/workflows/release.yml b/apps/login/.github/workflows/release.yml deleted file mode 100644 index 2508627d1b9..00000000000 --- a/apps/login/.github/workflows/release.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: Release - -on: - push: - branches: - - main - -concurrency: ${{ github.workflow }}-${{ github.ref }} - -jobs: - release: - runs-on: ubuntu-latest - if: github.repository_id != '622995060' - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - - - name: Install pnpm - uses: pnpm/action-setup@v4 - - - name: Install dependencies - run: pnpm install - - - name: Create Release Pull Request - uses: changesets/action@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/apps/login/.github/workflows/test.yml b/apps/login/.github/workflows/test.yml deleted file mode 100644 index 7b4721dbee8..00000000000 --- a/apps/login/.github/workflows/test.yml +++ /dev/null @@ -1,67 +0,0 @@ -name: Quality -on: - pull_request: - workflow_dispatch: - inputs: - ignore-run-cache: - description: 'Whether to ignore the run cache' - required: false - default: true - ref-tag: - description: 'overwrite the DOCKER_METADATA_OUTPUT_VERSION environment variable used by the make file' - required: false - default: '' -jobs: - quality: - name: Ensure Quality - if: github.event_name == 'workflow_dispatch' || - (github.event_name == 'pull_request' && github.repository_id != '622995060') - runs-on: ubuntu-22.04 - timeout-minutes: 30 - permissions: - contents: read # We only need read access to the repository contents - actions: write # We need write access to the actions cache - env: - CACHE_DIR: /tmp/login-run-caches - # Only run this job on workflow_dispatch or pushes to forks - steps: - - uses: actions/checkout@v4 - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: | - ghcr.io/zitadel/login - tags: | - type=raw,value=latest,enable={{is_default_branch}} - type=ref,event=branch - type=ref,event=pr - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=semver,pattern={{major}} - - name: Set up Buildx - uses: docker/setup-buildx-action@v3 - # Only with correctly restored build cache layers, the run caches work as expected. - # To restore docker build layer caches, extend the docker-bake.hcl to use the cache-from and cache-to options. - # https://docs.docker.com/build/ci/github-actions/cache/ - # Alternatively, you can use a self-hosted runner or a third-party builder that restores build layer caches out-of-the-box, like https://depot.dev/ - - name: Restore Run Caches - uses: actions/cache/restore@v4 - id: run-caches-restore - with: - path: ${{ env.CACHE_DIR }} - key: ${{ runner.os }}-login-run-caches-${{github.ref_name}}-${{ github.sha }}-${{github.run_attempt}} - restore-keys: | - ${{ runner.os }}-login-run-caches-${{github.ref_name}}-${{ github.sha }}- - ${{ runner.os }}-login-run-caches-${{github.ref_name}}- - ${{ runner.os }}-login-run-caches- - - run: make login_quality - env: - IGNORE_RUN_CACHE: ${{ github.event.inputs.ignore-run-cache == 'true' }} - DOCKER_METADATA_OUTPUT_VERSION: ${{ github.event.inputs.ref-tag || env.DOCKER_METADATA_OUTPUT_VERSION || steps.meta.outputs.version }} - - name: Save Run Caches - uses: actions/cache/save@v4 - with: - path: ${{ env.CACHE_DIR }} - key: ${{ steps.run-caches-restore.outputs.cache-primary-key }} - if: always() diff --git a/apps/login/.gitignore b/apps/login/.gitignore index e433d14fb85..97c0f2a74b7 100644 --- a/apps/login/.gitignore +++ b/apps/login/.gitignore @@ -6,7 +6,6 @@ cypress .DS_Store node_modules -.turbo *.log .next dist diff --git a/apps/login/CODE_OF_CONDUCT.md b/apps/login/CODE_OF_CONDUCT.md deleted file mode 100644 index ac3f1296528..00000000000 --- a/apps/login/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,128 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity -and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -- Demonstrating empathy and kindness toward other people -- Being respectful of differing opinions, viewpoints, and experiences -- Giving and gracefully accepting constructive feedback -- Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -- Focusing on what is best not just for us as individuals, but for the - overall community - -Examples of unacceptable behavior include: - -- The use of sexualized language or imagery, and sexual attention or - advances of any kind -- Trolling, insulting or derogatory comments, and personal or political attacks -- Public or private harassment -- Publishing others' private information, such as a physical or email - address, without their explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at -legal@zitadel.com. -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series -of actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or -permanent ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within -the community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.0, available at -https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. - -Community Impact Guidelines were inspired by [Mozilla's code of conduct -enforcement ladder](https://github.com/mozilla/diversity). - -[homepage]: https://www.contributor-covenant.org - -For answers to common questions about this code of conduct, see the FAQ at -https://www.contributor-covenant.org/faq. Translations are available at -https://www.contributor-covenant.org/translations. diff --git a/apps/login/CONTRIBUTING.md b/apps/login/CONTRIBUTING.md deleted file mode 100644 index 50ca3172d11..00000000000 --- a/apps/login/CONTRIBUTING.md +++ /dev/null @@ -1,218 +0,0 @@ -# Contributing - -:attention: In this CONTRIBUTING.md you read about contributing to this very repository. -If you want to develop your own login UI, please refer [to the README.md](./README.md). - -## Introduction - -Thank you for your interest about how to contribute! - -:attention: If you notice a possible **security vulnerability**, please don't hesitate to disclose any concern by contacting [security@zitadel.com](mailto:security@zitadel.com). -You don't have to be perfectly sure about the nature of the vulnerability. -We will give them a high priority and figure them out. - -We also appreciate all your other ideas, thoughts and feedback and will take care of them as soon as possible. -We love to discuss in an open space using [GitHub issues](https://github.com/zitadel/typescript/issues), -[GitHub discussions in the core repo](https://github.com/zitadel/zitadel/discussions) -or in our [chat on Discord](https://zitadel.com/chat). -For private discussions, -you have [more contact options on our Website](https://zitadel.com/contact). - -## Pull Requests - -The repository zitadel/typescript is a read-only mirror of the git subtree at zitadel/zitadel/login. -To submit changes, please open a Pull Request [in the zitadel/zitadel repository](https://github.com/zitadel/zitadel/compare). - -If you already made changes based on the zitadel/typescript repository, these changes are not lost. -Submitting them to the main repository is easy: - -1. [Fork zitadel/zitadel](https://github.com/zitadel/zitadel/fork) -1. Clone your Zitadel fork git clone https://github.com//zitadel.git -1. Change directory to your Zitadel forks root. -1. Pull your changes into the Zitadel fork by running make login_pull LOGIN_REMOTE_URL=https://github.com//typescript.git LOGIN_REMOTE_BRANCH=. -1. Push your changes and [open a pull request to zitadel/zitadel](https://github.com/zitadel/zitadel/compare) - -Please consider the following guidelines when creating a pull request. - -- The latest changes are always in `main`, so please make your pull request against that branch. -- pull requests should be raised for any change -- Pull requests need approval of a Zitadel core engineer @zitadel/engineers before merging -- We use ESLint/Prettier for linting/formatting, so please run `pnpm lint:fix` before committing to make resolving conflicts easier (VSCode users, check out [this ESLint extension](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) and [this Prettier extension](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) to fix lint and formatting issues in development) -- If you add new functionality, please provide the corresponding documentation as well and make it part of the pull request - -### Setting up local environment - -```sh -# Install dependencies. Developing requires Node.js v20 -pnpm install - -# Generate gRPC stubs -pnpm generate - -# Start a local development server for the login and manually configure apps/login/.env.local -pnpm dev -``` - -The application is now available at `http://localhost:3000` - -Configure apps/login/.env.local to target the Zitadel instance of your choice. -The login app live-reloads on changes, so you can start developing right away. - -### Developing Against A Local Latest Zitadel Release - -The following command uses Docker to run a local Zitadel instance and the login application in live-reloading dev mode. -Additionally, it runs a Traefik reverse proxy that exposes the login with a self-signed certificate at https://127.0.0.1.sslip.io -127.0.0.1.sslip.io is a special domain that resolves to your localhost, so it's safe to allow your browser to proceed with loading the page. - -```sh -# Install dependencies. Developing requires Node.js v20 -pnpm install - -# Generate gRPC stubs -pnpm generate - -# Start a local development server and have apps/login/.env.test.local configured for you to target the local Zitadel instance. -pnpm dev:local -``` - -Log in at https://127.0.0.1.sslip.io/ui/v2/login/loginname and use the following credentials: -**Loginname**: *zitadel-admin@zitadel.127.0.0.1.sslip.io* -**Password**: _Password1!_. - -The login app live-reloads on changes, so you can start developing right away. - -### Developing Against A Locally Compiled Zitadel - -To develop against a locally compiled version of Zitadel, you need to build the Zitadel docker image first. -Clone the [Zitadel repository](https://github.com/zitadel/zitadel.git) and run the following command from its root: - -```sh -# This compiles a Zitadel binary if it does not exist at ./zitadel already and copies it into a Docker image. -# If you want to recompile the binary, run `make compile` first -make login_dev -``` - -Open another terminal session at zitadel/zitadel/login and run the following commands to start the dev server. - -```bash -# Install dependencies. Developing requires Node.js v20 -pnpm install - -# Start a local development server and have apps/login/.env.test.local configured for you to target the local Zitadel instance. -NODE_ENV=test pnpm dev -``` - -Log in at https://127.0.0.1.sslip.io/ui/v2/login/loginname and use the following credentials: -**Loginname**: *zitadel-admin@zitadel.127.0.0.1.sslip.io* -**Password**: _Password1!_. - -The login app live-reloads on changes, so you can start developing right away. - -### Quality Assurance - -Use `make` commands to test the quality of your code against a production build without installing any dependencies besides Docker. -Using `make` commands, you can reproduce and debug the CI pipelines locally. - -```sh -# Reproduce the whole CI pipeline in docker -make login_quality -# Show other options with make -make help -``` - -Use `pnpm` commands to run the tests in dev mode with live reloading and debugging capabilities. - -#### Linting and formatting - -Check the formatting and linting of the code in docker - -```sh -make login_lint -``` - -Check the linting of the code using pnpm - -```sh -pnpm lint -pnpm format -``` - -Fix the linting of your code - -```sh -pnpm lint:fix -pnpm format:fix -``` - -#### Running Unit Tests - -Run the tests in docker - -```sh -make login_test_unit -``` - -Run unit tests with live-reloading - -```sh -pnpm test:unit -``` - -#### Running Integration Tests - -Run the test in docker - -```sh -make login_test_integration -``` - -Alternatively, run a live-reloading development server with an interactive Cypress test suite. -First, set up your local test environment. - -```sh -# Install dependencies. Developing requires Node.js v20 -pnpm install - -# Generate gRPC stubs -pnpm generate - -# Start a local development server and use apps/login/.env.test to use the locally mocked Zitadel API. -pnpm test:integration:setup -``` - -Now, in another terminal session, open the interactive Cypress integration test suite. - -```sh -pnpm test:integration open -``` - -Show more options with Cypress - -```sh -pnpm test:integration help -``` - -#### Running Acceptance Tests - -To run the tests in docker against the latest release of Zitadel, use the following command: - -:warning: The acceptance tests are not reliable at the moment :construction: - -```sh -make login_test_acceptance -``` - -Alternatively, run can use a live-reloading development server with an interactive Playwright test suite. -Set up your local environment by running the commands either for [developing against a local latest Zitadel release](latest) or for [developing against a locally compiled Zitadel](compiled). - -Now, in another terminal session, open the interactive Playwright acceptance test suite. - -```sh -pnpm test:acceptance open -``` - -Show more options with Playwright - -```sh -pnpm test:acceptance help -``` diff --git a/apps/login/Dockerfile b/apps/login/Dockerfile index 3207ada8e76..b95e3ab47ca 100644 --- a/apps/login/Dockerfile +++ b/apps/login/Dockerfile @@ -1,37 +1,18 @@ -FROM node:20-alpine AS base - -FROM base AS build -ENV PNPM_HOME="/pnpm" -ENV PATH="$PNPM_HOME:$PATH" -RUN corepack enable && COREPACK_ENABLE_DOWNLOAD_PROMPT=0 corepack prepare pnpm@10.13.1 --activate && \ - apk update && \ - rm -rf /var/cache/apk/* +FROM node:22-alpine WORKDIR /app -COPY pnpm-lock.yaml ./ -RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store pnpm fetch --frozen-lockfile -COPY package.json ./ -RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store pnpm install --frozen-lockfile -COPY . . -RUN pnpm build:login:standalone - -FROM scratch AS build-out -COPY --from=build /app/.next/standalone / -COPY --from=build /app/.next/static /.next/static -COPY public public - -FROM base AS login-standalone -WORKDIR /runtime RUN addgroup --system --gid 1001 nodejs && \ adduser --system --uid 1001 nextjs # If /.env-file/.env is mounted into the container, its variables are made available to the server before it starts up. RUN mkdir -p /.env-file && touch /.env-file/.env && chown -R nextjs:nodejs /.env-file -COPY --chown=nextjs:nodejs ./scripts/ ./ -COPY --chown=nextjs:nodejs --from=build-out / ./ + +COPY --chown=nextjs:nodejs .next/standalone ./ + USER nextjs ENV HOSTNAME="0.0.0.0" \ - NEXT_PUBLIC_BASE_PATH="/ui/v2/login" \ - PORT=3000 + PORT="3000" \ + NODE_ENV="production" + # TODO: Check healthy, not ready HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ - CMD ["/bin/sh", "-c", "node /runtime/healthcheck.js http://localhost:${PORT}/ui/v2/login/healthy"] -ENTRYPOINT ["/runtime/entrypoint.sh"] + CMD ["/bin/sh", "-c", "node /app/healthcheck.js http://localhost:${PORT}/ui/v2/login/healthy"] +ENTRYPOINT ["/app/entrypoint.sh", "node", "apps/login/server.js" ] diff --git a/apps/login/Dockerfile.dockerignore b/apps/login/Dockerfile.dockerignore deleted file mode 100644 index d65fd699475..00000000000 --- a/apps/login/Dockerfile.dockerignore +++ /dev/null @@ -1,22 +0,0 @@ -* - -!constants -!scripts -!src -!public -!locales -!next.config.mjs -!next-env-vars.d.ts -!next-env.d.ts -!tailwind.config.mjs -!postcss.config.cjs -!tsconfig.json -!package.json -!pnpm-lock.yaml - -**/*.md -**/*.png -**/node_modules -**/.turbo -**/*.test.ts -**/*.test.tsx \ No newline at end of file diff --git a/apps/login/cypress.config.ts b/apps/login/cypress.config.ts index f5bae5fe901..ca01336fbd8 100644 --- a/apps/login/cypress.config.ts +++ b/apps/login/cypress.config.ts @@ -1,5 +1,4 @@ import { defineConfig } from "cypress"; - export default defineConfig({ reporter: "list", video: true, @@ -7,11 +6,12 @@ export default defineConfig({ runMode: 2 }, e2e: { - baseUrl: process.env.LOGIN_BASE_URL || "http://localhost:3001/ui/v2/login", + baseUrl: `http://localhost:3001${process.env.NEXT_PUBLIC_BASE_PATH || ""}`, specPattern: "integration/integration/**/*.cy.{js,jsx,ts,tsx}", supportFile: "integration/support/e2e.{js,jsx,ts,tsx}", - setupNodeEvents(on, config) { - // implement node event listeners here - }, + pageLoadTimeout: 120_0000, + env: { + API_MOCK_STUBS_URL: process.env.API_MOCK_STUBS_URL || "http://localhost:22220/v1/stubs" + } }, }); diff --git a/apps/login/docker-bake-release.hcl b/apps/login/docker-bake-release.hcl deleted file mode 100644 index 51e1c194f64..00000000000 --- a/apps/login/docker-bake-release.hcl +++ /dev/null @@ -1,3 +0,0 @@ -target "release" { - platforms = ["linux/amd64", "linux/arm64"] -} diff --git a/apps/login/docker-bake.hcl b/apps/login/docker-bake.hcl deleted file mode 100644 index e09d1176e08..00000000000 --- a/apps/login/docker-bake.hcl +++ /dev/null @@ -1,25 +0,0 @@ -variable "LOGIN_TAG" { - default = "zitadel-login:local" -} - -group "default" { - targets = ["login-standalone"] -} - -# The release target is overwritten in docker-bake-release.hcl -# It makes sure the image is built for multiple platforms. -# By default the platforms property is empty, so images are only built for the current bake runtime platform. -target "release" {} - -target "docker-metadata-action" { - # In the pipeline, this target is overwritten by the docker metadata action. - tags = ["${LOGIN_TAG}"] -} - -# We run integration and acceptance tests against the next standalone server for docker. -target "login-standalone" { - inherits = [ - "docker-metadata-action", - "release", - ] -} diff --git a/apps/login/integration/core-mock/Dockerfile b/apps/login/integration/api-mock/Dockerfile similarity index 86% rename from apps/login/integration/core-mock/Dockerfile rename to apps/login/integration/api-mock/Dockerfile index ce2465480fa..84e7d1ca88e 100644 --- a/apps/login/integration/core-mock/Dockerfile +++ b/apps/login/integration/api-mock/Dockerfile @@ -3,9 +3,7 @@ RUN buf export https://github.com/envoyproxy/protoc-gen-validate.git --path vali buf export https://github.com/grpc-ecosystem/grpc-gateway.git --path protoc-gen-openapiv2 --output /proto && \ buf export https://github.com/googleapis/googleapis.git --path google/api/annotations.proto --path google/api/http.proto --path google/api/field_behavior.proto --output /proto -FROM bufbuild/buf:1.54.0 AS zitadel-protos -RUN buf export https://github.com/zitadel/zitadel.git --path ./proto/zitadel --output /zitadel - + FROM golang:1.20.5-alpine3.18 AS mock-zitadel RUN go install github.com/eliobischof/grpc-mock/cmd/grpc-mock@01b09f60db1b501178af59bed03b2c22661df48c diff --git a/apps/login/integration/core-mock/initial-stubs/zitadel.settings.v2.SettingsService.json b/apps/login/integration/api-mock/initial-stubs/zitadel.settings.v2.SettingsService.json similarity index 100% rename from apps/login/integration/core-mock/initial-stubs/zitadel.settings.v2.SettingsService.json rename to apps/login/integration/api-mock/initial-stubs/zitadel.settings.v2.SettingsService.json diff --git a/apps/login/integration/core-mock/mocked-services.cfg b/apps/login/integration/api-mock/mocked-services.cfg similarity index 100% rename from apps/login/integration/core-mock/mocked-services.cfg rename to apps/login/integration/api-mock/mocked-services.cfg diff --git a/apps/login/integration/api-mock/project.json b/apps/login/integration/api-mock/project.json new file mode 100644 index 00000000000..0a5d92ff3b8 --- /dev/null +++ b/apps/login/integration/api-mock/project.json @@ -0,0 +1,19 @@ +{ + "$schema": "../../../../node_modules/nx/schemas/project-schema.json", + "name": "@zitadel/login-api-mock", + "targets": { + "build": { + "description": "Builds the API mock server", + "command": "nx run @zitadel/devcontainer:compose build login-api-mock" + }, + "serve": { + "description": "Starts the API mock server", + "continuous": true, + "command": "nx run @zitadel/devcontainer:compose up --force-recreate --renew-anon-volumes login-api-mock" + }, + "down": { + "description": "Stops the API mock server", + "command": "nx run @zitadel/devcontainer:compose down login-api-mock" + } + } +} \ No newline at end of file diff --git a/apps/login/integration/support/e2e.ts b/apps/login/integration/support/e2e.ts index 40b93bea8b9..75641d02391 100644 --- a/apps/login/integration/support/e2e.ts +++ b/apps/login/integration/support/e2e.ts @@ -18,7 +18,7 @@ Cypress.on('uncaught:exception', (err, runnable) => { return true; }); -const url = Cypress.env("CORE_MOCK_STUBS_URL") || "http://localhost:22220/v1/stubs"; +const url = Cypress.env("API_MOCK_STUBS_URL"); function removeStub(service: string, method: string) { return cy.request({ diff --git a/apps/login/next-env-vars.d.ts b/apps/login/next-env-vars.d.ts index e7f8289ad44..1d8467a6726 100644 --- a/apps/login/next-env-vars.d.ts +++ b/apps/login/next-env-vars.d.ts @@ -16,6 +16,9 @@ declare namespace NodeJS { /** * The service user token + * If ZITADEL_SERVICE_USER_TOKEN is set, its value is used. + * If ZITADEL_SERVICE_USER_TOKEN is not set but ZITADEL_SERVICE_USER_TOKEN_FILE is set, the application blocks until the file is created. + * As soon as the file exists, its content is read and ZITADEL_SERVICE_USER_TOKEN is set. */ ZITADEL_SERVICE_USER_TOKEN: string; diff --git a/apps/login/next.config.mjs b/apps/login/next.config.mjs index 7d12d78867f..c0aab041cc1 100755 --- a/apps/login/next.config.mjs +++ b/apps/login/next.config.mjs @@ -3,8 +3,6 @@ import { DEFAULT_CSP } from "./constants/csp.js"; const withNextIntl = createNextIntlPlugin(); -/** @type {import('next').NextConfig} */ - const secureHeaders = [ { key: "Strict-Transport-Security", @@ -33,6 +31,7 @@ const secureHeaders = [ { key: "X-Frame-Options", value: "deny" }, ]; +/** @type {import('next').NextConfig} */ const nextConfig = { basePath: process.env.NEXT_PUBLIC_BASE_PATH, output: process.env.NEXT_OUTPUT_MODE || undefined, diff --git a/apps/login/package.json b/apps/login/package.json index 39fcba18d70..0c7c7e8dc81 100644 --- a/apps/login/package.json +++ b/apps/login/package.json @@ -4,21 +4,16 @@ "private": true, "type": "module", "scripts": { - "dev": "next dev", - "build": "next build", - "build:login:standalone": "NEXT_PUBLIC_BASE_PATH=/ui/v2/login NEXT_OUTPUT_MODE=standalone next build", - "start": "next start", - "lint": "pnpm run '/^lint:check:.*$/'", - "lint:check:next": "next lint", - "lint:check:prettier": "prettier --check .", - "lint:fix": "prettier --write .", - "test:unit": "vitest --run", + "build": "NEXT_OUTPUT_MODE=standalone next build && cp -r public scripts/* .next/standalone/ && cp -r .next/static .next/standalone/apps/login/.next/ && rm .next/standalone/apps/login/.env", + "build-vercel": "next build", + "dev": "HOSTNAME=127.0.0.1 ./scripts/entrypoint.sh next dev", + "prod": "cd ./.next/standalone && HOSTNAME=127.0.0.1 ./entrypoint.sh node apps/login/server.js", + "lint-check-next": "next lint", + "lint-check-prettier": "prettier --check .", + "lint-fix": "prettier --write .", + "test-unit": "vitest --run", "lint-staged": "lint-staged", - "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf .next", - "test:integration:login": "wait-on --simultaneous 1 http://localhost:3001/ui/v2/login/verify?userId=221394658884845598&code=abc && cypress run", - "test:acceptance": "dotenv -e ../login/.env.test.local playwright", - "test:acceptance:setup": "cd ../.. && make login_test_acceptance_setup_env && NODE_ENV=test turbo run test:acceptance:setup:dev", - "test:acceptance:setup:dev": "cd ../.. && make login_test_acceptance_setup_dev" + "clean": "rm -rf node_modules .next cypress" }, "pnpm": { "overrides": { @@ -36,8 +31,6 @@ "@heroicons/react": "2.1.3", "@radix-ui/react-tooltip": "^1.2.7", "@tailwindcss/forms": "0.5.7", - "@zitadel/client": "latest", - "@zitadel/proto": "latest", "clsx": "1.2.1", "copy-to-clipboard": "^3.3.3", "deepmerge": "^4.3.1", @@ -74,11 +67,13 @@ "@typescript-eslint/parser": "^7.0.0", "@vercel/git-hooks": "1.0.0", "@vitejs/plugin-react": "^4.4.1", + "@zitadel/client": "workspace:*", + "@zitadel/proto": "workspace:*", "autoprefixer": "10.4.21", "concurrently": "^9.1.2", - "cypress": "^14.5.2", + "cypress": "^14.5.4", "dotenv-cli": "^8.0.0", - "env-cmd": "^10.0.0", + "env-cmd": "^10.1.0", "eslint": "^8.57.0", "eslint-config-next": "15.4.0-canary.86", "eslint-config-prettier": "^9.1.0", @@ -98,7 +93,6 @@ "ts-proto": "^2.7.0", "typescript": "^5.8.3", "vite-tsconfig-paths": "^5.1.4", - "vitest": "^2.0.0", - "wait-on": "^7.2.0" + "vitest": "^2.0.0" } -} \ No newline at end of file +} diff --git a/apps/login/project.json b/apps/login/project.json new file mode 100644 index 00000000000..223fbd52b97 --- /dev/null +++ b/apps/login/project.json @@ -0,0 +1,156 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "targets": { + "prod": { + "description": "Runs the Next.js Login application in production mode from the standalone build", + "continuous": true, + "dependsOn": [ + "build" + ], + "defaultConfiguration": "default", + "configurations": { + "default": {}, + "test-login-integration": {} + } + }, + "dev": { + "description": "Runs the Next.js Login application in development mode with hot-reloading", + "continuous": true, + "dependsOn": [ + "^build" + ] + }, + "build": { + "description": "Builds the Next.js Login application in standalone mode for production", + "cache": true, + "dependsOn": [ + "^build" + ], + "inputs": [ + "default", + "{workspaceRoot}/pnpm-lock.yaml", + "!{projectRoot}/.env.*", + "!{projectRoot}/.local.env", + "!{projectRoot}/integration/**/*", + "!{projectRoot}/acceptance/**/*", + "!{projectRoot}/cypress.config.ts" + ], + "outputs": [ + "{projectRoot}/.next/standalone" + ] + }, + "build-vercel": { + "description": "Builds the Next.js Login application for Vercel deployment", + "cache": true, + "dependsOn": [ + "^build" + ], + "inputs": [ + "default", + "{workspaceRoot}/pnpm-lock.yaml", + "!{projectRoot}/.env.*", + "!{projectRoot}/.local.env", + "!{projectRoot}/integration/**/*", + "!{projectRoot}/acceptance/**/*", + "!{projectRoot}/cypress.config.ts" + ], + "outputs": [ + "{projectRoot}/.next", + "!{projectRoot}/.next/cache", + "!{projectRoot}/.next/standalone" + ] + }, + "lint": { + "description": "Runs all linters", + "dependsOn": [ + "lint-check-*" + ] + }, + "lint-check-prettier": { + "description": "Checks code formatting with Prettier", + "cache": true, + "inputs": [ + "default" + ] + }, + "lint-check-next": { + "description": "Runs Next.js specific lint checks", + "cache": true, + "inputs": [ + "default" + ] + }, + "test": { + "description": "Runs all tests (unit and integration)", + "dependsOn": [ + "test-unit", + "test-integration" + ] + }, + "test-unit": { + "description": "Runs unit tests using Vitest", + "dependsOn": [ + "^build" + ] + }, + "test-integration-run-login": { + "description": "Runs the Login application under test. It has its own target, separate from test-integration, because it's a continuous task.", + "dependsOn": [ + "build" + ], + "continuous": true, + "command": "nx run @zitadel/login:prod:test-login-integration --excludeTaskDependencies" + }, + "test-integration": { + "description": "Runs integration tests using Cypress against a running Login and a mocked API", + "dependsOn": [ + "test-integration-run-login", + "@zitadel/login-api-mock:build", + "@zitadel/login-api-mock:serve" + ], + "executor": "nx:run-commands", + "options": { + "cwd": "{projectRoot}", + "parallel": false, + "commands": [ + "pnpm cypress install", + "pnpm wait-on --verbose --interval 2000 --simultaneous 1 --timeout 30m \"tcp:${API_MOCK_STUBS_HOST}:22220\" \"http-get://localhost:3001/ui/v2/login/verify?userId=221394658884845598&code=abc\"", + "DISPLAY='' pnpm cypress run --headless", + "nx run @zitadel/login:test-integration-stop" + ] + }, + "inputs": [ + "default", + "{workspaceRoot}/pnpm-lock.yaml", + "!{projectRoot}/acceptance/**/*", + { "env": "LOGIN_BASE_URL" } + ] + }, + "test-integration-stop": { + "description": "Stops the gRPC mock container used for integration tests.", + "command": "nx run @zitadel/login-api-mock:down" + }, + "pack": { + "description": "Packages the standalone Login application build into an archive", + "dependsOn": [ + "build" + ], + "executor": "nx:run-commands", + "options": { + "parallel": false, + "env": { + "STANDALONE_DIR": "{projectRoot}/.next/standalone", + "PACK_DIR": "{workspaceRoot}/.artifacts/pack" + }, + "commands": [ + "mkdir -p ${PACK_DIR}", + "tar -czvf ${PACK_DIR}/zitadel-login-standalone.tar.gz -C ${STANDALONE_DIR} ." + ] + }, + "cache": true, + "outputs": [ + "{workspaceRoot}/.artifacts/pack/zitadel-login-*.tar.gz" + ] + } + } +} \ No newline at end of file diff --git a/apps/login/scripts/entrypoint.sh b/apps/login/scripts/entrypoint.sh index 5bafc0012dd..f16d5ed5069 100755 --- a/apps/login/scripts/entrypoint.sh +++ b/apps/login/scripts/entrypoint.sh @@ -1,11 +1,18 @@ #!/bin/sh -set -o allexport -. /.env-file/.env -set +o allexport -if [ -n "${ZITADEL_SERVICE_USER_TOKEN_FILE}" ] && [ -f "${ZITADEL_SERVICE_USER_TOKEN_FILE}" ]; then - echo "ZITADEL_SERVICE_USER_TOKEN_FILE=${ZITADEL_SERVICE_USER_TOKEN_FILE} is set and file exists, setting ZITADEL_SERVICE_USER_TOKEN to the files content" - export ZITADEL_SERVICE_USER_TOKEN=$(cat "${ZITADEL_SERVICE_USER_TOKEN_FILE}") +if [ -f /.env-file/.env ]; then + set -o allexport + . /.env-file/.env + set +o allexport fi -exec node /runtime/apps/login/server.js +if [ -n "${ZITADEL_SERVICE_USER_TOKEN_FILE}" ]; then + echo "ZITADEL_SERVICE_USER_TOKEN_FILE=${ZITADEL_SERVICE_USER_TOKEN_FILE} is set. Awaiting file and reading token." + while [ ! -f "${ZITADEL_SERVICE_USER_TOKEN_FILE}" ]; do + sleep 2 + done + echo "token file found, reading token" + export ZITADEL_SERVICE_USER_TOKEN=$(cat "${ZITADEL_SERVICE_USER_TOKEN_FILE}") +fi + +exec $@ diff --git a/apps/login/tsconfig.json b/apps/login/tsconfig.json index 4cec65b3dc6..dbb65389d46 100644 --- a/apps/login/tsconfig.json +++ b/apps/login/tsconfig.json @@ -1,7 +1,11 @@ { "compilerOptions": { "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -19,7 +23,9 @@ } ], "paths": { - "@/*": ["./src/*"] + "@/*": [ + "./src/*" + ] } }, "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], diff --git a/apps/login/turbo.json b/apps/login/turbo.json deleted file mode 100644 index dce47a5a3a8..00000000000 --- a/apps/login/turbo.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "extends": [ - "//" - ], - "tasks": { - "build": { - "outputs": [ - "dist/**", - ".next/**", - "!.next/cache/**" - ], - "dependsOn": [ - "@zitadel/client#build" - ] - }, - "build:login:standalone": { - "outputs": [ - "dist/**", - ".next/**", - "!.next/cache/**" - ], - "dependsOn": [ - "@zitadel/client#build" - ] - }, - "dev": { - "persistent": true, - "cache": false, - "dependsOn": [ - "@zitadel/client#build" - ] - }, - "test": { - "dependsOn": [ - "@zitadel/client#build" - ] - }, - "test:unit": { - "dependsOn": [ - "@zitadel/client#build" - ] - }, - "test:integration:login": { - "inputs": [ - ".next/**", - "!.next/cache/**", - "integration/integration/**", - "integration/support/**", - "cypress.config.ts" - ], - "outputs": [ - "cypress/videos/**", - "cypress/screenshots/**" - ] - } - } -} \ No newline at end of file diff --git a/apps/login/vercel.json b/apps/login/vercel.json new file mode 100644 index 00000000000..884322f987d --- /dev/null +++ b/apps/login/vercel.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://openapi.vercel.sh/vercel.json", + "buildCommand": "pnpm nx run @zitadel/login:build-vercel" +} \ No newline at end of file diff --git a/backend/v3/storage/database/events_testing/events_test.go b/backend/v3/storage/database/events_testing/events_test.go index 008cef48981..c5aad90d012 100644 --- a/backend/v3/storage/database/events_testing/events_test.go +++ b/backend/v3/storage/database/events_testing/events_test.go @@ -4,6 +4,7 @@ package events_test import ( "context" + "fmt" "log" "os" "testing" @@ -23,7 +24,22 @@ import ( "github.com/zitadel/zitadel/pkg/grpc/system" ) -const ConnString = "host=localhost port=5432 user=zitadel password=zitadel dbname=zitadel sslmode=disable" +func getEnv(key, fallback string) string { + if value, exists := os.LookupEnv(key); exists { + return value + } + return fallback +} + +var ConnString = fmt.Sprintf( + "host=%s port=%s user=%s password=%s dbname=%s sslmode=%s", + getEnv("ZITADEL_DATABASE_POSTGRES_HOST", "localhost"), + getEnv("ZITADEL_DATABASE_POSTGRES_PORT", "5433"), + getEnv("ZITADEL_DATABASE_POSTGRES_USER", "zitadel"), + getEnv("ZITADEL_DATABASE_POSTGRES_PASSWORD", "zitadel"), + getEnv("ZITADEL_DATABASE_POSTGRES_DATABASE", "zitadel"), + getEnv("ZITADEL_DATABASE_POSTGRES_SSL_MODE", "disable"), +) var ( dbPool *pgxpool.Pool diff --git a/backend/v3/storage/database/events_testing/id_provider_instance_test.go b/backend/v3/storage/database/events_testing/id_provider_instance_test.go index 43060add66f..a616a4502bf 100644 --- a/backend/v3/storage/database/events_testing/id_provider_instance_test.go +++ b/backend/v3/storage/database/events_testing/id_provider_instance_test.go @@ -22,7 +22,7 @@ import ( ) var validSAMLMetadata1 = []byte(` - + @@ -44,8 +44,8 @@ var validSAMLMetadata1 = []byte(` - - + + urn:oasis:names:tc:SAML:2.0:profiles:attribute:basic @@ -53,12 +53,12 @@ var validSAMLMetadata1 = []byte(` - - + + urn:oasis:names:tc:SAML:2.0:nameid-format:persistent - http://localhost:8080/saml/v2/metadata IDP signing + http://localhost:8082/saml/v2/metadata IDP signing MIIFIjCCAwqgAwIBAgICA7QwDQYJKoZIhvcNAQELBQAwLDEQMA4GA1UEChMHWklUQURFTDEYMBYGA1UEAxMPWklUQURFTCBTQU1MIENBMB4XDTI0MTEyNzEwMjUwMloXDTI1MTEyNzE2MjUwMlowMjEQMA4GA1UEChMHWklUQURFTDEeMBwGA1UEAxMVWklUQURFTCBTQU1MIHJlc3BvbnNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA2lUgaI6AS/9xvM9DNSWK6Ho64LpK8UIioM26QfvAfeQ/I2pgX6SwWxEbd7qv+PkJzaFTjrXSlwOmWsJYma+UsdyFClaGFRyCgY8SWxPceandC8a+hQIDS/irLd9XF33RWp0b/09HjQl+n0HZ4teUFDUd2U1mUf3XCpn0+Ho316bmi6xSW6zaMy5RsbUl01hgWj2fgapAsGAHSBphwCE3Dz/9I/UfHWQw1k2/UTgjc9uIujcza6WgOxfsKluXYIOxwNKTfmzzOJMUwXz6GRgB2jhQI29MuKOZOITA7pXq5kZKf0lSRU8zKFTMJaK4zAHQ6f877Drr8XdAHemuXGZ2JdH/Dbdwarzy3YBMCWsAYlpeEvaVAdiSpyR7fAZktNuHd39Zg00Vlj2wdc44Vk5yVssW7pv5qnVZ7JTrXX2uBYFecLAXmplQ2ph1VdSXZLEDGgjiNA2T/fBj7G4/VjsuCBZFm1I0KCJp3HWEJx5dwwhSVc5wOJEzl7fMuPYMKWH/RM6P/7LnO1ulpdmiKPa4gHzdg3hDZn42NKcVt3UYf0phtxpWMrZp/DUEeizhckrC4ed6cfGtS3CUtJEqoycrCROJ5Hy+ONHl5Aqxt+JoPU+t/XATuctfPxQVcDr0itHzo2cjh/AVTU+IC7C0oQHSS9CC8Fp58UqbtYwFtSAd7ecCAwEAAaNIMEYwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB8GA1UdIwQYMBaAFIzl7uckcPWldirXeOFL3rH6K8FLMA0GCSqGSIb3DQEBCwUAA4ICAQAp+IGZScVIbRdCq5HPjlYBPOY7UbL8ZXnlMW/HLELV9GndnULuFhnuQTIdA5dquCsk8RI1fKsScEV1rqWvHZeSo5nVbvUaPJctoD/4GACqE6F8axs1AgSOvpJMyuycjSzSh6gDM1z37Fdqc/2IRqgi7SKdDsfJpi8XW8LtErpp4kyE1rEXopsXG2fe1UH25bZpXraUqYvp61rwVUCazAtV/U7ARG5AnT0mPqzUriIPrfL+v/+2ntV/BSc8/uCqYnHbwpIwjPURCaxo1Pmm6EEkm+V/Ss4ieNwwkD2bLLLST1LoVMim7Ebfy53PEKpsznKsGlVSu0YYKUsStWQVpwhKQw0bQLCJHdpvZtZSDgS9RbSMZz+aY/fpoNx6wDvmMgtdrb3pVXZ8vPKdq9YDrGfFqP60QdZ3CuSHXCM/zX4742GgImJ4KYAcTuF1+BkGf5JLAJOUZBkfCQ/kBT5wr8+EotLxASOC6717whLBYMEG6N8osEk+LDqoJRTLqkzirJsyOHWChKK47yGkdS3HBIZfo91QrJwKpfATYziBjEnqipkTu+6jFylBIkxKTPye4b3vgcodZP8LSNVXAsMGTPNPJxzPWQ37ba4zMnYZ5iUerlaox/SNsn68DT6RajIb1A1JDq+HNFc3hQP2bzk2y5pCax8zo5swjdklnm4clfB2Lw== @@ -66,7 +66,7 @@ var validSAMLMetadata1 = []byte(` - + urn:oasis:names:tc:SAML:2.0:nameid-format:persistent urn:oasis:names:tc:SAML:2.0:profiles:attribute:basic @@ -77,7 +77,7 @@ var validSAMLMetadata1 = []byte(` - http://localhost:8080/saml/v2/metadata IDP signing + http://localhost:8082/saml/v2/metadata IDP signing MIIFIjCCAwqgAwIBAgICA7QwDQYJKoZIhvcNAQELBQAwLDEQMA4GA1UEChMHWklUQURFTDEYMBYGA1UEAxMPWklUQURFTCBTQU1MIENBMB4XDTI0MTEyNzEwMjUwMloXDTI1MTEyNzE2MjUwMlowMjEQMA4GA1UEChMHWklUQURFTDEeMBwGA1UEAxMVWklUQURFTCBTQU1MIHJlc3BvbnNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA2lUgaI6AS/9xvM9DNSWK6Ho64LpK8UIioM26QfvAfeQ/I2pgX6SwWxEbd7qv+PkJzaFTjrXSlwOmWsJYma+UsdyFClaGFRyCgY8SWxPceandC8a+hQIDS/irLd9XF33RWp0b/09HjQl+n0HZ4teUFDUd2U1mUf3XCpn0+Ho316bmi6xSW6zaMy5RsbUl01hgWj2fgapAsGAHSBphwCE3Dz/9I/UfHWQw1k2/UTgjc9uIujcza6WgOxfsKluXYIOxwNKTfmzzOJMUwXz6GRgB2jhQI29MuKOZOITA7pXq5kZKf0lSRU8zKFTMJaK4zAHQ6f877Drr8XdAHemuXGZ2JdH/Dbdwarzy3YBMCWsAYlpeEvaVAdiSpyR7fAZktNuHd39Zg00Vlj2wdc44Vk5yVssW7pv5qnVZ7JTrXX2uBYFecLAXmplQ2ph1VdSXZLEDGgjiNA2T/fBj7G4/VjsuCBZFm1I0KCJp3HWEJx5dwwhSVc5wOJEzl7fMuPYMKWH/RM6P/7LnO1ulpdmiKPa4gHzdg3hDZn42NKcVt3UYf0phtxpWMrZp/DUEeizhckrC4ed6cfGtS3CUtJEqoycrCROJ5Hy+ONHl5Aqxt+JoPU+t/XATuctfPxQVcDr0itHzo2cjh/AVTU+IC7C0oQHSS9CC8Fp58UqbtYwFtSAd7ecCAwEAAaNIMEYwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB8GA1UdIwQYMBaAFIzl7uckcPWldirXeOFL3rH6K8FLMA0GCSqGSIb3DQEBCwUAA4ICAQAp+IGZScVIbRdCq5HPjlYBPOY7UbL8ZXnlMW/HLELV9GndnULuFhnuQTIdA5dquCsk8RI1fKsScEV1rqWvHZeSo5nVbvUaPJctoD/4GACqE6F8axs1AgSOvpJMyuycjSzSh6gDM1z37Fdqc/2IRqgi7SKdDsfJpi8XW8LtErpp4kyE1rEXopsXG2fe1UH25bZpXraUqYvp61rwVUCazAtV/U7ARG5AnT0mPqzUriIPrfL+v/+2ntV/BSc8/uCqYnHbwpIwjPURCaxo1Pmm6EEkm+V/Ss4ieNwwkD2bLLLST1LoVMim7Ebfy53PEKpsznKsGlVSu0YYKUsStWQVpwhKQw0bQLCJHdpvZtZSDgS9RbSMZz+aY/fpoNx6wDvmMgtdrb3pVXZ8vPKdq9YDrGfFqP60QdZ3CuSHXCM/zX4742GgImJ4KYAcTuF1+BkGf5JLAJOUZBkfCQ/kBT5wr8+EotLxASOC6717whLBYMEG6N8osEk+LDqoJRTLqkzirJsyOHWChKK47yGkdS3HBIZfo91QrJwKpfATYziBjEnqipkTu+6jFylBIkxKTPye4b3vgcodZP8LSNVXAsMGTPNPJxzPWQ37ba4zMnYZ5iUerlaox/SNsn68DT6RajIb1A1JDq+HNFc3hQP2bzk2y5pCax8zo5swjdklnm4clfB2Lw== diff --git a/backend/v3/storage/database/events_testing/instance_test.go b/backend/v3/storage/database/events_testing/instance_test.go index 46ffe310e53..8112a42ccb0 100644 --- a/backend/v3/storage/database/events_testing/instance_test.go +++ b/backend/v3/storage/database/events_testing/instance_test.go @@ -91,7 +91,7 @@ func TestServer_TestInstanceReduces(t *testing.T) { // check instance exists retryDuration, tick := integration.WaitForAndTickWithMaxDuration(CTX, time.Minute) - assert.EventuallyWithT(t, func(t *assert.CollectT) { + require.EventuallyWithT(t, func(t *assert.CollectT) { instance, err := instanceRepo.Get(CTX, pool, database.WithCondition(instanceRepo.IDCondition(res.GetInstanceId())), ) @@ -99,6 +99,16 @@ func TestServer_TestInstanceReduces(t *testing.T) { assert.Equal(t, instanceName, instance.Name) }, retryDuration, tick) + // check instance is projected, so the instance middleware finds it for the SystemClient.UpdateInstance call + retryDuration, tick = integration.WaitForAndTickWithMaxDuration(CTX, time.Minute) + require.EventuallyWithT(t, func(t *assert.CollectT) { + instance, err := SystemClient.GetInstance(CTX, &system.GetInstanceRequest{ + InstanceId: res.InstanceId, + }) + require.NoError(t, err) + assert.Equal(t, instanceName, instance.Instance.Name) + }, retryDuration, tick) + instanceName += "new" beforeUpdate := time.Now() _, err = SystemClient.UpdateInstance(CTX, &system.UpdateInstanceRequest{ @@ -144,6 +154,16 @@ func TestServer_TestInstanceReduces(t *testing.T) { assert.Equal(t, instanceName, instance.Name) }, retryDuration, tick) + // check instance is projected, so the instance middleware finds it for the SystemClient.RemoveInstance call + retryDuration, tick = integration.WaitForAndTickWithMaxDuration(CTX, time.Minute) + require.EventuallyWithT(t, func(t *assert.CollectT) { + instance, err := SystemClient.GetInstance(CTX, &system.GetInstanceRequest{ + InstanceId: res.InstanceId, + }) + require.NoError(t, err) + assert.Equal(t, instanceName, instance.Instance.Name) + }, retryDuration, tick) + _, err = SystemClient.RemoveInstance(CTX, &system.RemoveInstanceRequest{ InstanceId: res.InstanceId, }) diff --git a/load-test/.babelrc b/benchmark/.babelrc similarity index 100% rename from load-test/.babelrc rename to benchmark/.babelrc diff --git a/load-test/.gitignore b/benchmark/.gitignore similarity index 100% rename from load-test/.gitignore rename to benchmark/.gitignore diff --git a/load-test/.prettierrc b/benchmark/.prettierrc similarity index 100% rename from load-test/.prettierrc rename to benchmark/.prettierrc diff --git a/load-test/Makefile b/benchmark/Makefile similarity index 100% rename from load-test/Makefile rename to benchmark/Makefile diff --git a/load-test/README.md b/benchmark/README.md similarity index 96% rename from load-test/README.md rename to benchmark/README.md index 4e942a73d6a..6e0b3246f31 100644 --- a/load-test/README.md +++ b/benchmark/README.md @@ -1,13 +1,13 @@ -# Load Tests +# Benchmarks -This package contains code for load testing specific endpoints of ZITADEL using [k6](https://k6.io). +This package contains code for benchmarking specific endpoints of the API using [k6](https://k6.io). ## Prerequisite * [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) * [k6](https://k6.io/docs/get-started/installation/) * [go](https://go.dev/doc/install) -* running ZITADEL +* running the API ## Structure diff --git a/load-test/package-lock.json b/benchmark/package-lock.json similarity index 100% rename from load-test/package-lock.json rename to benchmark/package-lock.json diff --git a/load-test/package.json b/benchmark/package.json similarity index 90% rename from load-test/package.json rename to benchmark/package.json index b57f1770bb7..8109e6071a9 100644 --- a/load-test/package.json +++ b/benchmark/package.json @@ -1,6 +1,5 @@ { - "name": "typescript", - "version": "1.0.0", + "name": "@zitadel/benchmark", "repository": "ssh://git@github.com/zitadel/zitadel.git", "author": "ZITADEL Authors ", "engines": { @@ -29,6 +28,6 @@ "bundle": "webpack", "lint": "prettier --check src/**", "lint:fix": "prettier --write src", - "clean": "rm -rf dist .turbo node_modules" + "clean": "rm -rf dist node_modules" } } diff --git a/load-test/src/app.ts b/benchmark/src/app.ts similarity index 100% rename from load-test/src/app.ts rename to benchmark/src/app.ts diff --git a/load-test/src/config.ts b/benchmark/src/config.ts similarity index 100% rename from load-test/src/config.ts rename to benchmark/src/config.ts diff --git a/load-test/src/login_ui.ts b/benchmark/src/login_ui.ts similarity index 100% rename from load-test/src/login_ui.ts rename to benchmark/src/login_ui.ts diff --git a/load-test/src/membership.ts b/benchmark/src/membership.ts similarity index 100% rename from load-test/src/membership.ts rename to benchmark/src/membership.ts diff --git a/load-test/src/metadata.ts b/benchmark/src/metadata.ts similarity index 100% rename from load-test/src/metadata.ts rename to benchmark/src/metadata.ts diff --git a/load-test/src/oidc.ts b/benchmark/src/oidc.ts similarity index 100% rename from load-test/src/oidc.ts rename to benchmark/src/oidc.ts diff --git a/load-test/src/org.ts b/benchmark/src/org.ts similarity index 100% rename from load-test/src/org.ts rename to benchmark/src/org.ts diff --git a/load-test/src/project.ts b/benchmark/src/project.ts similarity index 100% rename from load-test/src/project.ts rename to benchmark/src/project.ts diff --git a/load-test/src/session.ts b/benchmark/src/session.ts similarity index 100% rename from load-test/src/session.ts rename to benchmark/src/session.ts diff --git a/load-test/src/url.ts b/benchmark/src/url.ts similarity index 100% rename from load-test/src/url.ts rename to benchmark/src/url.ts diff --git a/load-test/src/use_cases/human_password_login.ts b/benchmark/src/use_cases/human_password_login.ts similarity index 100% rename from load-test/src/use_cases/human_password_login.ts rename to benchmark/src/use_cases/human_password_login.ts diff --git a/load-test/src/use_cases/introspection.ts b/benchmark/src/use_cases/introspection.ts similarity index 100% rename from load-test/src/use_cases/introspection.ts rename to benchmark/src/use_cases/introspection.ts diff --git a/load-test/src/use_cases/machine_client_credentials_login.ts b/benchmark/src/use_cases/machine_client_credentials_login.ts similarity index 100% rename from load-test/src/use_cases/machine_client_credentials_login.ts rename to benchmark/src/use_cases/machine_client_credentials_login.ts diff --git a/load-test/src/use_cases/machine_jwt_profile_grant.ts b/benchmark/src/use_cases/machine_jwt_profile_grant.ts similarity index 100% rename from load-test/src/use_cases/machine_jwt_profile_grant.ts rename to benchmark/src/use_cases/machine_jwt_profile_grant.ts diff --git a/load-test/src/use_cases/machine_jwt_profile_grant_single_user.ts b/benchmark/src/use_cases/machine_jwt_profile_grant_single_user.ts similarity index 100% rename from load-test/src/use_cases/machine_jwt_profile_grant_single_user.ts rename to benchmark/src/use_cases/machine_jwt_profile_grant_single_user.ts diff --git a/load-test/src/use_cases/machine_pat_login.ts b/benchmark/src/use_cases/machine_pat_login.ts similarity index 100% rename from load-test/src/use_cases/machine_pat_login.ts rename to benchmark/src/use_cases/machine_pat_login.ts diff --git a/load-test/src/use_cases/manipulate_user.ts b/benchmark/src/use_cases/manipulate_user.ts similarity index 100% rename from load-test/src/use_cases/manipulate_user.ts rename to benchmark/src/use_cases/manipulate_user.ts diff --git a/load-test/src/use_cases/session/add_session.ts b/benchmark/src/use_cases/session/add_session.ts similarity index 100% rename from load-test/src/use_cases/session/add_session.ts rename to benchmark/src/use_cases/session/add_session.ts diff --git a/load-test/src/use_cases/session/oidc_session.ts b/benchmark/src/use_cases/session/oidc_session.ts similarity index 100% rename from load-test/src/use_cases/session/oidc_session.ts rename to benchmark/src/use_cases/session/oidc_session.ts diff --git a/load-test/src/use_cases/session/otp_session.ts b/benchmark/src/use_cases/session/otp_session.ts similarity index 100% rename from load-test/src/use_cases/session/otp_session.ts rename to benchmark/src/use_cases/session/otp_session.ts diff --git a/load-test/src/use_cases/session/password_session.ts b/benchmark/src/use_cases/session/password_session.ts similarity index 100% rename from load-test/src/use_cases/session/password_session.ts rename to benchmark/src/use_cases/session/password_session.ts diff --git a/load-test/src/use_cases/user_info.ts b/benchmark/src/use_cases/user_info.ts similarity index 100% rename from load-test/src/use_cases/user_info.ts rename to benchmark/src/use_cases/user_info.ts diff --git a/load-test/src/use_cases/users_by_metadata_key.ts b/benchmark/src/use_cases/users_by_metadata_key.ts similarity index 100% rename from load-test/src/use_cases/users_by_metadata_key.ts rename to benchmark/src/use_cases/users_by_metadata_key.ts diff --git a/load-test/src/use_cases/users_by_metadata_value.ts b/benchmark/src/use_cases/users_by_metadata_value.ts similarity index 100% rename from load-test/src/use_cases/users_by_metadata_value.ts rename to benchmark/src/use_cases/users_by_metadata_value.ts diff --git a/load-test/src/use_cases/verify_all_user_grants_exist.ts b/benchmark/src/use_cases/verify_all_user_grants_exist.ts similarity index 100% rename from load-test/src/use_cases/verify_all_user_grants_exist.ts rename to benchmark/src/use_cases/verify_all_user_grants_exist.ts diff --git a/load-test/src/user.ts b/benchmark/src/user.ts similarity index 100% rename from load-test/src/user.ts rename to benchmark/src/user.ts diff --git a/load-test/src/user_grant.ts b/benchmark/src/user_grant.ts similarity index 100% rename from load-test/src/user_grant.ts rename to benchmark/src/user_grant.ts diff --git a/load-test/tsconfig.json b/benchmark/tsconfig.json similarity index 100% rename from load-test/tsconfig.json rename to benchmark/tsconfig.json diff --git a/load-test/webpack.config.js b/benchmark/webpack.config.js similarity index 100% rename from load-test/webpack.config.js rename to benchmark/webpack.config.js diff --git a/build/login/Dockerfile b/build/login/Dockerfile deleted file mode 100644 index 35be59513cc..00000000000 --- a/build/login/Dockerfile +++ /dev/null @@ -1,55 +0,0 @@ -FROM node:20-alpine AS runtime - -FROM runtime AS pnpm-base -RUN apk add --no-cache libc6-compat -ENV PNPM_HOME="/pnpm" -ENV PATH="$PNPM_HOME:$PATH" -RUN corepack enable && corepack prepare pnpm@10.13.1 --activate -RUN --mount=type=cache,id=pnpm,target=/pnpm/store \ - pnpm add -g turbo@2.5.5 - -FROM pnpm-base AS pruner -WORKDIR /prune -COPY . . -RUN pnpm turbo prune @zitadel/login @zitadel/client @zitadel/proto --docker - -FROM pnpm-base AS installer -WORKDIR /install -COPY --from=pruner /prune/out/pnpm-lock.yaml ./ -RUN --mount=type=cache,id=pnpm,target=/pnpm/store \ - pnpm fetch --frozen-lockfile -COPY --from=pruner /prune/out/json/ . -RUN --mount=type=cache,id=pnpm,target=/pnpm/store \ - pnpm install --frozen-lockfile --ignore-scripts - -FROM pnpm-base AS builder -WORKDIR /build -COPY --from=installer /install/ . -COPY --from=pruner /prune/out/full/ . -COPY proto ./proto -ENV CI=true -RUN --mount=type=cache,id=turbo,target=/build/.turbo/cache \ - --mount=type=cache,id=next,target=/build/apps/login/.next/cache \ - pnpm turbo build:login:standalone --cache-dir=/build/.turbo/cache - -FROM scratch AS build-out -COPY /apps/login/public ./apps/login/public -COPY --from=builder /build/apps/login/.next/standalone ./ -COPY --from=builder /build/apps/login/.next/static ./apps/login/.next/static - -FROM runtime AS login-standalone -WORKDIR /runtime -RUN addgroup --system --gid 1001 nodejs && \ - adduser --system --uid 1001 nextjs -# If /.env-file/.env is mounted into the container, its variables are made available to the server before it starts up. -RUN mkdir -p /.env-file && touch /.env-file/.env && chown -R nextjs:nodejs /.env-file -COPY --chown=nextjs:nodejs apps/login/scripts ./ -COPY --chown=nextjs:nodejs --from=build-out . . -# Debug the final structure -USER nextjs -ENV HOSTNAME="0.0.0.0" -ENV PORT=3000 -# TODO: Check healthy, not ready -HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ - CMD ["/bin/sh", "-c", "node /runtime/healthcheck.js http://localhost:${PORT}/ui/v2/login/healthy"] -ENTRYPOINT ["/runtime/entrypoint.sh"] diff --git a/build/login/Dockerfile.dockerignore b/build/login/Dockerfile.dockerignore deleted file mode 100644 index c2a0ee4a18d..00000000000 --- a/build/login/Dockerfile.dockerignore +++ /dev/null @@ -1,38 +0,0 @@ -* - -!apps/login/constants -!apps/login/scripts -!apps/login/src -!apps/login/public -!apps/login/locales -!apps/login/next.config.mjs -!apps/login/next-env-vars.d.ts -!apps/login/next-env.d.ts -!apps/login/tailwind.config.mjs -!apps/login/postcss.config.cjs -!apps/login/tsconfig.json -!apps/login/package.json -!apps/login/turbo.json - -!package.json -!pnpm-lock.yaml -!pnpm-workspace.yaml -!turbo.json - -!packages/zitadel-proto/package.json -!packages/zitadel-proto/buf.gen.yaml -!packages/zitadel-proto/turbo.json - -!packages/zitadel-client/package.json -!packages/zitadel-client/**/package.json -!packages/zitadel-client/src -!packages/zitadel-client/tsconfig.json -!packages/zitadel-client/tsup.config.ts -!packages/zitadel-client/turbo.json - -!proto - -**/*.md -**/node_modules -**/*.test.ts -**/*.test.tsx diff --git a/build/zitadel/Dockerfile b/build/zitadel/Dockerfile deleted file mode 100644 index 4abc1f388c4..00000000000 --- a/build/zitadel/Dockerfile +++ /dev/null @@ -1,33 +0,0 @@ -FROM --platform=$TARGETPLATFORM debian:latest as artifact -ENV ZITADEL_ARGS= -ARG TARGETPLATFORM - -RUN apt-get update && apt-get install ca-certificates -y - -COPY build/zitadel/entrypoint.sh /app/entrypoint.sh -COPY zitadel /app/zitadel - -RUN useradd -s "" --home / zitadel && \ - chown zitadel /app/zitadel && \ - chmod +x /app/zitadel && \ - chown zitadel /app/entrypoint.sh && \ - chmod +x /app/entrypoint.sh - -WORKDIR /app -ENV PATH="/app:${PATH}" - -USER zitadel -ENTRYPOINT ["/app/entrypoint.sh"] - -FROM --platform=$TARGETPLATFORM scratch as final -ARG TARGETPLATFORM - -COPY --from=artifact /etc/passwd /etc/passwd -COPY --from=artifact /etc/ssl/certs /etc/ssl/certs -COPY --from=artifact /app/zitadel /app/zitadel - -HEALTHCHECK NONE -EXPOSE 8080 - -USER zitadel -ENTRYPOINT ["/app/zitadel"] diff --git a/build/zitadel/Dockerfile.dockerignore b/build/zitadel/Dockerfile.dockerignore deleted file mode 100644 index 83c401b28ad..00000000000 --- a/build/zitadel/Dockerfile.dockerignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!build/zitadel/entrypoint.sh -!zitadel diff --git a/cmd/setup/integration_test/setup_test.go b/cmd/setup/integration_test/setup_test.go index 42b85028418..c71a03277b1 100644 --- a/cmd/setup/integration_test/setup_test.go +++ b/cmd/setup/integration_test/setup_test.go @@ -11,6 +11,7 @@ package setup_test import ( "context" + "fmt" "os" "testing" "time" @@ -18,7 +19,22 @@ import ( "github.com/jackc/pgx/v5/pgxpool" ) -const ConnString = "host=localhost port=5432 user=zitadel dbname=zitadel sslmode=disable" +func getEnv(key, fallback string) string { + if value, exists := os.LookupEnv(key); exists { + return value + } + return fallback +} + +var ConnString = fmt.Sprintf( + "host=%s port=%s user=%s password=%s dbname=%s sslmode=%s", + getEnv("ZITADEL_DATABASE_POSTGRES_HOST", "localhost"), + getEnv("ZITADEL_DATABASE_POSTGRES_PORT", "5433"), + getEnv("ZITADEL_DATABASE_POSTGRES_USER", "zitadel"), + getEnv("ZITADEL_DATABASE_POSTGRES_PASSWORD", "zitadel"), + getEnv("ZITADEL_DATABASE_POSTGRES_DATABASE", "zitadel"), + getEnv("ZITADEL_DATABASE_POSTGRES_SSL_MODE", "disable"), +) var ( CTX context.Context diff --git a/console/.env.dev b/console/.env.dev new file mode 100644 index 00000000000..0e7789a37d8 --- /dev/null +++ b/console/.env.dev @@ -0,0 +1 @@ +ENVIRONMENT_JSON_URL=http://localhost:8080/ui/console/assets/environment.json diff --git a/console/README.md b/console/README.md index 9e5844d88df..aae6822d5e4 100644 --- a/console/README.md +++ b/console/README.md @@ -1,68 +1,17 @@ -# Console Angular App +# Zitadel Console -This is the ZITADEL Console Angular application. +The Console is Zitadels management UI. -## Development +It is built using [Angular](https://angular.dev/) and part of the Zitadel monorepo. -### Prerequisites - -- Node.js 18 or later -- pnpm (latest) - -### Installation - -```bash -pnpm install -``` - -### Proto Generation - -The Console app uses **dual proto generation** with Turbo dependency management: - -1. **`@zitadel/proto` generation**: Modern ES modules with `@bufbuild/protobuf` for v2 APIs -2. **Local `buf.gen.yaml` generation**: Traditional protobuf JavaScript classes for v1 APIs - -The Console app's `turbo.json` ensures that `@zitadel/proto#generate` runs before the Console's own generation, providing both: - -- Modern schemas from `@zitadel/proto` (e.g., `UserSchema`, `DetailsSchema`) -- Legacy classes from `src/app/proto/generated` (e.g., `User`, `Project`) - -Generated files: - -- **`@zitadel/proto`**: Modern ES modules in `login/packages/zitadel-proto/` -- **Local generation**: Traditional protobuf files in `src/app/proto/generated/` - - TypeScript definition files (`.d.ts`) - - JavaScript files (`.js`) - - gRPC client files (`*ServiceClientPb.ts`) - - OpenAPI/Swagger JSON files (`.swagger.json`) - -To generate proto files: - -```bash -pnpm turbo generate --filter=./console -``` - -This automatically runs both generations in the correct order via Turbo dependencies. - -### Development Server - -To start the development server: - -```bash -pnpm turbo start --filter=./console -``` - -This will: - -1. Fetch the environment configuration from the server -2. Serve the app on the default port +To get started follow the [contributing quick start](../CONTRIBUTING.md#console). ### Building To build for production: ```bash -pnpm turbo build --filter=./console +pnpm nx run @zitadel/console:build ``` This will: @@ -75,38 +24,45 @@ This will: To run linting and formatting checks: ```bash -pnpm turbo lint --filter=./console +pnpm nx @zitadel/console:lint ``` To auto-fix formatting issues: ```bash -pnpm turbo lint:fix --filter=./console +pnpm nx @zitadel/console:lint-fix ``` ## Project Structure - `src/app/proto/generated/` - Generated proto files (Angular-specific format) - `buf.gen.yaml` - Local proto generation configuration -- `turbo.json` - Turbo dependency configuration for proto generation +- `project.json` - Nx orchestration and caching for builds and tests - `prebuild.development.js` - Development environment configuration script -## Proto Generation Details - -The Console app uses **dual proto generation** managed by Turbo dependencies: - ### Dependency Chain -The Console app has the following build dependencies managed by Turbo: +The Console app has the following build dependencies managed by Nx: -1. `@zitadel/proto#generate` - Generates modern protobuf files -2. `@zitadel/client#build` - Builds the TypeScript gRPC client library -3. `console#generate` - Generates Console-specific protobuf files -4. `console#build` - Builds the Angular application +1. `@zitadel/proto:generate` - Generates the protobuf stubs +2. `@zitadel/client:build` - Builds the TypeScript gRPC client library +3. `@zitadel/console:generate` - Generates Console-specific protobuf stubs +4. `@zitadel/console:build` - Creates a production build from Console This ensures that the Console always has access to the latest client library and protobuf definitions. -### Legacy v1 API (Traditional Protobuf) + +### Proto Generation Details + +1. **`@zitadel/proto` generation**: Modern ES modules with `@bufbuild/protobuf` for v2 APIs +2. **Local `buf.gen.yaml` generation**: Traditional protobuf JavaScript classes for v1 APIs + +The Console app calls Zitadel v1 and v2 APIs. +As long as the Console still calls v1 APIs, it needs to import client stubs from separate sources: +- [Source outputs from direct buf generation for v1 APIs](#v1-stubs) +- [@zitadel/client for v2 APIs](#v2-stubs) + +### Legacy v1 API (Traditional Protobuf) - Uses local `buf.gen.yaml` configuration - Generates traditional Google protobuf JavaScript classes extending `jspb.Message` @@ -114,7 +70,7 @@ This ensures that the Console always has access to the latest client library and - Output: `src/app/proto/generated/` - Used for: Most existing Console functionality -### Modern v2 API (ES Modules) +### Modern v2 API (ES Modules) - Uses `@zitadel/proto` package generation - Generates modern ES modules with `@bufbuild/protobuf` @@ -124,9 +80,9 @@ This ensures that the Console always has access to the latest client library and ### Dependency Management -The Console's `turbo.json` ensures proper execution order: +The Console's `project.json` ensures proper execution order: -1. `@zitadel/proto#generate` runs first (modern ES modules) +1. `@zitadel/proto:generate` runs first (modern ES modules) 2. Console's local generation runs second (traditional protobuf) 3. Build/lint/start tasks depend on both generations being complete diff --git a/console/package.json b/console/package.json index 33589ad0d43..67ef9da14a9 100644 --- a/console/package.json +++ b/console/package.json @@ -1,17 +1,14 @@ { - "name": "console", - "version": "0.0.0", + "name": "@zitadel/console", "scripts": { "ng": "ng", - "dev": "node prebuild.development.js && ng serve", - "start": "node prebuild.development.js && ng serve", + "dev": "wait-on --verbose --interval 2000 --simultaneous 1 --timeout 30m ${ENVIRONMENT_JSON_URL} && node prebuild.development.js && ng serve --host=${DEVCONTAINER_LISTEN_HOST:-127.0.0.1}", "build": "ng build --configuration production --base-href=/ui/console/", - "lint": "pnpm run '/^lint:check:.*$/'", - "lint:check:ng": "ng lint", - "lint:check:prettier": "prettier --check src", - "lint:fix": "prettier --write src", + "lint-check-ng": "ng lint", + "lint-check-prettier": "prettier --check src", + "lint-fix": "prettier --write src", "generate": "pnpm exec buf generate ../proto --include-imports --include-wkt", - "clean": "rm -rf dist .angular .turbo node_modules src/app/proto/generated" + "clean": "rm -rf dist .angular node_modules src/app/proto/generated" }, "private": true, "dependencies": { @@ -39,8 +36,6 @@ "@ng-icons/heroicons": "^32.1.0", "@ngx-translate/core": "^17.0.0", "@tanstack/angular-query-experimental": "^5.85.6", - "@zitadel/client": "workspace:*", - "@zitadel/proto": "workspace:*", "angular-oauth2-oidc": "^20.0.2", "angularx-qrcode": "^20.0.0", "buffer": "^6.0.3", @@ -84,6 +79,8 @@ "@types/uuid": "^10.0.0", "@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/parser": "^5.62.0", + "@zitadel/client": "workspace:*", + "@zitadel/proto": "workspace:*", "eslint": "^8.57.1", "jasmine-core": "~5.6.0", "jasmine-spec-reporter": "~7.0.0", diff --git a/console/project.json b/console/project.json new file mode 100644 index 00000000000..b685e1fcbfc --- /dev/null +++ b/console/project.json @@ -0,0 +1,56 @@ +{ + "$schema": "../node_modules/nx/schemas/project-schema.json", + "targets": { + "lint": { + "description": "Runs all linters", + "dependsOn": [ + "lint-check-*" + ] + }, + "lint-check-prettier": { + "description": "Checks code formatting with Prettier", + "cache": true, + "inputs": [ + "default" + ] + }, + "lint-check-ng": { + "description": "Runs Angular specific lint checks", + "cache": true, + "inputs": [ + "default" + ] + }, + "generate": { + "description": "Generates code from protobuf definitions for API v1 endpoints", + "inputs": [ + "{workspaceRoot}/proto/**/*", + "{projectRoot}/buf.gen.yaml", + "{projectRoot}/package.json", + "{workspaceRoot}/pnpm-lock.yaml" + ], + "outputs": [ + "{projectRoot}/src/app/proto/generated" + ] + }, + "build": { + "description": "Builds the Console for production", + "inputs": [ + "default", + "{workspaceRoot}/pnpm-lock.yaml", + "{workspaceRoot}/docs/frameworks.json" + ], + "outputs": [ + "{projectRoot}/dist" + ] + }, + "dev": { + "description": "Runs the Console in development mode with hot-reloading", + "continuous": true, + "dependsOn": [ + "generate", + "^build" + ] + } + } +} diff --git a/console/turbo.json b/console/turbo.json deleted file mode 100644 index f92aab1119f..00000000000 --- a/console/turbo.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "$schema": "https://turbo.build/schema.json", - "extends": ["//"], - "tasks": { - "generate": { - "dependsOn": ["@zitadel/proto#generate"], - "outputs": ["src/app/proto/generated/**"] - }, - "build": { - "dependsOn": ["generate", "@zitadel/client#build"], - "outputs": ["dist/**"] - }, - "dev": { - "dependsOn": ["generate", "@zitadel/client#build"], - "cache": false, - "persistent": true - }, - "start": { - "dependsOn": ["generate", "@zitadel/client#build"], - "cache": false, - "persistent": true - } - } -} diff --git a/docker-bake.hcl b/docker-bake.hcl deleted file mode 100644 index 56f65b7f465..00000000000 --- a/docker-bake.hcl +++ /dev/null @@ -1,11 +0,0 @@ -# login-standalone should be extended by the login-standalone target in apps/login/docker-bake.hcl -target "login-standalone" { - dockerfile = "build/login/Dockerfile" -} - -target "login-standalone-out" { - inherits = ["login-standalone"] - target = "build-out" - output = ["type=local,dest=.artifacts/login"] -} - \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index 248053a6405..94464d7a7d6 100644 --- a/docs/README.md +++ b/docs/README.md @@ -2,44 +2,30 @@ This website is built using [Docusaurus 2](https://v2.docusaurus.io/), a modern static website generator. -The documentation is part of the ZITADEL monorepo and uses **pnpm** and **Turbo** for development and build processes. +The documentation is part of the ZITADEL monorepo and uses **pnpm** and **Nx** for development and build processes. ## Quick Start +Run the following commands from the repositorys root directory to install all dependencies needed. +Using Corepack makes sure you have the pnpm version intalled that is declared in [](../package.json). + ```bash -# From the repository root +corepack enable pnpm install - -# Start development server (with Turbo) -pnpm turbo dev --filter=zitadel-docs - -# Or start directly from docs directory -cd docs && pnpm start ``` -The site will be available at http://localhost:3000 - -## Available Scripts - -All scripts can be run from the repository root using Turbo: +Start a docs server ```bash -# Development server with live reload -pnpm turbo dev --filter=zitadel-docs +# Start development server with live-reloading +pnpm nx run @zitadel/docs:dev -# Build for production -pnpm turbo build --filter=zitadel-docs - -# Generate API documentation and configuration docs -pnpm turbo generate --filter=zitadel-docs - -# Lint and fix code -pnpm turbo lint --filter=zitadel-docs - -# Serve production build locally -cd docs && pnpm serve +# Or serve a production build +pnpm nx run @zitadel/docs:start ``` +The site will be available at http://localhost:3100 + ## Add new Sites to existing Topics To add a new site to the already existing structure simply save the `md` file into the corresponding folder and append the sites id int the file `sidebars.js`. @@ -55,36 +41,3 @@ The documentation build process automatically: 3. **Generates API documentation** - Creates OpenAPI specification docs 4. **Copies configuration files** - Includes configuration examples 5. **Builds the Docusaurus site** - Generates the final static site - -## Local Development - -### Standard Development - -```bash -# Install dependencies -pnpm install - -# Start development server -pnpm start -``` - -### API Documentation Development - -When working on the API docs, run a local development server with: - -```bash -pnpm start:api -``` - -## Container Image - -If you just want to start docusaurus locally without installing node you can fallback to our container image. -Execute the following commands from the repository root to build and start a local version of ZITADEL - -```shell -docker build -f docs/Dockerfile . -t zitadel-docs -``` - -```shell -docker run -p 8080:8080 zitadel-docs -``` diff --git a/docs/docs/self-hosting/deploy/docker-compose.yaml b/docs/docs/self-hosting/deploy/docker-compose.yaml index ad94aa0c22b..440654c5aa0 100644 --- a/docs/docs/self-hosting/deploy/docker-compose.yaml +++ b/docs/docs/self-hosting/deploy/docker-compose.yaml @@ -106,7 +106,7 @@ services: db: restart: unless-stopped - image: postgres:17-alpine + image: postgres:17 environment: PGUSER: postgres POSTGRES_PASSWORD: postgres diff --git a/docs/package.json b/docs/package.json index f2542322784..37398dc8012 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,29 +1,24 @@ { - "name": "zitadel-docs", - "version": "0.0.0", + "name": "@zitadel/docs", "private": true, "scripts": { - "docusaurus": "docusaurus", - "dev": "docusaurus start", - "start": "docusaurus start", - "start:api": "pnpm run generate && docusaurus start", - "build": "pnpm run ensure-plugins && pnpm run generate && docusaurus build", + "dev": "docusaurus start --port 3100", + "prod": "docusaurus serve --port 3100", + "build": "docusaurus build", "swizzle": "docusaurus swizzle", "deploy": "docusaurus deploy", "clear": "docusaurus clear", - "serve": "docusaurus serve", "write-translations": "docusaurus write-translations", "write-heading-ids": "docusaurus write-heading-ids", "ensure-plugins": "if [ ! -f \"protoc-gen-connect-openapi/protoc-gen-connect-openapi\" ]; then sh ./plugin-download.sh; fi", "debug-plugins": "echo \"PWD: $(pwd)\" && echo \"Plugin file exists: $(test -f protoc-gen-connect-openapi/protoc-gen-connect-openapi && echo 'yes' || echo 'no')\" && echo \"Plugin executable: $(test -x protoc-gen-connect-openapi/protoc-gen-connect-openapi && echo 'yes' || echo 'no')\" && ls -la protoc-gen-connect-openapi/ || echo 'Plugin directory not found'", - "generate": "pnpm run generate:grpc && pnpm run generate:apidocs && pnpm run generate:configdocs", - "generate:grpc": "pnpm run ensure-plugins && buf generate ../proto", - "generate:apidocs": "docusaurus gen-api-docs all", - "generate:configdocs": "cp -r ../cmd/defaults.yaml ./docs/self-hosting/manage/configure/ && cp -r ../cmd/setup/steps.yaml ./docs/self-hosting/manage/configure/", - "generate:re-gen": "yarn generate:clean-all && pnpm generate", - "generate:clean-all": "docusaurus clean-api-docs all", + "generate-grpc": "buf generate ../proto", + "generate-apidocs": "docusaurus gen-api-docs all", + "generate-configdocs": "cp -r ../cmd/defaults.yaml ../cmd/setup/steps.yaml ./docs/self-hosting/manage/configure/", + "generate-re-gen": "yarn generate:clean-all && pnpm generate", + "generate-clean-all": "docusaurus clean-api-docs all", "postinstall": "sh ./plugin-download.sh", - "clean": "rm -rf node_modules .artifacts .docusaurus .turbo protoc-gen-connect-openapi docs/apis/resources" + "clean": "rm -rf node_modules .artifacts .docusaurus protoc-gen-connect-openapi docs/apis/resources" }, "dependencies": { "@bufbuild/buf": "^1.14.0", diff --git a/docs/project.json b/docs/project.json new file mode 100644 index 00000000000..cb5dcb52d6c --- /dev/null +++ b/docs/project.json @@ -0,0 +1,75 @@ +{ + "$schema": "../node_modules/nx/schemas/project-schema.json", + "targets": { + "ensure-plugins": { + "description": "Downloads the connectRPC plugin to generate OpenAPI documentation from protobuf definitions", + "inputs": [ + "{projectRoot}/plugin-download.sh" + ], + "outputs": [ + "{projectRoot}/protoc-gen-connect-openapi/protoc-gen-connect-openapi" + ], + "cache": true + }, + "generate-grpc": { + "description": "Generates OpenAPI specifications from protobuf definitions for API endpoints", + "dependsOn": [ + "ensure-plugins" + ], + "outputs": [ + "{projectRoot}/.artifacts/openapi", + "{projectRoot}/.artifacts/openapi3" + ], + "cache": true + }, + "generate-apidocs": { + "description": "Generates API documentation from OpenAPI specifications for API endpoints", + "dependsOn": [ + "generate-grpc" + ], + "outputs": [ + "{projectRoot}/docs/api" + ], + "cache": true + }, + "generate-configdocs": { + "description": "Copies default configuration files and setup steps to the documentation site", + "inputs": [ + "{workspaceRoot}/cmd/defaults.yaml", + "{workspaceRoot}/cmd/setup/steps.yaml" + ], + "outputs": [ + "{projectRoot}/docs/self-hosting/manage/configure/defaults.yaml", + "{projectRoot}/docs/self-hosting/manage/configure/steps.yaml" + ], + "cache": true + }, + "generate": { + "description": "Runs all documentation generation targets", + "dependsOn": [ + "generate-apidocs", + "generate-configdocs" + ] + }, + "build": { + "description": "Builds the documentation site using Docusaurus", + "outputs": [ + "{projectRoot}/build" + ] + }, + "prod": { + "description": "Runs the documentation site in production mode", + "continuous": true, + "dependsOn": [ + "build" + ] + }, + "dev": { + "description": "Runs the documentation site in development mode with hot-reloading", + "continuous": true, + "dependsOn": [ + "generate" + ] + } + } +} diff --git a/docs/turbo.json b/docs/turbo.json deleted file mode 100644 index 0e1ef080257..00000000000 --- a/docs/turbo.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "$schema": "https://turbo.build/schema.json", - "extends": ["//"], - "tasks": { - "generate": { - "dependsOn": ["^generate"], - "outputs": ["docs/api/**", "docs/self-hosting/manage/configure/*.yaml"], - "cache": true - }, - "generate:grpc": { - "dependsOn": ["^generate"], - "outputs": ["docs/api/**"], - "cache": true - }, - "generate:apidocs": { - "dependsOn": ["generate:grpc"], - "outputs": ["docs/api/**"], - "cache": true - }, - "generate:configdocs": { - "outputs": ["docs/self-hosting/manage/configure/*.yaml"], - "cache": true - }, - "build": { - "dependsOn": ["generate"], - "outputs": ["build/**"], - "cache": true - }, - "dev": { - "dependsOn": ["generate"], - "cache": false, - "persistent": true - }, - "start": { - "dependsOn": ["generate"], - "cache": false, - "persistent": true - }, - "start:api": { - "dependsOn": ["generate"], - "cache": false, - "persistent": true - } - } -} diff --git a/docs/vercel.json b/docs/vercel.json index 74320fbf084..04909d074be 100644 --- a/docs/vercel.json +++ b/docs/vercel.json @@ -1,4 +1,6 @@ { + "$schema": "https://openapi.vercel.sh/vercel.json", + "buildCommand": "pnpm nx run @zitadel/docs:build", "github": { "enabled": true }, diff --git a/e2e/README.md b/e2e/README.md deleted file mode 100644 index a442584f83b..00000000000 --- a/e2e/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Run e2e Tests - -```bash -docker compose run e2e -``` - -# Cleanup e2e Tests - -```bash -docker compose down -``` - diff --git a/e2e/config/host.docker.internal/docker-compose.yaml b/e2e/config/host.docker.internal/docker-compose.yaml deleted file mode 100644 index 80ea33b3642..00000000000 --- a/e2e/config/host.docker.internal/docker-compose.yaml +++ /dev/null @@ -1,35 +0,0 @@ -services: - - db: - extends: - file: '../localhost/docker-compose.yaml' - service: 'db' - - zitadel: - depends_on: - db: - condition: 'service_healthy' - extends: - file: '../localhost/docker-compose.yaml' - service: 'zitadel' - volumes: - - ./zitadel.yaml:/zitadel.yaml - e2e: - image: cypress/included:12.2.0 - depends_on: - zitadel: - condition: 'service_healthy' - db: - condition: 'service_healthy' - working_dir: /e2e - user: '$UID' - volumes: - - ../../:/e2e - environment: - CYPRESS_BASE_URL: http://host.docker.internal:8080/ui/console - CYPRESS_WEBHOOK_HANDLER_HOST: host.docker.internal - CYPRESS_DATABASE_CONNECTION_URL: 'postgresql://root@db:26257/zitadel' - ports: - - "8900:8900" - extra_hosts: - - "host.docker.internal:host-gateway" diff --git a/e2e/config/host.docker.internal/zitadel.yaml b/e2e/config/host.docker.internal/zitadel.yaml deleted file mode 100644 index 23f35302b49..00000000000 --- a/e2e/config/host.docker.internal/zitadel.yaml +++ /dev/null @@ -1,70 +0,0 @@ -Log: - Level: info - -ExternalDomain: host.docker.internal -ExternalSecure: false - -Database: - postgres: - # This makes the e2e config reusable with an out-of-docker zitadel process and an /etc/hosts entry - Host: host.docker.internal - Port: 5432 - MaxOpenConns: 15 - MaxIdleConns: 10 - Database: zitadel - User: - Username: zitadel - Password: zitadel - SSL: - Mode: disable - Admin: - Username: postgres - Password: postgres - SSL: - Mode: disable - -TLS: - Enabled: false - -FirstInstance: - Org: - Human: - PasswordChangeRequired: false - -LogStore: - Access: - Database: - Enabled: true - Debounce: - MinFrequency: 0s - MaxBulkSize: 0 - Execution: - Database: - Enabled: true - Stdout: - Enabled: false - -Quotas: - Access: - ExhaustedCookieKey: "zitadel.quota.limiting" - ExhaustedCookieMaxAge: "600s" - -Console: - InstanceManagementURL: "https://example.com/instances/{{.InstanceID}}" - -Projections: - Customizations: - NotificationsQuotas: - RequeueEvery: 1s - -DefaultInstance: - LoginPolicy: - MfaInitSkipLifetime: "0" - Features: - LoginV2: - Required: false - -SystemAPIUsers: -- cypress: - KeyData: "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF6aStGRlNKTDdmNXl3NEtUd3pnTQpQMzRlUEd5Y20vTStrVDBNN1Y0Q2d4NVYzRWFESXZUUUtUTGZCYUVCNDV6YjlMdGpJWHpEdzByWFJvUzJoTzZ0CmgrQ1lRQ3ozS0N2aDA5QzBJenhaaUIySVMzSC9hVCs1Qng5RUZZK3ZuQWtaamNjYnlHNVlOUnZtdE9sbnZJZUkKSDdxWjB0RXdrUGZGNUdFWk5QSlB0bXkzVUdWN2lvZmRWUVMxeFJqNzMrYU13NXJ2SDREOElkeWlBQzNWZWtJYgpwdDBWajBTVVgzRHdLdG9nMzM3QnpUaVBrM2FYUkYwc2JGaFFvcWRKUkk4TnFnWmpDd2pxOXlmSTV0eXhZc3duCitKR3pIR2RIdlczaWRPRGxtd0V0NUsycGFzaVJJV0syT0dmcSt3MEVjbHRRSGFidXFFUGdabG1oQ2tSZE5maXgKQndJREFRQUIKLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==" - diff --git a/e2e/config/localhost/docker-compose.yaml b/e2e/config/localhost/docker-compose.yaml deleted file mode 100644 index cb055dd27c1..00000000000 --- a/e2e/config/localhost/docker-compose.yaml +++ /dev/null @@ -1,44 +0,0 @@ -services: - zitadel: - user: '$UID' - restart: 'always' - image: '${ZITADEL_IMAGE:-ghcr.io/zitadel/zitadel:latest}' - build: - context: ../../.. - dockerfile: ./build/zitadel/Dockerfile - target: artifact - cache_from: - - type=gha - cache_to: - - type=gha,mode=max - command: 'start-from-init --masterkey "MasterkeyNeedsToHave32Characters" --tlsMode disabled --config /zitadel.yaml --steps /zitadel.yaml' - depends_on: - db: - condition: 'service_healthy' - volumes: - - ./zitadel.yaml:/zitadel.yaml - ports: - - "8080:8080" - healthcheck: - test: [ "CMD", "/app/zitadel", "ready", "--config", "/zitadel.yaml" ] - interval: '10s' - timeout: '5s' - retries: 5 - start_period: '10s' - extra_hosts: - - "host.docker.internal:host-gateway" - - db: - restart: 'always' - image: 'postgres:17-alpine' - environment: - - POSTGRES_USER=postgres - - POSTGRES_PASSWORD=postgres - healthcheck: - test: [ "CMD-SHELL", "pg_isready", "-d", "zitadel", "-U", "postgres" ] - interval: '10s' - timeout: '30s' - retries: 5 - start_period: '20s' - ports: - - "5432:5432" diff --git a/e2e/docker-compose.yaml b/e2e/docker-compose.yaml deleted file mode 100644 index f03b1fcc465..00000000000 --- a/e2e/docker-compose.yaml +++ /dev/null @@ -1,10 +0,0 @@ -services: - zitadel: - extends: - file: './config/localhost/docker-compose.yaml' - service: 'zitadel' - - db: - extends: - file: './config/localhost/docker-compose.yaml' - service: 'db' diff --git a/e2e/package.json b/e2e/package.json deleted file mode 100644 index afee683a10d..00000000000 --- a/e2e/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "zitadel-e2e", - "version": "0.0.0", - "scripts": { - "open": "pnpm exec cypress open", - "test:e2e": "pnpm exec cypress run", - "test:open:golang": "pnpm run open --", - "test:e2e:golang": "pnpm run test:e2e --", - "test:open:golangangular": "CYPRESS_BASE_URL=http://localhost:4200 CYPRESS_BACKEND_URL=http://localhost:8080 pnpm run open --", - "test:e2e:golangangular": "CYPRESS_BASE_URL=http://localhost:4200 CYPRESS_BACKEND_URL=http://localhost:8080 pnpm run test:e2e --", - "test:open:angulargolang": "pnpm run test:open:golangangular --", - "test:e2e:angulargolang": "pnpm run test:e2e:golangangular --", - "test:open:angular": "CYPRESS_BASE_URL=http://localhost:4200 CYPRESS_BACKEND_URL=http://localhost:8080 CYPRESS_WEBHOOK_HANDLER_HOST=host.docker.internal pnpm run open --", - "test:e2e:angular": "CYPRESS_BASE_URL=http://localhost:4200 CYPRESS_BACKEND_URL=http://localhost:8080 CYPRESS_WEBHOOK_HANDLER_HOST=host.docker.internal pnpm run test:e2e --", - "lint": "prettier --check cypress", - "lint:fix": "prettier --write cypress", - "clean": "rm -rf .turbo node_modules" - }, - "private": true, - "devDependencies": { - "@types/pg": "^8.11.6", - "cypress-wait-until": "^3.0.2", - "jsonwebtoken": "^9.0.2", - "mochawesome": "^7.1.3", - "pg": "^8.12.0", - "prettier": "^3.3.3", - "typescript": "^5.5.4", - "uuid": "^10.0.0", - "wait-on": "^7.2.0", - "@types/node": "^22.3.0", - "cypress": "^14.5.3" - } -} diff --git a/e2e/turbo.json b/e2e/turbo.json deleted file mode 100644 index 972f2b327ac..00000000000 --- a/e2e/turbo.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "https://turbo.build/schema.json", - "extends": ["//"], - "tasks": { - "e2e": { - "cache": false, - "persistent": false - }, - "e2e:golang": { - "cache": false, - "persistent": false - }, - "e2e:golangangular": { - "cache": false, - "persistent": false - }, - "e2e:angular": { - "cache": false, - "persistent": false - }, - "lint": { - "outputs": [] - } - } -} diff --git a/internal/api/grpc/admin/integration_test/restrictions_allow_public_org_registrations_test.go b/internal/api/grpc/admin/integration_test/restrictions_allow_public_org_registrations_test.go index 9aed3f59244..a5dd76833c5 100644 --- a/internal/api/grpc/admin/integration_test/restrictions_allow_public_org_registrations_test.go +++ b/internal/api/grpc/admin/integration_test/restrictions_allow_public_org_registrations_test.go @@ -22,7 +22,7 @@ import ( func TestServer_Restrictions_DisallowPublicOrgRegistration(t *testing.T) { instance := integration.NewInstance(CTX) - regOrgUrl, err := url.Parse("http://" + instance.Domain + ":8080/ui/login/register/org") + regOrgUrl, err := url.Parse("http://" + instance.Domain + ":8082/ui/login/register/org") require.NoError(t, err) // The CSRF cookie must be sent with every request. // We can simulate a browser session using a cookie jar. diff --git a/internal/api/grpc/admin/integration_test/restrictions_allowed_languages_test.go b/internal/api/grpc/admin/integration_test/restrictions_allowed_languages_test.go index 52a1607bba0..1aabe7baa7f 100644 --- a/internal/api/grpc/admin/integration_test/restrictions_allowed_languages_test.go +++ b/internal/api/grpc/admin/integration_test/restrictions_allowed_languages_test.go @@ -191,7 +191,7 @@ func setAndAwaitDefaultLanguage(ctx context.Context, cc *integration.Client, t * func awaitDiscoveryEndpoint(t *testing.T, ctx context.Context, domain string, containsUILocales, notContainsUILocales []string) { retryDuration, tick := integration.WaitForAndTickWithMaxDuration(ctx, time.Minute) require.EventuallyWithT(t, func(tt *assert.CollectT) { - req, err := http.NewRequestWithContext(ctx, http.MethodGet, "http://"+domain+":8080/.well-known/openid-configuration", nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, "http://"+domain+":8082/.well-known/openid-configuration", nil) require.NoError(tt, err) resp, err := http.DefaultClient.Do(req) require.NoError(tt, err) @@ -218,7 +218,7 @@ func awaitDiscoveryEndpoint(t *testing.T, ctx context.Context, domain string, co func awaitLoginUILanguage(t *testing.T, ctx context.Context, domain string, acceptLanguage language.Tag, expectLang language.Tag, containsText string) { retryDuration, tick := integration.WaitForAndTickWithMaxDuration(ctx, time.Minute) require.EventuallyWithT(t, func(tt *assert.CollectT) { - req, err := http.NewRequestWithContext(ctx, http.MethodGet, "http://"+domain+":8080/ui/login/register", nil) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, "http://"+domain+":8082/ui/login/register", nil) req.Header.Set("Accept-Language", acceptLanguage.String()) require.NoError(tt, err) resp, err := http.DefaultClient.Do(req) diff --git a/internal/api/grpc/group/v2/integration_test/query_test.go b/internal/api/grpc/group/v2/integration_test/query_test.go index 1f325ede985..926f80f9c62 100644 --- a/internal/api/grpc/group/v2/integration_test/query_test.go +++ b/internal/api/grpc/group/v2/integration_test/query_test.go @@ -96,12 +96,12 @@ func TestServer_GetGroup(t *testing.T) { require.EventuallyWithT(t, func(ttt *assert.CollectT) { got, err := instance.Client.GroupV2.GetGroup(tt.args.ctx, tt.args.req) if tt.wantErrCode != codes.OK { - require.Error(t, err) - assert.Equal(t, tt.wantErrCode, status.Code(err)) - assert.Equal(t, tt.wantErrMsg, status.Convert(err).Message()) + require.Error(ttt, err) + assert.Equal(ttt, tt.wantErrCode, status.Code(err)) + assert.Equal(ttt, tt.wantErrMsg, status.Convert(err).Message()) return } - require.NoError(t, err) + require.NoError(ttt, err) assert.EqualExportedValues(t, tt.want.Group, got.Group, "want: %v, got: %v", tt.want.Group, got.Group) }, retryDuration, tick, "timeout waiting for expected result") }) @@ -350,19 +350,19 @@ func TestServer_ListGroups(t *testing.T) { require.EventuallyWithT(t, func(ttt *assert.CollectT) { got, err := instance.Client.GroupV2.ListGroups(tt.args.ctx, tt.args.req) if tt.wantErrCode != codes.OK { - require.Error(t, err) - assert.Equal(t, tt.wantErrCode, status.Code(err)) - assert.Equal(t, tt.wantErrMsg, status.Convert(err).Message()) + require.Error(ttt, err) + assert.Equal(ttt, tt.wantErrCode, status.Code(err)) + assert.Equal(ttt, tt.wantErrMsg, status.Convert(err).Message()) return } - require.NoError(t, err) - if assert.Len(t, got.Groups, len(tt.want.Groups)) { + require.NoError(ttt, err) + if assert.Len(ttt, got.Groups, len(tt.want.Groups)) { for i := range got.Groups { - assert.EqualExportedValues(t, tt.want.Groups[i], got.Groups[i], "want: %v, got: %v", tt.want.Groups[i], got.Groups[i]) + assert.EqualExportedValues(ttt, tt.want.Groups[i], got.Groups[i], "want: %v, got: %v", tt.want.Groups[i], got.Groups[i]) } } - assert.Equal(t, tt.want.Pagination.AppliedLimit, got.Pagination.AppliedLimit) - assert.Equal(t, tt.want.Pagination.TotalResult, got.Pagination.TotalResult) + assert.Equal(ttt, tt.want.Pagination.AppliedLimit, got.Pagination.AppliedLimit) + assert.Equal(ttt, tt.want.Pagination.TotalResult, got.Pagination.TotalResult) }, retryDuration, tick, "timeout waiting for expected result") }) } diff --git a/internal/api/grpc/system/integration_test/limits_block_test.go b/internal/api/grpc/system/integration_test/limits_block_test.go index d3b9fffbd3a..263a8e1a0f0 100644 --- a/internal/api/grpc/system/integration_test/limits_block_test.go +++ b/internal/api/grpc/system/integration_test/limits_block_test.go @@ -46,7 +46,7 @@ func TestServer_Limits_Block(t *testing.T) { req, err := http.NewRequestWithContext( CTX, "POST", - fmt.Sprintf("http://%s/admin/v1/idps/github", net.JoinHostPort(isoInstance.Domain, "8080")), + fmt.Sprintf("http://%s/admin/v1/idps/github", net.JoinHostPort(isoInstance.Domain, "8082")), strings.NewReader(`{ "name": "`+randomHttpIdpName+`", "clientId": "client-id", @@ -68,7 +68,7 @@ func TestServer_Limits_Block(t *testing.T) { req, err := http.NewRequestWithContext( CTX, "GET", - fmt.Sprintf("http://%s/.well-known/openid-configuration", net.JoinHostPort(isoInstance.Domain, "8080")), + fmt.Sprintf("http://%s/.well-known/openid-configuration", net.JoinHostPort(isoInstance.Domain, "8082")), nil, ) return req, err, func(ttt assert.TestingT, response *http.Response, expectBlocked bool) { @@ -82,7 +82,7 @@ func TestServer_Limits_Block(t *testing.T) { req, err := http.NewRequestWithContext( CTX, "GET", - fmt.Sprintf("http://%s/ui/login/login/externalidp/callback", net.JoinHostPort(isoInstance.Domain, "8080")), + fmt.Sprintf("http://%s/ui/login/login/externalidp/callback", net.JoinHostPort(isoInstance.Domain, "8082")), nil, ) return req, err, func(ttt assert.TestingT, response *http.Response, expectBlocked bool) { @@ -101,7 +101,7 @@ func TestServer_Limits_Block(t *testing.T) { req, err := http.NewRequestWithContext( CTX, "GET", - fmt.Sprintf("http://%s/ui/console/", net.JoinHostPort(isoInstance.Domain, "8080")), + fmt.Sprintf("http://%s/ui/console/", net.JoinHostPort(isoInstance.Domain, "8082")), nil, ) return req, err, func(ttt assert.TestingT, response *http.Response, expectBlocked bool) { @@ -117,7 +117,7 @@ func TestServer_Limits_Block(t *testing.T) { req, err := http.NewRequestWithContext( CTX, "GET", - fmt.Sprintf("http://%s/ui/console/assets/environment.json", net.JoinHostPort(isoInstance.Domain, "8080")), + fmt.Sprintf("http://%s/ui/console/assets/environment.json", net.JoinHostPort(isoInstance.Domain, "8082")), nil, ) return req, err, func(ttt assert.TestingT, response *http.Response, expectBlocked bool) { @@ -205,7 +205,7 @@ func publicAPIBlockingTest(domain string) *test { return &test{ name: "public API", testGrpc: func(tt assert.TestingT, expectBlocked bool) { - conn, err := grpc.DialContext(CTX, net.JoinHostPort(domain, "8080"), + conn, err := grpc.DialContext(CTX, net.JoinHostPort(domain, "8082"), grpc.WithBlock(), grpc.WithTransportCredentials(insecure.NewCredentials()), ) @@ -217,7 +217,7 @@ func publicAPIBlockingTest(domain string) *test { req, err := http.NewRequestWithContext( CTX, "GET", - fmt.Sprintf("http://%s/admin/v1/healthz", net.JoinHostPort(domain, "8080")), + fmt.Sprintf("http://%s/admin/v1/healthz", net.JoinHostPort(domain, "8082")), nil, ) return req, err, func(ttt assert.TestingT, response *http.Response, expectBlocked bool) { diff --git a/internal/api/grpc/user/v2/integration_test/user_test.go b/internal/api/grpc/user/v2/integration_test/user_test.go index cb7ca8d9b6e..4c6d757f601 100644 --- a/internal/api/grpc/user/v2/integration_test/user_test.go +++ b/internal/api/grpc/user/v2/integration_test/user_test.go @@ -1987,7 +1987,7 @@ func TestServer_StartIdentityProviderIntent(t *testing.T) { parametersEqual: map[string]string{ "client_id": "clientID", "prompt": "select_account", - "redirect_uri": "http://" + Instance.Domain + ":8080/idps/callback", + "redirect_uri": "http://" + Instance.Domain + ":8082/idps/callback", "response_type": "code", "scope": "openid profile email", }, @@ -2018,7 +2018,7 @@ func TestServer_StartIdentityProviderIntent(t *testing.T) { parametersEqual: map[string]string{ "client_id": "clientID", "prompt": "select_account", - "redirect_uri": "http://" + Instance.Domain + ":8080/idps/callback", + "redirect_uri": "http://" + Instance.Domain + ":8082/idps/callback", "response_type": "code", "scope": "openid profile email", }, @@ -2049,7 +2049,7 @@ func TestServer_StartIdentityProviderIntent(t *testing.T) { parametersEqual: map[string]string{ "client_id": "clientID", "prompt": "select_account", - "redirect_uri": "http://" + Instance.Domain + ":8080/idps/callback", + "redirect_uri": "http://" + Instance.Domain + ":8082/idps/callback", "response_type": "code", "scope": "openid profile email", }, @@ -2080,7 +2080,7 @@ func TestServer_StartIdentityProviderIntent(t *testing.T) { parametersEqual: map[string]string{ "client_id": "clientID", "prompt": "select_account", - "redirect_uri": "http://" + Instance.Domain + ":8080/idps/callback", + "redirect_uri": "http://" + Instance.Domain + ":8082/idps/callback", "response_type": "code", "scope": "openid profile email", }, diff --git a/internal/api/grpc/user/v2beta/integration_test/user_test.go b/internal/api/grpc/user/v2beta/integration_test/user_test.go index 3b90759e984..bb2111c74f9 100644 --- a/internal/api/grpc/user/v2beta/integration_test/user_test.go +++ b/internal/api/grpc/user/v2beta/integration_test/user_test.go @@ -1994,7 +1994,7 @@ func TestServer_StartIdentityProviderIntent(t *testing.T) { parametersEqual: map[string]string{ "client_id": "clientID", "prompt": "select_account", - "redirect_uri": "http://" + Instance.Domain + ":8080/idps/callback", + "redirect_uri": "http://" + Instance.Domain + ":8082/idps/callback", "response_type": "code", "scope": "openid profile email", }, @@ -2025,7 +2025,7 @@ func TestServer_StartIdentityProviderIntent(t *testing.T) { parametersEqual: map[string]string{ "client_id": "clientID", "prompt": "select_account", - "redirect_uri": "http://" + Instance.Domain + ":8080/idps/callback", + "redirect_uri": "http://" + Instance.Domain + ":8082/idps/callback", "response_type": "code", "scope": "openid profile email", }, @@ -2056,7 +2056,7 @@ func TestServer_StartIdentityProviderIntent(t *testing.T) { parametersEqual: map[string]string{ "client_id": "clientID", "prompt": "select_account", - "redirect_uri": "http://" + Instance.Domain + ":8080/idps/callback", + "redirect_uri": "http://" + Instance.Domain + ":8082/idps/callback", "response_type": "code", "scope": "openid profile email", }, @@ -2087,7 +2087,7 @@ func TestServer_StartIdentityProviderIntent(t *testing.T) { parametersEqual: map[string]string{ "client_id": "clientID", "prompt": "select_account", - "redirect_uri": "http://" + Instance.Domain + ":8080/idps/callback", + "redirect_uri": "http://" + Instance.Domain + ":8082/idps/callback", "response_type": "code", "scope": "openid profile email", }, diff --git a/internal/api/scim/integration_test/testdata/service_provider_config_expected.json b/internal/api/scim/integration_test/testdata/service_provider_config_expected.json index 8f8d0f3a2b4..2d1521ca3fc 100644 --- a/internal/api/scim/integration_test/testdata/service_provider_config_expected.json +++ b/internal/api/scim/integration_test/testdata/service_provider_config_expected.json @@ -4,7 +4,7 @@ ], "meta": { "resourceType": "ServiceProviderConfig", - "location": "http://{domain}:8080/scim/v2/{orgId}/ServiceProviderConfig" + "location": "http://{domain}:8082/scim/v2/{orgId}/ServiceProviderConfig" }, "documentationUri": "https://zitadel.com/docs/guides/manage/user/scim2", "patch": { diff --git a/internal/api/scim/integration_test/testdata/service_provider_config_expected_resource_type_user.json b/internal/api/scim/integration_test/testdata/service_provider_config_expected_resource_type_user.json index df910ca9e97..1a4acd2323f 100644 --- a/internal/api/scim/integration_test/testdata/service_provider_config_expected_resource_type_user.json +++ b/internal/api/scim/integration_test/testdata/service_provider_config_expected_resource_type_user.json @@ -4,7 +4,7 @@ ], "meta": { "resourceType": "User", - "location": "http://{domain}:8080/scim/v2/{orgId}/ResourceTypes/User" + "location": "http://{domain}:8082/scim/v2/{orgId}/ResourceTypes/User" }, "id": "User", "name": "User", diff --git a/internal/api/scim/integration_test/testdata/service_provider_config_expected_resource_types.json b/internal/api/scim/integration_test/testdata/service_provider_config_expected_resource_types.json index ae79a934840..b738169c1b1 100644 --- a/internal/api/scim/integration_test/testdata/service_provider_config_expected_resource_types.json +++ b/internal/api/scim/integration_test/testdata/service_provider_config_expected_resource_types.json @@ -12,7 +12,7 @@ ], "meta": { "resourceType": "User", - "location": "http://{domain}:8080/scim/v2/{orgId}/ResourceTypes/User" + "location": "http://{domain}:8082/scim/v2/{orgId}/ResourceTypes/User" }, "id": "User", "name": "User", diff --git a/internal/api/scim/integration_test/testdata/service_provider_config_expected_schemas.json b/internal/api/scim/integration_test/testdata/service_provider_config_expected_schemas.json index 2751c85a79d..1901f675169 100644 --- a/internal/api/scim/integration_test/testdata/service_provider_config_expected_schemas.json +++ b/internal/api/scim/integration_test/testdata/service_provider_config_expected_schemas.json @@ -12,7 +12,7 @@ ], "meta": { "resourceType": "Schema", - "location": "http://{domain}:8080/scim/v2/{orgId}/Schemas/urn:ietf:params:scim:schemas:core:2.0:User" + "location": "http://{domain}:8082/scim/v2/{orgId}/Schemas/urn:ietf:params:scim:schemas:core:2.0:User" }, "id": "urn:ietf:params:scim:schemas:core:2.0:User", "name": "User", diff --git a/internal/api/scim/integration_test/testdata/service_provider_config_expected_user_schema.json b/internal/api/scim/integration_test/testdata/service_provider_config_expected_user_schema.json index 35d0e356b36..993966b79d3 100644 --- a/internal/api/scim/integration_test/testdata/service_provider_config_expected_user_schema.json +++ b/internal/api/scim/integration_test/testdata/service_provider_config_expected_user_schema.json @@ -4,7 +4,7 @@ ], "meta": { "resourceType": "Schema", - "location": "http://{domain}:8080/scim/v2/{orgId}/Schemas/urn:ietf:params:scim:schemas:core:2.0:User" + "location": "http://{domain}:8082/scim/v2/{orgId}/Schemas/urn:ietf:params:scim:schemas:core:2.0:User" }, "id": "urn:ietf:params:scim:schemas:core:2.0:User", "name": "User", diff --git a/internal/api/ui/login/static/resources/generate.go b/internal/api/ui/login/static/resources/generate.go index df529f451c6..cc83751dc23 100644 --- a/internal/api/ui/login/static/resources/generate.go +++ b/internal/api/ui/login/static/resources/generate.go @@ -1,6 +1,6 @@ package resources -// TODO whitelabeling go:generate sass themes/scss/zitadel-alternative.scss themes/zitadel/css/zitadel.css +// TODO whitelabeling go:generate pnpm sass themes/scss/zitadel-alternative.scss themes/zitadel/css/zitadel.css // scss -//go:generate sass themes/scss/zitadel.scss themes/zitadel/css/zitadel.css +//go:generate pnpm sass internal/api/ui/login/static/resources/themes/scss/zitadel.scss internal/api/ui/login/static/resources/themes/zitadel/css/zitadel.css diff --git a/internal/integration/config/client.yaml b/internal/integration/config/client.yaml index 43e417d4d6c..f157a3e7f9c 100644 --- a/internal/integration/config/client.yaml +++ b/internal/integration/config/client.yaml @@ -3,7 +3,7 @@ Log: Formatter: Format: text Hostname: localhost -Port: 8080 +Port: 8082 Secure: false LoginURLV2: "/login?authRequest=" LogoutURLV2: "/logout?post_logout_redirect=" diff --git a/internal/integration/config/docker-compose.yaml b/internal/integration/config/docker-compose.yaml deleted file mode 100644 index 3e8cff5e1bd..00000000000 --- a/internal/integration/config/docker-compose.yaml +++ /dev/null @@ -1,32 +0,0 @@ -version: '3.8' - -services: - postgres: - restart: 'always' - image: 'postgres:17' - environment: - - POSTGRES_USER=zitadel - - PGUSER=zitadel - - POSTGRES_DB=zitadel - - POSTGRES_HOST_AUTH_METHOD=trust - command: postgres -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all -c shared_buffers=1GB -c work_mem=16MB -c effective_io_concurrency=100 -c wal_level=minimal -c archive_mode=off -c max_wal_senders=0 - healthcheck: - test: ["CMD-SHELL", "pg_isready"] - interval: '10s' - timeout: '30s' - retries: 5 - start_period: '20s' - ports: - - 5432:5432 - volumes: - - 'zitadel_integration_db:/var/lib/postgresql/data' - - cache: - restart: 'always' - image: 'redis:latest' - ports: - - 6379:6379 - -volumes: - zitadel_integration_db: - driver: local diff --git a/internal/integration/config/postgres.yaml b/internal/integration/config/postgres.yaml deleted file mode 100644 index 904f973d565..00000000000 --- a/internal/integration/config/postgres.yaml +++ /dev/null @@ -1,14 +0,0 @@ -Database: - postgres: - MaxOpenConns: 20 - MaxIdleConns: 20 - MaxConnLifetime: 1h - MaxConnIdleTime: 5m - User: - Password: zitadel - SSL: - Mode: disable - Admin: - Username: zitadel - SSL: - Mode: disable diff --git a/internal/integration/config/steps.yaml b/internal/integration/config/steps.yaml deleted file mode 100644 index fea8441e2b6..00000000000 --- a/internal/integration/config/steps.yaml +++ /dev/null @@ -1,13 +0,0 @@ -FirstInstance: - Skip: false - PatPath: tmp/admin-pat.txt - InstanceName: ZITADEL - DefaultLanguage: en - Org: - Name: ZITADEL - Machine: - Machine: - Username: boss - Name: boss - Pat: - ExpirationDate: 2099-01-01T00:00:00Z diff --git a/internal/integration/instance.go b/internal/integration/instance.go index 704c8c50501..aba7735868f 100644 --- a/internal/integration/instance.go +++ b/internal/integration/instance.go @@ -78,7 +78,7 @@ func (m UserMap) Get(typ UserType) *User { } // Host returns the primary host of zitadel, on which the first instance is served. -// http://localhost:8080 by default +// http://localhost:8082 by default func (c *Config) Host() string { return fmt.Sprintf("%s:%d", c.Hostname, c.Port) } diff --git a/nx.json b/nx.json new file mode 100644 index 00000000000..fe5ceeea5a4 --- /dev/null +++ b/nx.json @@ -0,0 +1,54 @@ +{ + "$schema": "./node_modules/nx/schemas/nx-schema.json", + "nxCloudId": "688a9021d48dce0efe0f119f", + "workspaceLayout": { + "libsDir": "packages" + }, + "namedInputs": { + "default": [ + "{projectRoot}/**/*" + ] + }, + "targetDefaults": { + "generate": { + "cache": true, + "inputs": [ + "default" + ] + }, + "build": { + "cache": true, + "inputs": [ + "default" + ], + "dependsOn": [ + "^build", + "generate" + ] + }, + "lint": { + "inputs": [ + "default" + ], + "cache": true + }, + "test": { + "inputs": [ + "default" + ], + "cache": true + }, + "test-unit": { + "inputs": [ + "default" + ], + "cache": true + }, + "test-integration": { + "inputs": [ + "default" + ], + "cache": true + } + } +} diff --git a/package.json b/package.json index 7062f002dcc..0c0ef7aa440 100644 --- a/package.json +++ b/package.json @@ -1,19 +1,15 @@ { "packageManager": "pnpm@10.13.1", "private": true, - "name": "zitadel-monorepo", + "name": "@zitadel/zitadel", "scripts": { - "generate": "turbo run generate", "changeset": "changeset", - "devcontainer:lint-unit": "FAIL_COMMANDS_ON_ERRORS=true devcontainer up --prebuild --config .devcontainer/turbo-lint-unit/devcontainer.json --workspace-folder .", - "devcontainer:integration:login": "FAIL_COMMANDS_ON_ERRORS=true devcontainer up --prebuild --config .devcontainer/login-integration/devcontainer.json --workspace-folder .", - "clean": "turbo run clean", - "clean:all": "pnpm run clean && rm -rf .turbo node_modules" + "clean:all": "pnpm run clean && rm -rf .nx node_modules" }, "devDependencies": { "@changesets/cli": "^2.29.5", - "@devcontainers/cli": "^0.80.0", + "nx": "21.6.1", "sass": "^1.64.1", - "turbo": "2.5.5" + "wait-on": "^9.0.1" } } \ No newline at end of file diff --git a/packages/zitadel-client/.gitignore b/packages/zitadel-client/.gitignore index 8ff894e88c9..f4f847ce78c 100644 --- a/packages/zitadel-client/.gitignore +++ b/packages/zitadel-client/.gitignore @@ -1,4 +1,2 @@ src/proto -node_modules dist -.turbo diff --git a/packages/zitadel-client/package.json b/packages/zitadel-client/package.json index 689db9255fe..5007d6a3147 100644 --- a/packages/zitadel-client/package.json +++ b/packages/zitadel-client/package.json @@ -1,7 +1,6 @@ { "packageManager": "pnpm@10.13.1", "name": "@zitadel/client", - "version": "1.3.1", "license": "MIT", "publishConfig": { "access": "public" @@ -67,11 +66,10 @@ "sideEffects": false, "scripts": { "build": "tsup", - "lint": "pnpm run '/^lint:check:.*$/'", - "lint:check:eslint": "eslint 'src/**/*.ts*'", - "lint:check:knip": "knip", - "test:unit": "vitest --run", - "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist" + "lint-check-eslint": "eslint 'src/**/*.ts*'", + "lint-check-knip": "knip", + "test-unit": "vitest --run", + "clean": "rm -rf node_modules dist" }, "dependencies": { "@bufbuild/protobuf": "^2.2.2", diff --git a/packages/zitadel-client/project.json b/packages/zitadel-client/project.json new file mode 100644 index 00000000000..bd044ec906c --- /dev/null +++ b/packages/zitadel-client/project.json @@ -0,0 +1,43 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "namedInputs": { + "sources": ["{projectRoot}/src/**/*"] + }, + "targets": { + "test": { + "description": "Tests the TypeScript client library. It is an alias for test-unit.", + "dependsOn": [ + "test-unit" + ] + }, + "lint": { + "description": "Runs all linters", + "dependsOn": [ + "lint-*" + ] + }, + "lint-check-eslint": { + "description": "Checks code formatting with ESLint", + "inputs": [ + "default" + ], + "cache": true + }, + "lint-check-knip": { + "description": "Checks for unused dependencies with knip", + "inputs": [ + "default" + ], + "cache": true + }, + "build": { + "description": "Builds the TypeScript client library", + "inputs": [ + "default", + "{workspaceRoot}/pnpm-lock.yaml" + ], + "outputs": ["{projectRoot}/dist"], + "dependsOn": ["^generate"] + } + } +} diff --git a/packages/zitadel-client/turbo.json b/packages/zitadel-client/turbo.json deleted file mode 100644 index 9085c5194ea..00000000000 --- a/packages/zitadel-client/turbo.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": ["//"], - "tasks": { - "build": { - "outputs": ["dist/**"], - "dependsOn": ["@zitadel/proto#generate"] - } - } -} diff --git a/packages/zitadel-proto/.npmignore b/packages/zitadel-proto/.npmignore index f422a6b429e..6b9962fcc71 100644 --- a/packages/zitadel-proto/.npmignore +++ b/packages/zitadel-proto/.npmignore @@ -1,6 +1,6 @@ node_modules -.turbo +.nx *.log .DS_Store buf.gen.yaml -turbo.json +nx.json diff --git a/packages/zitadel-proto/package.json b/packages/zitadel-proto/package.json index 3742c1210c2..25b5720d875 100644 --- a/packages/zitadel-proto/package.json +++ b/packages/zitadel-proto/package.json @@ -1,7 +1,6 @@ { "packageManager": "pnpm@10.13.1", "name": "@zitadel/proto", - "version": "1.3.1", "license": "MIT", "publishConfig": { "access": "public" @@ -79,7 +78,7 @@ "sideEffects": false, "scripts": { "generate": "buf generate ../../proto", - "clean": "rm -rf zitadel .turbo node_modules google protoc-gen-openapiv2 validate cjs types es" + "clean": "rm -rf zitadel node_modules google protoc-gen-openapiv2 validate cjs types es" }, "dependencies": { "@bufbuild/protobuf": "^2.6.1" diff --git a/packages/zitadel-proto/project.json b/packages/zitadel-proto/project.json new file mode 100644 index 00000000000..15708122035 --- /dev/null +++ b/packages/zitadel-proto/project.json @@ -0,0 +1,17 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "targets": { + "generate": { + "inputs": [ + "default", + "{workspaceRoot}/pnpm-lock.yaml", + "{workspaceRoot}/proto/**/*" + ], + "outputs": [ + "{projectRoot}/cjs", + "{projectRoot}/es", + "{projectRoot}/types" + ] + } + } +} diff --git a/packages/zitadel-proto/turbo.json b/packages/zitadel-proto/turbo.json deleted file mode 100644 index 76e7fc47ad9..00000000000 --- a/packages/zitadel-proto/turbo.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": ["//"], - "tasks": { - "generate": { - "outputs": [ - "zitadel/**", - "google/**", - "validate/**", - "protoc-gen-openapiv2/**", - "cjs/**", - "es/**", - "types/**" - ] - } - } -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a555d0c22fb..36ab46dc1d1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,8 +6,6 @@ settings: overrides: '@typescript-eslint/parser': ^8.35.1 - '@zitadel/client': workspace:* - '@zitadel/proto': workspace:* importers: @@ -15,16 +13,16 @@ importers: devDependencies: '@changesets/cli': specifier: ^2.29.5 - version: 2.29.6(@types/node@24.3.0) - '@devcontainers/cli': - specifier: ^0.80.0 - version: 0.80.0 + version: 2.29.7(@types/node@24.3.1) + nx: + specifier: 21.6.1 + version: 21.6.1(@swc/core@1.13.5(@swc/helpers@0.5.17)) sass: specifier: ^1.64.1 - version: 1.90.0 - turbo: - specifier: 2.5.5 - version: 2.5.5 + version: 1.92.1 + wait-on: + specifier: ^9.0.1 + version: 9.0.1 apps/login: dependencies: @@ -40,12 +38,6 @@ importers: '@tailwindcss/forms': specifier: 0.5.7 version: 0.5.7(tailwindcss@3.4.14) - '@zitadel/client': - specifier: workspace:* - version: link:../../packages/zitadel-client - '@zitadel/proto': - specifier: workspace:* - version: link:../../packages/zitadel-proto clsx: specifier: 1.2.1 version: 1.2.1 @@ -63,13 +55,13 @@ importers: version: 2.30.1 next: specifier: 15.4.0-canary.86 - version: 15.4.0-canary.86(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.90.0) + version: 15.4.0-canary.86(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.92.1) next-intl: specifier: ^3.25.1 - version: 3.26.5(next@15.4.0-canary.86(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.90.0))(react@19.1.0) + version: 3.26.5(next@15.4.0-canary.86(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.92.1))(react@19.1.0) next-themes: specifier: ^0.2.1 - version: 0.2.1(next@15.4.0-canary.86(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.90.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 0.2.1(next@15.4.0-canary.86(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.92.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) nice-grpc: specifier: 2.0.1 version: 2.0.1 @@ -94,10 +86,10 @@ importers: devDependencies: '@babel/eslint-parser': specifier: ^7.23.0 - version: 7.28.0(@babel/core@7.28.3)(eslint@8.57.1) + version: 7.28.4(@babel/core@7.28.4)(eslint@8.57.1) '@bufbuild/buf': specifier: ^1.53.0 - version: 1.56.0 + version: 1.55.1 '@faker-js/faker': specifier: ^9.7.0 version: 9.9.0 @@ -124,7 +116,7 @@ importers: version: 2.1.0 '@types/node': specifier: ^22.14.1 - version: 22.17.2 + version: 22.18.1 '@types/react': specifier: 19.1.2 version: 19.1.2 @@ -139,30 +131,36 @@ importers: version: 10.0.0 '@typescript-eslint/eslint-plugin': specifier: ^7.0.0 - version: 7.18.0(@typescript-eslint/parser@8.40.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) + version: 7.18.0(@typescript-eslint/parser@8.43.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) '@typescript-eslint/parser': specifier: ^8.35.1 - version: 8.40.0(eslint@8.57.1)(typescript@5.9.2) + version: 8.43.0(eslint@8.57.1)(typescript@5.9.2) '@vercel/git-hooks': specifier: 1.0.0 version: 1.0.0 '@vitejs/plugin-react': specifier: ^4.4.1 - version: 4.7.0(vite@5.4.19(@types/node@22.17.2)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)) + version: 4.7.0(vite@5.4.20(@types/node@22.18.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0)) + '@zitadel/client': + specifier: workspace:* + version: link:../../packages/zitadel-client + '@zitadel/proto': + specifier: workspace:* + version: link:../../packages/zitadel-proto autoprefixer: specifier: 10.4.21 version: 10.4.21(postcss@8.5.3) concurrently: specifier: ^9.1.2 - version: 9.2.0 + version: 9.2.1 cypress: - specifier: ^14.5.2 + specifier: ^14.5.4 version: 14.5.4 dotenv-cli: specifier: ^8.0.0 version: 8.0.0 env-cmd: - specifier: ^10.0.0 + specifier: ^10.1.0 version: 10.1.0 eslint: specifier: ^8.57.0 @@ -205,10 +203,10 @@ importers: version: 0.6.11(prettier-plugin-organize-imports@3.2.4(prettier@3.6.2)(typescript@5.9.2))(prettier@3.6.2) sass: specifier: ^1.87.0 - version: 1.90.0 + version: 1.92.1 start-server-and-test: specifier: ^2.0.11 - version: 2.0.13 + version: 2.1.0 tailwindcss: specifier: 3.4.14 version: 3.4.14 @@ -220,52 +218,49 @@ importers: version: 5.9.2 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.9.2)(vite@5.4.19(@types/node@22.17.2)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)) + version: 5.1.4(typescript@5.9.2)(vite@5.4.20(@types/node@22.18.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0)) vitest: specifier: ^2.0.0 - version: 2.1.9(@types/node@22.17.2)(jsdom@26.1.0)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1) - wait-on: - specifier: ^7.2.0 - version: 7.2.0 + version: 2.1.9(@types/node@22.18.1)(jsdom@26.1.0)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0) console: dependencies: '@angular/animations': specifier: ^20.3.1 - version: 20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)) + version: 20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/cdk': specifier: ^20.2.4 - version: 20.2.4(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + version: 20.2.7(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/common': specifier: ^20.3.1 - version: 20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + version: 20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': specifier: ^20.3.1 - version: 20.3.1 + version: 20.3.3 '@angular/core': specifier: ^20.3.1 - version: 20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1) + version: 20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/forms': specifier: ^20.3.1 - version: 20.3.1(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.1(@angular/animations@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + version: 20.3.3(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.3(@angular/animations@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/material': specifier: ^20.2.4 - version: 20.2.4(e997458c0c3ddd4908b1b075c4607fbc) + version: 20.2.7(9c11a8eb564a221c173ca8f1e04d1698) '@angular/material-moment-adapter': specifier: ^20.2.4 - version: 20.2.4(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/material@20.2.4(e997458c0c3ddd4908b1b075c4607fbc))(moment@2.30.1) + version: 20.2.7(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/material@20.2.7(9c11a8eb564a221c173ca8f1e04d1698))(moment@2.30.1) '@angular/platform-browser': specifier: ^20.3.1 - version: 20.3.1(@angular/animations@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)) + version: 20.3.3(@angular/animations@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-browser-dynamic': specifier: ^20.3.1 - version: 20.3.1(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.3.1)(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.1(@angular/animations@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))) + version: 20.3.3(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.3.3)(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.3(@angular/animations@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))) '@angular/router': specifier: ^20.3.1 - version: 20.3.1(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.1(@angular/animations@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + version: 20.3.3(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.3(@angular/animations@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/service-worker': specifier: ^20.3.1 - version: 20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + version: 20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@bufbuild/protobuf': specifier: 2.6.3 version: 2.6.3 @@ -277,10 +272,10 @@ importers: version: 2.0.4(@bufbuild/protobuf@2.6.3)(@connectrpc/connect@2.0.4(@bufbuild/protobuf@2.6.3)) '@ctrl/ngx-codemirror': specifier: ^6.1.0 - version: 6.1.0(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@20.3.1(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.1(@angular/animations@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(codemirror@5.65.20) + version: 6.1.0(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@20.3.3(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.3(@angular/animations@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(codemirror@5.65.20) '@fortawesome/angular-fontawesome': specifier: ^3.0.0 - version: 3.0.0(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)) + version: 3.0.0(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)) '@fortawesome/fontawesome-svg-core': specifier: ^6.7.2 version: 6.7.2 @@ -289,31 +284,25 @@ importers: version: 6.7.2 '@netlify/build-info': specifier: ^10.0.7 - version: 10.0.7 + version: 10.0.8 '@ng-icons/core': specifier: ^32.1.0 - version: 32.1.0(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + version: 32.1.0(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@ng-icons/heroicons': specifier: ^32.1.0 version: 32.1.0 '@ngx-translate/core': specifier: ^17.0.0 - version: 17.0.0(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)) + version: 17.0.0(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)) '@tanstack/angular-query-experimental': specifier: ^5.85.6 - version: 5.85.6(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)) - '@zitadel/client': - specifier: workspace:* - version: link:../packages/zitadel-client - '@zitadel/proto': - specifier: workspace:* - version: link:../packages/zitadel-proto + version: 5.87.4(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)) angular-oauth2-oidc: specifier: ^20.0.2 - version: 20.0.2(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)) + version: 20.0.2(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)) angularx-qrcode: specifier: ^20.0.0 - version: 20.0.0(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)) + version: 20.0.0(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)) buffer: specifier: ^6.0.3 version: 6.0.3 @@ -337,7 +326,7 @@ importers: version: 7.14.0 libphonenumber-js: specifier: ^1.12.6 - version: 1.12.13 + version: 1.12.15 material-design-icons-iconfont: specifier: ^6.7.0 version: 6.7.0 @@ -346,13 +335,13 @@ importers: version: 2.30.1 ngx-color: specifier: ^9.0.0 - version: 9.0.0(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)) + version: 9.0.0(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)) opentype.js: specifier: ^1.3.4 version: 1.3.4 posthog-js: specifier: ^1.232.7 - version: 1.260.1 + version: 1.262.0 rxjs: specifier: ^7.8.2 version: 7.8.2 @@ -380,22 +369,22 @@ importers: version: 18.0.0(eslint@8.57.1)(typescript@5.9.2) '@angular-eslint/schematics': specifier: 19.8.1 - version: 19.8.1(@angular-eslint/template-parser@19.8.1(eslint@8.57.1)(typescript@5.9.2))(@typescript-eslint/types@8.40.0)(@typescript-eslint/utils@8.40.0(eslint@8.57.1)(typescript@5.9.2))(chokidar@4.0.3)(eslint@8.57.1)(typescript@5.9.2) + version: 19.8.1(@angular-eslint/template-parser@19.8.1(eslint@8.57.1)(typescript@5.9.2))(@typescript-eslint/types@8.43.0)(@typescript-eslint/utils@8.43.0(eslint@8.57.1)(typescript@5.9.2))(chokidar@4.0.3)(eslint@8.57.1)(typescript@5.9.2) '@angular-eslint/template-parser': specifier: 19.8.1 version: 19.8.1(eslint@8.57.1)(typescript@5.9.2) '@angular/build': specifier: ^20.3.2 - version: 20.3.2(@angular/compiler-cli@20.3.1(@angular/compiler@20.3.1)(typescript@5.9.2))(@angular/compiler@20.3.1)(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.1(@angular/animations@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/service-worker@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@types/node@22.17.2)(chokidar@4.0.3)(jiti@2.5.1)(karma@6.4.4)(less@4.4.0)(lightningcss@1.30.1)(postcss@8.5.6)(tailwindcss@3.4.14)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)(yaml@2.8.1) + version: 20.3.4(@angular/compiler-cli@20.3.3(@angular/compiler@20.3.3)(typescript@5.9.2))(@angular/compiler@20.3.3)(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.3(@angular/animations@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/service-worker@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@types/node@22.18.1)(chokidar@4.0.3)(jiti@2.5.1)(karma@6.4.4)(lightningcss@1.30.1)(postcss@8.5.6)(tailwindcss@3.4.14)(terser@5.44.0)(tslib@2.8.1)(typescript@5.9.2)(yaml@2.8.1) '@angular/cli': specifier: ^20.3.2 - version: 20.3.2(@types/node@22.17.2)(chokidar@4.0.3) + version: 20.3.4(@types/node@22.18.1)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^20.3.1 - version: 20.3.1(@angular/compiler@20.3.1)(typescript@5.9.2) + version: 20.3.3(@angular/compiler@20.3.3)(typescript@5.9.2) '@angular/language-service': specifier: ^20.3.1 - version: 20.3.1 + version: 20.3.3 '@bufbuild/buf': specifier: ~1.55.1 version: 1.55.1 @@ -416,7 +405,7 @@ importers: version: 9.0.10 '@types/node': specifier: ^22.5.5 - version: 22.17.2 + version: 22.18.1 '@types/opentype.js': specifier: ^1.3.8 version: 1.3.8 @@ -428,10 +417,16 @@ importers: version: 10.0.0 '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@8.40.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) + version: 5.62.0(@typescript-eslint/parser@8.43.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) '@typescript-eslint/parser': specifier: ^8.35.1 - version: 8.40.0(eslint@8.57.1)(typescript@5.9.2) + version: 8.43.0(eslint@8.57.1)(typescript@5.9.2) + '@zitadel/client': + specifier: workspace:* + version: link:../packages/zitadel-client + '@zitadel/proto': + specifier: workspace:* + version: link:../packages/zitadel-proto eslint: specifier: ^8.57.1 version: 8.57.1 @@ -473,22 +468,22 @@ importers: dependencies: '@bufbuild/buf': specifier: ^1.14.0 - version: 1.56.0 + version: 1.55.1 '@docusaurus/core': specifier: ^3.8.1 - version: 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + version: 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) '@docusaurus/faster': specifier: ^3.8.1 - version: 3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17) + version: 3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17) '@docusaurus/preset-classic': specifier: ^3.8.1 - version: 3.8.1(@algolia/client-search@5.35.0)(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(@types/react@19.1.2)(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2) + version: 3.8.1(@algolia/client-search@5.37.0)(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/react@19.1.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2) '@docusaurus/theme-mermaid': specifier: ^3.8.1 - version: 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + version: 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) '@docusaurus/theme-search-algolia': specifier: ^3.8.1 - version: 3.8.1(@algolia/client-search@5.35.0)(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(@types/react@19.1.2)(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2) + version: 3.8.1(@algolia/client-search@5.37.0)(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/react@19.1.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2) '@headlessui/react': specifier: ^1.7.4 version: 1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -497,10 +492,10 @@ importers: version: 2.1.3(react@18.3.1) '@inkeep/cxkit-docusaurus': specifier: ^0.5.89 - version: 0.5.96(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(zod@3.25.76) + version: 0.5.97(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(zod@3.25.76) '@signalwire/docusaurus-plugin-llms-txt': specifier: ^1.2.0 - version: 1.2.2(@docusaurus/core@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)) + version: 1.2.2(@docusaurus/core@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)) autoprefixer: specifier: ^10.4.13 version: 10.4.21(postcss@8.5.3) @@ -509,25 +504,25 @@ importers: version: 1.2.1 docusaurus-plugin-image-zoom: specifier: ^3.0.1 - version: 3.0.1(@docusaurus/theme-classic@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(@types/react@19.1.2)(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)) + version: 3.0.1(@docusaurus/theme-classic@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/react@19.1.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)) docusaurus-plugin-openapi-docs: specifier: 4.4.0 - version: 4.4.0(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@docusaurus/utils-validation@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@docusaurus/utils@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(encoding@0.1.13)(react@18.3.1) + version: 4.4.0(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@docusaurus/utils-validation@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@docusaurus/utils@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(encoding@0.1.13)(react@18.3.1) docusaurus-theme-github-codeblock: specifier: ^2.0.2 - version: 2.0.2(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.0.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) docusaurus-theme-openapi-docs: specifier: 4.4.0 - version: 4.4.0(0db1e8e79e0dfe0ffb8dc7fed1e08da7) + version: 4.4.0(54fb35cc8885270933e262a2955c84b9) mdx-mermaid: specifier: ^2.0.0 - version: 2.0.3(mermaid@11.10.0)(react@18.3.1)(typescript@5.9.2)(unist-util-visit@5.0.0) + version: 2.0.3(mermaid@11.11.0)(react@18.3.1)(typescript@5.9.2)(unist-util-visit@5.0.0) postcss: specifier: ^8.4.31 version: 8.5.3 raw-loader: specifier: ^4.0.2 - version: 4.0.2(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + version: 4.0.2(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) react: specifier: ^18.2.0 version: 18.3.1 @@ -546,50 +541,14 @@ importers: devDependencies: '@docusaurus/module-type-aliases': specifier: ^3.8.1 - version: 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/types': specifier: ^3.8.1 - version: 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tailwindcss: specifier: ^3.2.4 version: 3.4.14 - e2e: - devDependencies: - '@types/node': - specifier: ^22.3.0 - version: 22.17.2 - '@types/pg': - specifier: ^8.11.6 - version: 8.15.5 - cypress: - specifier: ^14.5.3 - version: 14.5.4 - cypress-wait-until: - specifier: ^3.0.2 - version: 3.0.2 - jsonwebtoken: - specifier: ^9.0.2 - version: 9.0.2 - mochawesome: - specifier: ^7.1.3 - version: 7.1.3(mocha@11.7.1) - pg: - specifier: ^8.12.0 - version: 8.16.3 - prettier: - specifier: ^3.3.3 - version: 3.6.2 - typescript: - specifier: ^5.5.4 - version: 5.9.2 - uuid: - specifier: ^10.0.0 - version: 10.0.0 - wait-on: - specifier: ^7.2.0 - version: 7.2.0 - packages/zitadel-client: dependencies: '@bufbuild/protobuf': @@ -600,7 +559,7 @@ importers: version: 2.0.4(@bufbuild/protobuf@2.6.3) '@connectrpc/connect-node': specifier: ^2.0.0 - version: 2.0.4(@bufbuild/protobuf@2.6.3)(@connectrpc/connect@2.0.4(@bufbuild/protobuf@2.6.3)) + version: 2.1.0(@bufbuild/protobuf@2.6.3)(@connectrpc/connect@2.0.4(@bufbuild/protobuf@2.6.3)) '@connectrpc/connect-web': specifier: ^2.0.0 version: 2.0.4(@bufbuild/protobuf@2.6.3)(@connectrpc/connect@2.0.4(@bufbuild/protobuf@2.6.3)) @@ -619,28 +578,28 @@ importers: version: 0.0.1(@bufbuild/buf@1.55.1) '@types/node': specifier: ^24.0.14 - version: 24.3.0 + version: 24.3.1 '@typescript-eslint/eslint-plugin': specifier: ^8.15.0 - version: 8.40.0(@typescript-eslint/parser@8.40.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) + version: 8.43.0(@typescript-eslint/parser@8.43.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) '@typescript-eslint/parser': specifier: ^8.35.1 - version: 8.40.0(eslint@8.57.1)(typescript@5.9.2) + version: 8.43.0(eslint@8.57.1)(typescript@5.9.2) eslint: specifier: ^8.57.0 version: 8.57.1 knip: specifier: ^5.61.3 - version: 5.63.0(@types/node@24.3.0)(typescript@5.9.2) + version: 5.63.1(@types/node@24.3.1)(typescript@5.9.2) tsup: specifier: ^8.4.0 - version: 8.5.0(@swc/core@1.13.4(@swc/helpers@0.5.17))(jiti@2.5.1)(postcss@8.5.6)(typescript@5.9.2)(yaml@2.8.1) + version: 8.5.0(@swc/core@1.13.5(@swc/helpers@0.5.17))(jiti@2.5.1)(postcss@8.5.6)(typescript@5.9.2)(yaml@2.8.1) typescript: specifier: ^5.8.3 version: 5.9.2 vitest: specifier: ^2.0.0 - version: 2.1.9(@types/node@24.3.0)(jsdom@26.1.0)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1) + version: 2.1.9(@types/node@24.3.1)(jsdom@26.1.0)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0) packages/zitadel-proto: dependencies: @@ -650,11 +609,38 @@ importers: devDependencies: '@bufbuild/buf': specifier: ^1.55.1 - version: 1.56.0 + version: 1.55.1 glob: specifier: ^11.0.0 version: 11.0.3 + tests/functional-ui: + devDependencies: + '@types/node': + specifier: ^22.3.0 + version: 22.18.1 + cypress: + specifier: ^14.5.3 + version: 14.5.4 + cypress-wait-until: + specifier: ^3.0.2 + version: 3.0.2 + jsonwebtoken: + specifier: ^9.0.2 + version: 9.0.2 + mochawesome: + specifier: ^7.1.3 + version: 7.1.3(mocha@11.7.2) + prettier: + specifier: ^3.3.3 + version: 3.6.2 + typescript: + specifier: ^5.5.4 + version: 5.9.2 + uuid: + specifier: ^10.0.0 + version: 10.0.0 + packages: '@adobe/css-tools@4.4.4': @@ -664,6 +650,10 @@ packages: resolution: {integrity: sha512-sEyWjw28a/9iluA37KLGu8vjxEIlb60uxznfTUmXImy7H5NvbpSO6yYgmgH5KiD7j+zTUUihiST0jEP12IoXow==} engines: {node: '>= 14.0.0'} + '@algolia/abtesting@1.3.0': + resolution: {integrity: sha512-KqPVLdVNfoJzX5BKNGM9bsW8saHeyax8kmPFXul5gejrSPN3qss7PgsFH5mMem7oR8tvjvNkia97ljEYPYCN8Q==} + engines: {node: '>= 14.0.0'} + '@algolia/autocomplete-core@1.17.9': resolution: {integrity: sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==} @@ -688,30 +678,58 @@ packages: resolution: {integrity: sha512-uUdHxbfHdoppDVflCHMxRlj49/IllPwwQ2cQ8DLC4LXr3kY96AHBpW0dMyi6ygkn2MtFCc6BxXCzr668ZRhLBQ==} engines: {node: '>= 14.0.0'} + '@algolia/client-abtesting@5.37.0': + resolution: {integrity: sha512-Dp2Zq+x9qQFnuiQhVe91EeaaPxWBhzwQ6QnznZQnH9C1/ei3dvtmAFfFeaTxM6FzfJXDLvVnaQagTYFTQz3R5g==} + engines: {node: '>= 14.0.0'} + '@algolia/client-analytics@5.35.0': resolution: {integrity: sha512-SunAgwa9CamLcRCPnPHx1V2uxdQwJGqb1crYrRWktWUdld0+B2KyakNEeVn5lln4VyeNtW17Ia7V7qBWyM/Skw==} engines: {node: '>= 14.0.0'} + '@algolia/client-analytics@5.37.0': + resolution: {integrity: sha512-wyXODDOluKogTuZxRII6mtqhAq4+qUR3zIUJEKTiHLe8HMZFxfUEI4NO2qSu04noXZHbv/sRVdQQqzKh12SZuQ==} + engines: {node: '>= 14.0.0'} + '@algolia/client-common@5.35.0': resolution: {integrity: sha512-ipE0IuvHu/bg7TjT2s+187kz/E3h5ssfTtjpg1LbWMgxlgiaZIgTTbyynM7NfpSJSKsgQvCQxWjGUO51WSCu7w==} engines: {node: '>= 14.0.0'} + '@algolia/client-common@5.37.0': + resolution: {integrity: sha512-GylIFlPvLy9OMgFG8JkonIagv3zF+Dx3H401Uo2KpmfMVBBJiGfAb9oYfXtplpRMZnZPxF5FnkWaI/NpVJMC+g==} + engines: {node: '>= 14.0.0'} + '@algolia/client-insights@5.35.0': resolution: {integrity: sha512-UNbCXcBpqtzUucxExwTSfAe8gknAJ485NfPN6o1ziHm6nnxx97piIbcBQ3edw823Tej2Wxu1C0xBY06KgeZ7gA==} engines: {node: '>= 14.0.0'} + '@algolia/client-insights@5.37.0': + resolution: {integrity: sha512-T63afO2O69XHKw2+F7mfRoIbmXWGzgpZxgOFAdP3fR4laid7pWBt20P4eJ+Zn23wXS5kC9P2K7Bo3+rVjqnYiw==} + engines: {node: '>= 14.0.0'} + '@algolia/client-personalization@5.35.0': resolution: {integrity: sha512-/KWjttZ6UCStt4QnWoDAJ12cKlQ+fkpMtyPmBgSS2WThJQdSV/4UWcqCUqGH7YLbwlj3JjNirCu3Y7uRTClxvA==} engines: {node: '>= 14.0.0'} + '@algolia/client-personalization@5.37.0': + resolution: {integrity: sha512-1zOIXM98O9zD8bYDCJiUJRC/qNUydGHK/zRK+WbLXrW1SqLFRXECsKZa5KoG166+o5q5upk96qguOtE8FTXDWQ==} + engines: {node: '>= 14.0.0'} + '@algolia/client-query-suggestions@5.35.0': resolution: {integrity: sha512-8oCuJCFf/71IYyvQQC+iu4kgViTODbXDk3m7yMctEncRSRV+u2RtDVlpGGfPlJQOrAY7OONwJlSHkmbbm2Kp/w==} engines: {node: '>= 14.0.0'} + '@algolia/client-query-suggestions@5.37.0': + resolution: {integrity: sha512-31Nr2xOLBCYVal+OMZn1rp1H4lPs1914Tfr3a34wU/nsWJ+TB3vWjfkUUuuYhWoWBEArwuRzt3YNLn0F/KRVkg==} + engines: {node: '>= 14.0.0'} + '@algolia/client-search@5.35.0': resolution: {integrity: sha512-FfmdHTrXhIduWyyuko1YTcGLuicVbhUyRjO3HbXE4aP655yKZgdTIfMhZ/V5VY9bHuxv/fGEh3Od1Lvv2ODNTg==} engines: {node: '>= 14.0.0'} + '@algolia/client-search@5.37.0': + resolution: {integrity: sha512-DAFVUvEg+u7jUs6BZiVz9zdaUebYULPiQ4LM2R4n8Nujzyj7BZzGr2DCd85ip4p/cx7nAZWKM8pLcGtkTRTdsg==} + engines: {node: '>= 14.0.0'} + '@algolia/events@4.0.1': resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} @@ -719,26 +737,50 @@ packages: resolution: {integrity: sha512-gPzACem9IL1Co8mM1LKMhzn1aSJmp+Vp434An4C0OBY4uEJRcqsLN3uLBlY+bYvFg8C8ImwM9YRiKczJXRk0XA==} engines: {node: '>= 14.0.0'} + '@algolia/ingestion@1.37.0': + resolution: {integrity: sha512-pkCepBRRdcdd7dTLbFddnu886NyyxmhgqiRcHHaDunvX03Ij4WzvouWrQq7B7iYBjkMQrLS8wQqSP0REfA4W8g==} + engines: {node: '>= 14.0.0'} + '@algolia/monitoring@1.35.0': resolution: {integrity: sha512-w9MGFLB6ashI8BGcQoVt7iLgDIJNCn4OIu0Q0giE3M2ItNrssvb8C0xuwJQyTy1OFZnemG0EB1OvXhIHOvQwWw==} engines: {node: '>= 14.0.0'} + '@algolia/monitoring@1.37.0': + resolution: {integrity: sha512-fNw7pVdyZAAQQCJf1cc/ih4fwrRdQSgKwgor4gchsI/Q/ss9inmC6bl/69jvoRSzgZS9BX4elwHKdo0EfTli3w==} + engines: {node: '>= 14.0.0'} + '@algolia/recommend@5.35.0': resolution: {integrity: sha512-AhrVgaaXAb8Ue0u2nuRWwugt0dL5UmRgS9LXe0Hhz493a8KFeZVUE56RGIV3hAa6tHzmAV7eIoqcWTQvxzlJeQ==} engines: {node: '>= 14.0.0'} + '@algolia/recommend@5.37.0': + resolution: {integrity: sha512-U+FL5gzN2ldx3TYfQO5OAta2TBuIdabEdFwD5UVfWPsZE5nvOKkc/6BBqP54Z/adW/34c5ZrvvZhlhNTZujJXQ==} + engines: {node: '>= 14.0.0'} + '@algolia/requester-browser-xhr@5.35.0': resolution: {integrity: sha512-diY415KLJZ6x1Kbwl9u96Jsz0OstE3asjXtJ9pmk1d+5gPuQ5jQyEsgC+WmEXzlec3iuVszm8AzNYYaqw6B+Zw==} engines: {node: '>= 14.0.0'} + '@algolia/requester-browser-xhr@5.37.0': + resolution: {integrity: sha512-Ao8GZo8WgWFABrU7iq+JAftXV0t+UcOtCDL4mzHHZ+rQeTTf1TZssr4d0vIuoqkVNnKt9iyZ7T4lQff4ydcTrw==} + engines: {node: '>= 14.0.0'} + '@algolia/requester-fetch@5.35.0': resolution: {integrity: sha512-uydqnSmpAjrgo8bqhE9N1wgcB98psTRRQXcjc4izwMB7yRl9C8uuAQ/5YqRj04U0mMQ+fdu2fcNF6m9+Z1BzDQ==} engines: {node: '>= 14.0.0'} + '@algolia/requester-fetch@5.37.0': + resolution: {integrity: sha512-H7OJOXrFg5dLcGJ22uxx8eiFId0aB9b0UBhoOi4SMSuDBe6vjJJ/LeZyY25zPaSvkXNBN3vAM+ad6M0h6ha3AA==} + engines: {node: '>= 14.0.0'} + '@algolia/requester-node-http@5.35.0': resolution: {integrity: sha512-RgLX78ojYOrThJHrIiPzT4HW3yfQa0D7K+MQ81rhxqaNyNBu4F1r+72LNHYH/Z+y9I1Mrjrd/c/Ue5zfDgAEjQ==} engines: {node: '>= 14.0.0'} + '@algolia/requester-node-http@5.37.0': + resolution: {integrity: sha512-npZ9aeag4SGTx677eqPL3rkSPlQrnzx/8wNrl1P7GpWq9w/eTmRbOq+wKrJ2r78idlY0MMgmY/mld2tq6dc44g==} + engines: {node: '>= 14.0.0'} + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -747,8 +789,8 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2003.2': - resolution: {integrity: sha512-3QFQlSg92lz+Zid1CGcnYVuPo0RIyq+TEbaJUQmi7K9Ms0VxVNMIwTNIN3SI6QThD0Bg3sVRtsHWw84qoMwjKA==} + '@angular-devkit/architect@0.2003.4': + resolution: {integrity: sha512-OKT6QuoG+rZZmRQ9mSZoh1pCGB5jBrkb45CzI8VdaLFhrZ7Uqg1wri1tj5KpSQYLAd22uUFNIE0uzMmGwXHbYA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@angular-devkit/core@19.2.17': @@ -760,8 +802,8 @@ packages: chokidar: optional: true - '@angular-devkit/core@20.3.2': - resolution: {integrity: sha512-MsYPu/WaHQInCxLRfX3vOaf4uedvwX5yI29X/tQpD59/gI5Yq4YMDT48ntryZHclRuQ9x4vdm2Gp9e/LcP0ydw==} + '@angular-devkit/core@20.3.4': + resolution: {integrity: sha512-r83jn9yVdPh618oGgoKPggMsQGOkQqJbxEutd4CE9mnotPCE2uRTIyaFMh8sohNUeoQNRmj9rbr2pWGVlgERpg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -773,8 +815,8 @@ packages: resolution: {integrity: sha512-ADfbaBsrG8mBF6Mfs+crKA/2ykB8AJI50Cv9tKmZfwcUcyAdmTr+vVvhsBCfvUAEokigSsgqgpYxfkJVxhJYeg==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/schematics@20.3.2': - resolution: {integrity: sha512-CHHq2qWgHNi3fkhBMpSxVSrST2mBN31QfZpvKFp1sWvtJDN7sRHlvLCML81+KplVd8aWkbQqeAG73dgRDPbSBw==} + '@angular-devkit/schematics@20.3.4': + resolution: {integrity: sha512-JYlcmVBKNT9+cQ6T2tmu+yVQ2bJk8tG0mXvPHWXrl/M4c6NObhSSThK50tJHy0Xo3gl8WgogOxUeJNnBq67cIQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@angular-eslint/builder@18.3.0': @@ -839,14 +881,14 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '*' - '@angular/animations@20.3.1': - resolution: {integrity: sha512-mexSwaikVE2s+GDhB9fuagEvxbnKHWsqLlO7/R2nY9tTUxBO3drWe3p0D5GxG/EsEyzZU+86ED867q/JmAiVvw==} + '@angular/animations@20.3.3': + resolution: {integrity: sha512-nXpe1sAhMbQm4VTKhnP/zL2w5s2Kxjr9bZ7krOSTtyO9Wxjhd7oJN4mgCVRa80oEMheiDTmanPaMFLEN0pzang==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 20.3.1 + '@angular/core': 20.3.3 - '@angular/build@20.3.2': - resolution: {integrity: sha512-PiyvOvNtNM9p2YdCgNHTCqF7Fnyq5ug45Zhv7m6yRgin5VcDuSF/Mv2x7AY3HiN+w89Oxozvm13cSanzrw7acA==} + '@angular/build@20.3.4': + resolution: {integrity: sha512-2ZPyEQxg9FCM7gv5NZHZVCec6ubb7HM/fkzr7wcYQArN8E8EknlyfXn6G5AoqkEsQZGqtJOD8sfti0m4kYiwkQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^20.0.0 @@ -856,7 +898,7 @@ packages: '@angular/platform-browser': ^20.0.0 '@angular/platform-server': ^20.0.0 '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.3.2 + '@angular/ssr': ^20.3.4 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^20.0.0 @@ -891,45 +933,45 @@ packages: vitest: optional: true - '@angular/cdk@20.2.4': - resolution: {integrity: sha512-5UzrN854pnQH+Qw6XZRxx2zWkcOxKrzWPLXe+gHFxFhxWUZfJKGcTJeAj8bnmyb+C3lqBbGpoNQPQ8pFXQGEaQ==} + '@angular/cdk@20.2.7': + resolution: {integrity: sha512-QTqxPJSMXyjaswtpUrziwdoKRhqT2P9/Ascwzjg8T/SofV1850pc3YmonoOFrurYrmd4plZzWdr7raGcBWIh/Q==} peerDependencies: '@angular/common': ^20.0.0 || ^21.0.0 '@angular/core': ^20.0.0 || ^21.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/cli@20.3.2': - resolution: {integrity: sha512-5R+f11IbGkNGXTwTfVbhQXCh/jdQxlmdK11P3yoqhj2OcBM+GY8ALCyf0vyoOxocxt7NAJUq4fIpT9W2YhTVLQ==} + '@angular/cli@20.3.4': + resolution: {integrity: sha512-aNPk9ljY2PTc+ZoA7M67rxNvhbUJvzkuYcAdJuHbAIDoWcr2HhyFM2aGrLH3DVemY39xN/haJHj3FYJ8rCdXNw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/common@20.3.1': - resolution: {integrity: sha512-7Ru3BO4MOBQRMu9GJS+061cUsevKNsNAMxXnQtcqEaNyntUg2v0XiMdv4I7pQGtkQjFK17bKAxQ97jqxJfqsRQ==} + '@angular/common@20.3.3': + resolution: {integrity: sha512-iArFCXvgYJCpxLZv8o6rV7Cxuqv1hbndoeUmQgL7ekXwVS6BA49VErXbTPM+pfhAJ+v1fc/DG3rzBwXk3eW2lw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 20.3.1 + '@angular/core': 20.3.3 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@20.3.1': - resolution: {integrity: sha512-aFfGHi/ApYxmvF4cCS0TypcviQ/Xy+0fwTTrLC8znPC1vObBn0DUA0I6D5dP+xlOTx8PFLkgndNYa2f6RIluvg==} + '@angular/compiler-cli@20.3.3': + resolution: {integrity: sha512-kSIE6hkTiZGiJLyisp5Q6NXOHiDNOItp7N2HVNPrK1bqzM8foN6H6BE1a+LYO3Lwy3PkwQFzx03BnzxkM4sWng==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 20.3.1 + '@angular/compiler': 20.3.3 typescript: '>=5.8 <6.0' peerDependenciesMeta: typescript: optional: true - '@angular/compiler@20.3.1': - resolution: {integrity: sha512-zRYAdAG/hsJegXapKxElLU6Q5in8UG9Pbxyh90k89qsZwkuv+CfxVY5OBS2xjk1azt808++yhjfvbO/Em+HMKg==} + '@angular/compiler@20.3.3': + resolution: {integrity: sha512-7AUtF7PO8xo+jOgrhLRPXmt65M/KFuYIsVZGVLB1FTCUAPByFJEUYOSnUuHyvFQQqHesK4aYSP27slDpHH/PSA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@20.3.1': - resolution: {integrity: sha512-O03k9ivZ2CvoHXiXGH5WKlWlTtxF2UGMwGXWnV54vGViHwNcvU5Z3h6Ve6mdU9dYMHK9sGljYZnkRpwI3B8mnQ==} + '@angular/core@20.3.3': + resolution: {integrity: sha512-AWBCixxw4N9VgKT1uwrRPr1dH3CpT/ffcCsXJQ8TjzsKYjVBkXVht5OjtxJOWOQ2KaHwsGFEmDMv9fc1BHDFhQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 20.3.1 + '@angular/compiler': 20.3.3 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 peerDependenciesMeta: @@ -938,78 +980,78 @@ packages: zone.js: optional: true - '@angular/forms@20.3.1': - resolution: {integrity: sha512-P7cmfK1ldXS8KuPTwwIUTZs5AxhbPNumlumq+nfNJZAxv8/PQJh2W729M/EKHG8rB8cXjoo1K+olExnJNPVDTw==} + '@angular/forms@20.3.3': + resolution: {integrity: sha512-Rv3sO1vOAbw03IRK30CB45eucxZ1rI0Jyaa6QVmDlOzQ4bktkanbGxQtaxBdc9bKPBO1SVx27eTbStR7i3BNRg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.3.1 - '@angular/core': 20.3.1 - '@angular/platform-browser': 20.3.1 + '@angular/common': 20.3.3 + '@angular/core': 20.3.3 + '@angular/platform-browser': 20.3.3 rxjs: ^6.5.3 || ^7.4.0 - '@angular/language-service@20.3.1': - resolution: {integrity: sha512-tvQXQ5LHaI+iI+rXWshDKyvVmFVz3YxMQvD3kGBNvDlC4+6aCbM4aKii64TafpVkbRUwrmNj1wtAkgHbu9CCjA==} + '@angular/language-service@20.3.3': + resolution: {integrity: sha512-y27m0cy6RX0DHJvzqTg7XYTJT2FNHGqPxVdDmxM2SHjB5WIac1M3XleFDHkl57SHwIQOM8llSCk8Lev5ZWX3oA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/material-moment-adapter@20.2.4': - resolution: {integrity: sha512-3VllKbltLTVe/zmeVbhsGR8BUngmmUTqHHmiHnNeclzm9l20cSydbpCaQFmIa3t8PJtXitJ4NM496bzAISjhpw==} + '@angular/material-moment-adapter@20.2.7': + resolution: {integrity: sha512-QPpB1CizgvvWeDOyDFzjXI93muRVZpWNRBO+o2Nsu05A3+jUlHM10gclF2GUuLGcy7oZNnMnEZipjyBmVSXZwg==} peerDependencies: '@angular/core': ^20.0.0 || ^21.0.0 - '@angular/material': 20.2.4 + '@angular/material': 20.2.7 moment: ^2.18.1 - '@angular/material@20.2.4': - resolution: {integrity: sha512-B1XUOL9TbBDQZpH3j2C6hEpwdokvvmoeaOI7aMTpXrNzomyXHTWZWrMybq30trB7sE7cNze1DQRiOuDXsLgnTw==} + '@angular/material@20.2.7': + resolution: {integrity: sha512-VXsP5qkQQ3sCGkSHsgDku/OVlunGsqssOM057foOKJuajECsI3ZpGuLJ13nvLm9Z147UZOZfP463ixZIjd4XuQ==} peerDependencies: - '@angular/cdk': 20.2.4 + '@angular/cdk': 20.2.7 '@angular/common': ^20.0.0 || ^21.0.0 '@angular/core': ^20.0.0 || ^21.0.0 '@angular/forms': ^20.0.0 || ^21.0.0 '@angular/platform-browser': ^20.0.0 || ^21.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/platform-browser-dynamic@20.3.1': - resolution: {integrity: sha512-7/u+nI4iAi6YhMVlyn3kTUIeuDbS8JNUo+UNxH++jv51v6ppbpsYu+O18b5PRBaIa9jugIe9lpypH1nctO3mXg==} + '@angular/platform-browser-dynamic@20.3.3': + resolution: {integrity: sha512-QzJUeHgzUWpNrPF4tgqwO3jzmDGlM8aLwbA7BJBp2BOJZKg34BF4CzTngK5Z6LWcZ4gofTSzDOw9TIrk8U8g6Q==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.3.1 - '@angular/compiler': 20.3.1 - '@angular/core': 20.3.1 - '@angular/platform-browser': 20.3.1 + '@angular/common': 20.3.3 + '@angular/compiler': 20.3.3 + '@angular/core': 20.3.3 + '@angular/platform-browser': 20.3.3 - '@angular/platform-browser@20.3.1': - resolution: {integrity: sha512-JiQWRvyVZDH0N9p+pnMOuTFGaw7jPakWDQCJBOBBLdE6AyOiy8YPBImRMrjNNIEqg36h1a8H32rBorf2TL3ExA==} + '@angular/platform-browser@20.3.3': + resolution: {integrity: sha512-RUWpg49GnXdINjomRFrE/SRioxEehYqUzDVskDWddNeNhV9Z21zeC6Ao2i5q8UKq0y/oq2ShX7XFLprxqLoLnQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 20.3.1 - '@angular/common': 20.3.1 - '@angular/core': 20.3.1 + '@angular/animations': 20.3.3 + '@angular/common': 20.3.3 + '@angular/core': 20.3.3 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/router@20.3.1': - resolution: {integrity: sha512-lwXKuGe546Pu8vw9M5TolS1EHX69dRfOnCmBOpvGVRqzDNwVT7jfIFcSn++WPs7jhi6T6RPdcVCnIbeO0IRJYQ==} + '@angular/router@20.3.3': + resolution: {integrity: sha512-IrO5GY/vmaWwNdfR51xswNnBSxeEuvQAUqK3H0UNxhZlIE9gUS6pbbSidGGrQOZK+i0nd/rDz7j+RV7h2NK9aA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.3.1 - '@angular/core': 20.3.1 - '@angular/platform-browser': 20.3.1 + '@angular/common': 20.3.3 + '@angular/core': 20.3.3 + '@angular/platform-browser': 20.3.3 rxjs: ^6.5.3 || ^7.4.0 - '@angular/service-worker@20.3.1': - resolution: {integrity: sha512-IxhiFuoYqPTlLr3pM7HZngBNMoJfiL1xyGTOqsyBxA/V56NxdxxzphyxvzobPdkem9P03YtRXaTVCl6+j6+rzQ==} + '@angular/service-worker@20.3.3': + resolution: {integrity: sha512-Md0jsR7qIe5w8QmjZ3jPcqT1bVbFNjJik0QC8c+YXbApdt9O658z7eqPjj+sSK0cr1I6+ppCRstIL68DKha8sg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/core': 20.3.1 + '@angular/core': 20.3.3 rxjs: ^6.5.3 || ^7.4.0 '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} - '@antfu/utils@8.1.1': - resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} + '@antfu/utils@9.2.0': + resolution: {integrity: sha512-Oq1d9BGZakE/FyoEtcNeSwM7MpDO2vUBi11RWBZXf75zPsbUVWmUs03EqkRFrcgbXyKTas0BdZWC1wcuSoqSAw==} '@apidevtools/json-schema-ref-parser@11.9.3': resolution: {integrity: sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ==} @@ -1022,16 +1064,24 @@ packages: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.0': - resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} + '@babel/compat-data@7.28.4': + resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.23.7': + resolution: {integrity: sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==} engines: {node: '>=6.9.0'} '@babel/core@7.28.3': resolution: {integrity: sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==} engines: {node: '>=6.9.0'} - '@babel/eslint-parser@7.28.0': - resolution: {integrity: sha512-N4ntErOlKvcbTt01rr5wj3y55xnIdx1ymrfIr8C2WnM1Y9glFgWaGDEULJIazOX3XM9NRzhfJ6zZnQ1sBNWU+w==} + '@babel/core@7.28.4': + resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} + engines: {node: '>=6.9.0'} + + '@babel/eslint-parser@7.28.4': + resolution: {integrity: sha512-Aa+yDiH87980jR6zvRfFuCR1+dLb00vBydhTL+zI992Rz/wQhSvuxjmOOuJOgO3XmakO6RykRGD2S1mq1AtgHA==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': ^7.11.0 @@ -1061,6 +1111,16 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-define-polyfill-provider@0.4.4': + resolution: {integrity: sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-define-polyfill-provider@0.5.0': + resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/helper-define-polyfill-provider@0.6.5': resolution: {integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==} peerDependencies: @@ -1128,12 +1188,12 @@ packages: resolution: {integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.28.3': - resolution: {integrity: sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==} + '@babel/helpers@7.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.3': - resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==} + '@babel/parser@7.28.4': + resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} engines: {node: '>=6.0.0'} hasBin: true @@ -1173,11 +1233,32 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-dynamic-import@7.8.3': resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-export-namespace-from@7.8.3': + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-assertions@7.27.1': resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} engines: {node: '>=6.9.0'} @@ -1190,12 +1271,64 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.27.1': resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-typescript@7.27.1': resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} engines: {node: '>=6.9.0'} @@ -1232,8 +1365,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.28.0': - resolution: {integrity: sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==} + '@babel/plugin-transform-block-scoping@7.28.4': + resolution: {integrity: sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1250,8 +1383,8 @@ packages: peerDependencies: '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.28.3': - resolution: {integrity: sha512-DoEWC5SuxuARF2KdKmGUq3ghfPMO6ZzR12Dnp5gubwbeWJo4dbNWXJPVlwvh4Zlq6Z7YVvL8VFxeSOJgjsx4Sg==} + '@babel/plugin-transform-classes@7.28.4': + resolution: {integrity: sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1394,8 +1527,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.28.0': - resolution: {integrity: sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==} + '@babel/plugin-transform-object-rest-spread@7.28.4': + resolution: {integrity: sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1484,8 +1617,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.28.3': - resolution: {integrity: sha512-K3/M/a4+ESb5LEldjQb+XSrpY0nF+ZBFlTCbSnKaYAMfD8v33O6PMs4uYnOk19HlcsI8WMu3McdFPTiQHF/1/A==} + '@babel/plugin-transform-regenerator@7.28.4': + resolution: {integrity: sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1568,6 +1701,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/preset-env@7.23.8': + resolution: {integrity: sha512-lFlpmkApLkEP6woIKprO6DO60RImpatTQKtz4sUcDjVcK8M8mQ4sZsuxaTMNOZf0sqAq/ReYW1ZBHnOQwKpLWA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/preset-env@7.28.3': resolution: {integrity: sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==} engines: {node: '>=6.9.0'} @@ -1585,30 +1724,36 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/preset-typescript@7.23.3': + resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/preset-typescript@7.27.1': resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime-corejs3@7.28.3': - resolution: {integrity: sha512-LKYxD2CIfocUFNREQ1yk+dW+8OH8CRqmgatBZYXb+XhuObO8wsDpEoCNri5bKld9cnj8xukqZjxSX8p1YiRF8Q==} + '@babel/runtime-corejs3@7.28.4': + resolution: {integrity: sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.28.3': - resolution: {integrity: sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==} + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.3': - resolution: {integrity: sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==} + '@babel/traverse@7.28.4': + resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.2': - resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} + '@babel/types@7.28.4': + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} engines: {node: '>=6.9.0'} '@braintree/sanitize-url@7.1.1': @@ -1620,94 +1765,47 @@ packages: cpu: [arm64] os: [darwin] - '@bufbuild/buf-darwin-arm64@1.56.0': - resolution: {integrity: sha512-9neaI9gx1sxOGl9xrL7kw6H+0WmVAFlIQTIDc3vt1qRhfgOt/8AWOHSOWppGTRjNiB0qh6Xie1LYHv/jgDVN0g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - '@bufbuild/buf-darwin-x64@1.55.1': resolution: {integrity: sha512-hCkatzlV7DwHWEyzzcpsZgLtxABidT/EYBmLTy6oSCHimOJzR1c5ezKe75tX7myDAfV0HZExIM7+cSsWg3dTPg==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - '@bufbuild/buf-darwin-x64@1.56.0': - resolution: {integrity: sha512-nRHPMXV8fr/lqU+u/1GGsUg7OvNcxJuCJoJpfRoRg38b+NPzOz2FkQAs5OEJzzprQB5aftn5//cl8YXjgvTuFA==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - '@bufbuild/buf-linux-aarch64@1.55.1': resolution: {integrity: sha512-hA4jGPZ2N+FUZt03w+hPt6YsbhAdOh2gNKBQnuysj8kdTqZ4mw1wCOUoRg9h7eqOr/2XCcOibWYO36H2eS2OYQ==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - '@bufbuild/buf-linux-aarch64@1.56.0': - resolution: {integrity: sha512-+td559RuKNwYDnq49NrIDGJ4F73Ra4QzVVbsC+UeveA0HMnIGRzFbchGjHtNJyaZsI57sXJ7dCHH0iFV3jcYwQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - '@bufbuild/buf-linux-armv7@1.55.1': resolution: {integrity: sha512-npnzJSAZRUdh8+fmgsbXt+dogA+iU/i/qWh+3XhdLXW220nWpd1jAXcpquaVfer8EwMEcYjqVf8FA7IXOgjGXw==} engines: {node: '>=12'} cpu: [arm] os: [linux] - '@bufbuild/buf-linux-armv7@1.56.0': - resolution: {integrity: sha512-9v3zmos6wRTBc4QeIg4rfDmPzmTgtUTRCbhr87qws/yddIT8cFtHHhy1whnozBNqtmYOdwZNBNx/QXqGGcRuKw==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - '@bufbuild/buf-linux-x64@1.55.1': resolution: {integrity: sha512-/48IjSA1kh/8kZl1bcDkikgH+9BMnPhhVqad+R7+3ttYOFqifet3n+hf2ipA26NtTpTfvOSRXj1tdx/80x0I1g==} engines: {node: '>=12'} cpu: [x64] os: [linux] - '@bufbuild/buf-linux-x64@1.56.0': - resolution: {integrity: sha512-3jZHHBol1fuichNke7LJtHJUdw314XBj6OuJHY6IufsaaVIj1mtM2DPbGiDhYB453J7FiV/buadctKBxAAHclg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - '@bufbuild/buf-win32-arm64@1.55.1': resolution: {integrity: sha512-CE+jAN1ikRTIdny6Q/geccKsLhy4QEXzUaJUfAiUXqjSW2u/Et7+p9Wh6xUgXcSuIoz1aw8MVuCESrNMBt6LBg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - '@bufbuild/buf-win32-arm64@1.56.0': - resolution: {integrity: sha512-KMGzSf9rIbT01Jb2685JovwRRYEdL7Zbs6ZrjyhIHBgKK6cBwz1AJvEaDrWMEzCdv+opQwjgM6UdtA4e9BWP1A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - '@bufbuild/buf-win32-x64@1.55.1': resolution: {integrity: sha512-C4VYS96YBJkLhIKH6yh8BqHgIjqGe+G6yuAOOKxWsYdx3QbT5LYOr38AP1bzkFm0Gz9jOOr5n0pmAFwsOLYjiw==} engines: {node: '>=12'} cpu: [x64] os: [win32] - '@bufbuild/buf-win32-x64@1.56.0': - resolution: {integrity: sha512-19LFOCyFFVTaaqNGtYTpiF67fcpneWZFlm8UNU+Xs87Kh+N5i/LjDjNytnpFT6snwU4/S+UUkq7WgS6UPjqXIg==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - '@bufbuild/buf@1.55.1': resolution: {integrity: sha512-V9tpe2XlRVyq33cct2lNz9nDDQG95WbPKlxQkMKt5i7tPsfqE3vzbGiEC96K0QJWhIU28OkjYD8+1SyYKBWVYg==} engines: {node: '>=12'} hasBin: true - '@bufbuild/buf@1.56.0': - resolution: {integrity: sha512-1xQWOf3FCDDTi+5B/VScQ73EP6ACwQPCP4ODvCq2L6IVgFtvYX49ur6cQ2qCM8yFitIHESm/Nbff93sh+V/Iog==} - engines: {node: '>=12'} - hasBin: true - '@bufbuild/protobuf@2.6.3': resolution: {integrity: sha512-w/gJKME9mYN7ZoUAmSMAWXk4hkVpxRKvEJCb3dV5g9wwWdxTJJ0ayOJAVcNxtdqaxDyFuC0uz4RSGVacJ030PQ==} @@ -1716,26 +1814,26 @@ packages: peerDependencies: '@bufbuild/buf': ^1.22.0 - '@bugsnag/browser@8.4.0': - resolution: {integrity: sha512-5ZzGZtCwvhQbrMCAPAH9ruQGjVmSzjiE6qNNP2mD/8q0Yi45TWBtG/0MdlUYpDwx2lxVVHaGHqI3GBeD7B4Hqg==} + '@bugsnag/browser@8.6.0': + resolution: {integrity: sha512-7UGqTGnQqXUQ09gOlWbDTFUSbeLIIrP+hML3kTOq8Zdc8nP/iuOEflXGLV2TxWBWW8xIUPc928caFPr9EcaDuw==} - '@bugsnag/core@8.4.0': - resolution: {integrity: sha512-vmGNO5gQ2qP5CE6/RzIzO2X/5oJCQGrhdUc6OwpEf4CytPidpk9LNCkscvOx9iT9Ym3USKSo7DeZhtnhFP0KKQ==} + '@bugsnag/core@8.6.0': + resolution: {integrity: sha512-94Jo443JegaiKV8z8NXMFdyTGubiUnwppWhq3kG2ldlYKtEvrmIaO5+JA58B6oveySvoRu3cCe2W9ysY7G7mDw==} '@bugsnag/cuid@3.2.1': resolution: {integrity: sha512-zpvN8xQ5rdRWakMd/BcVkdn2F8HKlDSbM3l7duueK590WmI1T0ObTLc1V/1e55r14WNjPd5AJTYX4yPEAFVi+Q==} - '@bugsnag/js@8.4.0': - resolution: {integrity: sha512-r8M+kgNts3ebR7g9Kct2wuaipcxDEvrBwnBugJfHFRwelyysz5ZBkFAvpatSm71LyLTv/9FyvWKEVgXwV7dTBQ==} + '@bugsnag/js@8.6.0': + resolution: {integrity: sha512-U+ofNTTMA2Z6tCrOhK/QhHBhLoQHoalk8Y82WWc7FAcVSoJZYadND/QuXUriNRZpC4YgJ/s/AxPeQ2y+WvMxzw==} - '@bugsnag/node@8.4.0': - resolution: {integrity: sha512-yqlFTvJNRwnp8jQczfgBztAhSKFc5vr9CHTUDbB72gBgCzQVQ7q16MX0tIHZVeL1Mo1Zywr9rvcPG/HBAPTuOw==} + '@bugsnag/node@8.6.0': + resolution: {integrity: sha512-O91sELo6zBjflVeP3roRC9l68iYaafVs5lz2N0FDkrT08mP2UljtNWpjjoR/0h1so5Ny1OxHgnZ1IrsXhz5SMQ==} '@bugsnag/safe-json-stringify@6.1.0': resolution: {integrity: sha512-ImA35rnM7bGr+J30R979FQ95BhRB4UO1KfJA0J2sVqc8nwnrS9hhE5mkTmQWMs8Vh1Da+hkLKs5jJB4JjNZp4A==} - '@changesets/apply-release-plan@7.0.12': - resolution: {integrity: sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==} + '@changesets/apply-release-plan@7.0.13': + resolution: {integrity: sha512-BIW7bofD2yAWoE8H4V40FikC+1nNFEKBisMECccS16W1rt6qqhNTBDmIw5HaqmMgtLNz9e7oiALiEUuKrQ4oHg==} '@changesets/assemble-release-plan@6.0.9': resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} @@ -1743,8 +1841,8 @@ packages: '@changesets/changelog-git@0.2.1': resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} - '@changesets/cli@2.29.6': - resolution: {integrity: sha512-6qCcVsIG1KQLhpQ5zE8N0PckIx4+9QlHK3z6/lwKnw7Tir71Bjw8BeOZaxA/4Jt00pcgCnCSWZnyuZf5Il05QQ==} + '@changesets/cli@2.29.7': + resolution: {integrity: sha512-R7RqWoaksyyKXbKXBTbT4REdy22yH81mcFK6sWtqSanxUCbUi9Uf+6aqxZtDQouIqPdem2W56CdxXgsxdq7FLQ==} hasBin: true '@changesets/config@3.1.1': @@ -1808,12 +1906,12 @@ packages: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} - '@connectrpc/connect-node@2.0.4': - resolution: {integrity: sha512-+2rmWcCqYxh7TKv6zyJqGloUP5dZSkjrZ3AA1CljGBqiwH6pOjLoNX1ofKh9PBRkJnvfxvL3pBEEWaD1hJso4Q==} - engines: {node: '>=18.14.1'} + '@connectrpc/connect-node@2.1.0': + resolution: {integrity: sha512-6akCXZSX5uWHLR654ne9Tnq7AnPUkLS65NvgsI5885xBkcuVy2APBd8sA4sLqaplUt84cVEr6LhjEFNx6W1KtQ==} + engines: {node: '>=20'} peerDependencies: - '@bufbuild/protobuf': ^2.2.0 - '@connectrpc/connect': 2.0.4 + '@bufbuild/protobuf': ^2.7.0 + '@connectrpc/connect': 2.1.0 '@connectrpc/connect-web@2.0.4': resolution: {integrity: sha512-wMiStHClk7YopPIrmFvgviPjHeFpiNGykPxuVIi6leGTpg/GKx317tsN5GySX46iV7RrnESOvAyuisQtJXO99w==} @@ -1833,8 +1931,8 @@ packages: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 - '@csstools/color-helpers@5.0.2': - resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} + '@csstools/color-helpers@5.1.0': + resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} engines: {node: '>=18'} '@csstools/css-calc@2.1.4': @@ -1844,8 +1942,8 @@ packages: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-color-parser@3.0.10': - resolution: {integrity: sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==} + '@csstools/css-color-parser@3.1.0': + resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} engines: {node: '>=18'} peerDependencies: '@csstools/css-parser-algorithms': ^3.0.5 @@ -1868,32 +1966,44 @@ packages: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 + '@csstools/postcss-alpha-function@1.0.0': + resolution: {integrity: sha512-r2L8KNg5Wriq5n8IUQcjzy2Rh37J5YjzP9iOyHZL5fxdWYHB08vqykHQa4wAzN/tXwDuCHnhQDGCtxfS76xn7g==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + '@csstools/postcss-cascade-layers@5.0.2': resolution: {integrity: sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-color-function@4.0.10': - resolution: {integrity: sha512-4dY0NBu7NVIpzxZRgh/Q/0GPSz/jLSw0i/u3LTUor0BkQcz/fNhN10mSWBDsL0p9nDb0Ky1PD6/dcGbhACuFTQ==} + '@csstools/postcss-color-function-display-p3-linear@1.0.0': + resolution: {integrity: sha512-7q+OuUqfowRrP84m/Jl0wv3pfCQyUTCW5MxDIux+/yty5IkUUHOTigCjrC0Fjy3OT0ncGLudHbfLWmP7E1arNA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-color-mix-function@3.0.10': - resolution: {integrity: sha512-P0lIbQW9I4ShE7uBgZRib/lMTf9XMjJkFl/d6w4EMNHu2qvQ6zljJGEcBkw/NsBtq/6q3WrmgxSS8kHtPMkK4Q==} + '@csstools/postcss-color-function@4.0.11': + resolution: {integrity: sha512-AtH22zLHTLm64HLdpv5EedT/zmYTm1MtdQbQhRZXxEB6iYtS6SrS1jLX3TcmUWMFzpumK/OVylCm3HcLms4slw==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-color-mix-variadic-function-arguments@1.0.0': - resolution: {integrity: sha512-Z5WhouTyD74dPFPrVE7KydgNS9VvnjB8qcdes9ARpCOItb4jTnm7cHp4FhxCRUoyhabD0WVv43wbkJ4p8hLAlQ==} + '@csstools/postcss-color-mix-function@3.0.11': + resolution: {integrity: sha512-cQpXBelpTx0YhScZM5Ve0jDCA4RzwFc7oNafzZOGgCHt/GQVYiU8Vevz9QJcwy/W0Pyi/BneY+KMjz23lI9r+Q==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-content-alt-text@2.0.6': - resolution: {integrity: sha512-eRjLbOjblXq+byyaedQRSrAejKGNAFued+LcbzT+LCL78fabxHkxYjBbxkroONxHHYu2qxhFK2dBStTLPG3jpQ==} + '@csstools/postcss-color-mix-variadic-function-arguments@1.0.1': + resolution: {integrity: sha512-c7hyBtbF+jlHIcUGVdWY06bHICgguV9ypfcELU3eU3W/9fiz2dxM8PqxQk2ndXYTzLnwPvNNqu1yCmQ++N6Dcg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-content-alt-text@2.0.7': + resolution: {integrity: sha512-cq/zWaEkpcg3RttJ5+GdNwk26NwxY5KgqgtNL777Fdd28AVGHxuBvqmK4Jq4oKhW1NX4M2LbgYAVVN0NZ+/XYQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -1910,26 +2020,26 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-gamut-mapping@2.0.10': - resolution: {integrity: sha512-QDGqhJlvFnDlaPAfCYPsnwVA6ze+8hhrwevYWlnUeSjkkZfBpcCO42SaUD8jiLlq7niouyLgvup5lh+f1qessg==} + '@csstools/postcss-gamut-mapping@2.0.11': + resolution: {integrity: sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-gradients-interpolation-method@5.0.10': - resolution: {integrity: sha512-HHPauB2k7Oits02tKFUeVFEU2ox/H3OQVrP3fSOKDxvloOikSal+3dzlyTZmYsb9FlY9p5EUpBtz0//XBmy+aw==} + '@csstools/postcss-gradients-interpolation-method@5.0.11': + resolution: {integrity: sha512-8M3mcNTL3cGIJXDnvrJ2oWEcKi3zyw7NeYheFKePUlBmLYm1gkw9Rr/BA7lFONrOPeQA3yeMPldrrws6lqHrug==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-hwb-function@4.0.10': - resolution: {integrity: sha512-nOKKfp14SWcdEQ++S9/4TgRKchooLZL0TUFdun3nI4KPwCjETmhjta1QT4ICQcGVWQTvrsgMM/aLB5We+kMHhQ==} + '@csstools/postcss-hwb-function@4.0.11': + resolution: {integrity: sha512-9meZbsVWTZkWsSBazQips3cHUOT29a/UAwFz0AMEXukvpIGGDR9+GMl3nIckWO5sPImsadu4F5Zy+zjt8QgCdA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-ic-unit@4.0.2': - resolution: {integrity: sha512-lrK2jjyZwh7DbxaNnIUjkeDmU8Y6KyzRBk91ZkI5h8nb1ykEfZrtIVArdIjX4DHMIBGpdHrgP0n4qXDr7OHaKA==} + '@csstools/postcss-ic-unit@4.0.3': + resolution: {integrity: sha512-RtYYm2qUIu9vAaHB0cC8rQGlOCQAUgEc2tMr7ewlGXYipBQKjoWmyVArqsk7SEr8N3tErq6P6UOJT3amaVof5Q==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -1946,8 +2056,8 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-light-dark-function@2.0.9': - resolution: {integrity: sha512-1tCZH5bla0EAkFAI2r0H33CDnIBeLUaJh1p+hvvsylJ4svsv2wOmJjJn+OXwUZLXef37GYbRIVKX+X+g6m+3CQ==} + '@csstools/postcss-light-dark-function@2.0.10': + resolution: {integrity: sha512-g7Lwb294lSoNnyrwcqoooh9fTAp47rRNo+ILg7SLRSMU3K9ePIwRt566sNx+pehiCelv4E1ICaU1EwLQuyF2qw==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -2006,14 +2116,14 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-oklab-function@4.0.10': - resolution: {integrity: sha512-ZzZUTDd0fgNdhv8UUjGCtObPD8LYxMH+MJsW9xlZaWTV8Ppr4PtxlHYNMmF4vVWGl0T6f8tyWAKjoI6vePSgAg==} + '@csstools/postcss-oklab-function@4.0.11': + resolution: {integrity: sha512-9f03ZGxZ2VmSCrM4SDXlAYP+Xpu4VFzemfQUQFL9OYxAbpvDy0FjDipZ0i8So1pgs8VIbQI0bNjFWgfdpGw8ig==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 - '@csstools/postcss-progressive-custom-properties@4.1.0': - resolution: {integrity: sha512-YrkI9dx8U4R8Sz2EJaoeD9fI7s7kmeEBfmO+UURNeL6lQI7VxF6sBE+rSqdCBn4onwqmxFdBU3lTwyYb/lCmxA==} + '@csstools/postcss-progressive-custom-properties@4.2.0': + resolution: {integrity: sha512-fWCXRasX17N1NCPTCuwC3FJDV+Wc031f16cFuuMEfIsYJ1q5ABCa59W0C6VeMGqjNv6ldf37vvwXXAeaZjD9PA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -2024,8 +2134,8 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-relative-color-syntax@3.0.10': - resolution: {integrity: sha512-8+0kQbQGg9yYG8hv0dtEpOMLwB9M+P7PhacgIzVzJpixxV4Eq9AUQtQw8adMmAJU1RBBmIlpmtmm3XTRd/T00g==} + '@csstools/postcss-relative-color-syntax@3.0.11': + resolution: {integrity: sha512-oQ5fZvkcBrWR+k6arHXk0F8FlkmD4IxM+rcGDLWrF2f31tWyEM3lSraeWAV0f7BGH6LIrqmyU3+Qo/1acfoJng==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -2048,8 +2158,8 @@ packages: peerDependencies: postcss: ^8.4 - '@csstools/postcss-text-decoration-shorthand@4.0.2': - resolution: {integrity: sha512-8XvCRrFNseBSAGxeaVTaNijAu+FzUvjwFXtcrynmazGb/9WUdsPCpBX+mHEHShVRq47Gy4peYAoxYs8ltUnmzA==} + '@csstools/postcss-text-decoration-shorthand@4.0.3': + resolution: {integrity: sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -2103,11 +2213,6 @@ packages: '@cypress/xvfb@1.2.4': resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} - '@devcontainers/cli@0.80.0': - resolution: {integrity: sha512-w2EaxgjyeVGyzfA/KUEZBhyXqu/5PyWNXcnrXsZOBrt3aN2zyGiHrXoG54TF6K0b5DSCF01Rt5fnIyrCeFzFKw==} - engines: {node: ^16.13.0 || >=18.0.0} - hasBin: true - '@discoveryjs/json-ext@0.5.7': resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} @@ -2312,14 +2417,14 @@ packages: resolution: {integrity: sha512-P1ml0nvOmEFdmu0smSXOqTS1sxU5tqvnc0dA4MTKV39kye+bhQnjkIKEE18fNOvxjyB86k8esoCIFM3x4RykOQ==} engines: {node: '>=18.0'} - '@emnapi/core@1.4.5': - resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==} + '@emnapi/core@1.5.0': + resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} - '@emnapi/runtime@1.4.5': - resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} + '@emnapi/runtime@1.5.0': + resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} - '@emnapi/wasi-threads@1.0.4': - resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==} + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} @@ -2615,8 +2720,8 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.7.0': - resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + '@eslint-community/eslint-utils@4.9.0': + resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -2692,16 +2797,16 @@ packages: resolution: {integrity: sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==} engines: {node: '>=6'} - '@fortawesome/fontawesome-common-types@7.0.1': - resolution: {integrity: sha512-0VpNtO5cNe1/HQWMkl4OdncYK/mv9hnBte0Ew0n6DMzmo3Q3WzDFABHm6LeNTipt5zAyhQ6Ugjiu8aLaEjh1gg==} + '@fortawesome/fontawesome-common-types@7.1.0': + resolution: {integrity: sha512-l/BQM7fYntsCI//du+6sEnHOP6a74UixFyOYUyz2DLMXKx+6DEhfR3F2NYGE45XH1JJuIamacb4IZs9S0ZOWLA==} engines: {node: '>=6'} '@fortawesome/fontawesome-svg-core@6.7.2': resolution: {integrity: sha512-yxtOBWDrdi5DD5o1pmVdq3WMCvnobT0LU6R8RyyVXPvFRd2o79/0NCuQoCjNTeZz9EzA9xS3JxNWfv54RIHFEA==} engines: {node: '>=6'} - '@fortawesome/fontawesome-svg-core@7.0.1': - resolution: {integrity: sha512-x0cR55ILVqFpUioSMf6ebpRCMXMcheGN743P05W2RB5uCNpJUqWIqW66Lap8PfL/lngvjTbZj0BNSUweIr/fHQ==} + '@fortawesome/fontawesome-svg-core@7.1.0': + resolution: {integrity: sha512-fNxRUk1KhjSbnbuBxlWSnBLKLBNun52ZBTcs22H/xEEzM6Ap81ZFTQ4bZBxVQGQgVY0xugKGoRcCbaKjLQ3XZA==} engines: {node: '>=6'} '@fortawesome/free-brands-svg-icons@6.7.2': @@ -2717,12 +2822,32 @@ packages: engines: {node: '>=6'} hasBin: true + '@hapi/address@5.1.1': + resolution: {integrity: sha512-A+po2d/dVoY7cYajycYI43ZbYMXukuopIsqCjh5QzsBCipDtdofHntljDlpccMjIfTy6UOkg+5KPriwYch2bXA==} + engines: {node: '>=14.0.0'} + + '@hapi/formula@3.0.2': + resolution: {integrity: sha512-hY5YPNXzw1He7s0iqkRQi+uMGh383CGdyyIGYtB+W5N3KHPXoqychklvHhKCC9M3Xtv0OCs/IHw+r4dcHtBYWw==} + + '@hapi/hoek@11.0.7': + resolution: {integrity: sha512-HV5undWkKzcB4RZUusqOpcgxOaq6VOAH7zhhIr2g3G8NF/MlFO75SjOr2NfuSx0Mh40+1FqCkagKLJRykUWoFQ==} + '@hapi/hoek@9.3.0': resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + '@hapi/pinpoint@2.0.1': + resolution: {integrity: sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==} + + '@hapi/tlds@1.1.3': + resolution: {integrity: sha512-QIvUMB5VZ8HMLZF9A2oWr3AFM430QC8oGd0L35y2jHpuW6bIIca6x/xL7zUf4J7L9WJ3qjz+iJII8ncaeMbpSg==} + engines: {node: '>=14.0.0'} + '@hapi/topo@5.1.0': resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + '@hapi/topo@6.0.2': + resolution: {integrity: sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==} + '@headlessui/react@1.7.19': resolution: {integrity: sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==} engines: {node: '>=10'} @@ -2768,8 +2893,8 @@ packages: '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - '@iconify/utils@2.3.0': - resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==} + '@iconify/utils@3.0.1': + resolution: {integrity: sha512-A78CUEnFGX8I/WlILxJCuIJXloL0j/OJ9PSchPAfCargEIKmUBWvvEMmKWB5oONwiUqlNt+5eRufdkLxeHIWYw==} '@img/sharp-darwin-arm64@0.34.3': resolution: {integrity: sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==} @@ -2893,32 +3018,32 @@ packages: cpu: [x64] os: [win32] - '@inkeep/cxkit-color-mode@0.5.96': - resolution: {integrity: sha512-Z/W17xfnQgw0ZyGWCwq9RLBWZa7DSyOpbhdYtnNxmzI414dSZLMt8RWQRACn9KQ7S8TD/D0dr03fU2IUop1F5w==} + '@inkeep/cxkit-color-mode@0.5.97': + resolution: {integrity: sha512-NDbK/z6rpvS7HC48+LI/YdGEhIXeGAKpmh0+vGgSme/jDyVJ8l2nnK8aepCb0FNGilqm7cEu7Ny5vVMFBMfwWA==} - '@inkeep/cxkit-docusaurus@0.5.96': - resolution: {integrity: sha512-eHHjR59AWysdrj2Oighp8Phl77A7BYA7rlYdlHbpg1Z1WJmkAe9tNTzJxgBjeOvCkBZPprS9DMMxP4ml24MfNQ==} + '@inkeep/cxkit-docusaurus@0.5.97': + resolution: {integrity: sha512-hAYWrL1kminmmjKLEwjsuyuvX1+Gf9RFQ2oowbH2RUsT4jRPcyrUedIZLsleEZvSCpHWgVRFXCnkYZbu8CshsQ==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' - '@inkeep/cxkit-primitives@0.5.96': - resolution: {integrity: sha512-FK0ikjA8T7pKZV7Wh20nqzNfXicq3oTuhb83st+MxebDe5gOb/k23YLY60vHaVkqCkaC+VYkqyfR0GSoZzIuzg==} + '@inkeep/cxkit-primitives@0.5.97': + resolution: {integrity: sha512-puUxVO8a+ooJImOTM0IrZDca2t/z4vU6YhYPt1ZuRHUPDveaqEgvVPzzW8bAQStpUTxHy5nufdTosrUq5zmrMQ==} peerDependencies: react: '>=17.0.0' react-dom: '>=17.0.0' - '@inkeep/cxkit-react@0.5.96': - resolution: {integrity: sha512-X7ixJw53OrowoQ9fZ48nzoKIro+g+NVyJkJLTnekLXkklW4tustMbdWeA1f7mQrThNvgEc11S5PbuxNcwJskHA==} + '@inkeep/cxkit-react@0.5.97': + resolution: {integrity: sha512-erUEgt4UV9UznXuOV4R8Q4Zy/tFpYny7mX4ASz0xghq7Qu/NyT8evyPg+Q/Z/mP7mbKLInJVTvoRt0W5ZLQKGA==} - '@inkeep/cxkit-styled@0.5.96': - resolution: {integrity: sha512-NLumV2BHutLLKlnhHRpMrCe1lxxvMht2a4JyjwNNDd4qx54jfYUpA2Cyqa+jHtxqb9CXreU1a/TxhCHu0WS9mw==} + '@inkeep/cxkit-styled@0.5.97': + resolution: {integrity: sha512-JRAmQexWVVbleM61ImgO0Eten17urA3lE8d3bjF8PfKoHts1b+rEiRjaDKSQ+G3FzRuRguyGzevhtzMdFqKHJw==} - '@inkeep/cxkit-theme@0.5.96': - resolution: {integrity: sha512-shIZhv/4xM5WF2xSNieI40rbVA/5oBJDarldFSfmwEjbcHZY9fz5efZmi6sqHLlJeT6TMv10IknZ7VIKT8ekiw==} + '@inkeep/cxkit-theme@0.5.97': + resolution: {integrity: sha512-cOXey3GLPxFgpBnEHNE6KsacK4kKXhEv98Qz4EhQjd5P7p+o/77npklOvu4HXbGyPZAy3X8HAFyQk01nH+1DVA==} - '@inkeep/cxkit-types@0.5.96': - resolution: {integrity: sha512-ljOudxIY5JC4LLXyAi5hNUfJcQGirmBv4Okup0EczF4tosSDZFG6fzLYXOZ/wNvJ4vNq+TGsXu2yJuAvp9crMA==} + '@inkeep/cxkit-types@0.5.97': + resolution: {integrity: sha512-9f8VEnhB7qXHhHNaqHPqVaunU+SdyD8bEZscooqzBuef9jK/i5KSd1LOHch/gfH4GN6FiQBPbHXlYE5YcZA7WA==} '@inquirer/ansi@1.0.0': resolution: {integrity: sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA==} @@ -3092,10 +3217,22 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} + '@jest/diff-sequences@30.0.1': + resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/get-type@30.1.0': + resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/schemas@29.6.3': resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/schemas@30.0.5': + resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/types@29.6.3': resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3103,6 +3240,9 @@ packages: '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -3113,8 +3253,8 @@ packages: '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@jridgewell/trace-mapping@0.3.30': - resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==} + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} '@js-sdsl/ordered-map@4.4.2': resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} @@ -3177,11 +3317,11 @@ packages: resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true - '@mdx-js/mdx@3.1.0': - resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==} + '@mdx-js/mdx@3.1.1': + resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} - '@mdx-js/react@3.1.0': - resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} + '@mdx-js/react@3.1.1': + resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} peerDependencies: '@types/react': '>=16' react: '>=16' @@ -3193,23 +3333,23 @@ packages: resolution: {integrity: sha512-JPwUKWSsbzx+DLFznf/QZ32Qa+ptfbUlHhRLrBQBAFu9iI1iYvizM4p+zhhRDceSsPutXp4z+R/HPVphlIiclg==} engines: {node: '>=18'} - '@module-federation/error-codes@0.17.1': - resolution: {integrity: sha512-n6Elm4qKSjwAPxLUGtwnl7qt4y1dxB8OpSgVvXBIzqI9p27a3ZXshLPLnumlpPg1Qudaj8sLnSnFtt9yGpt5yQ==} + '@module-federation/error-codes@0.18.0': + resolution: {integrity: sha512-Woonm8ehyVIUPXChmbu80Zj6uJkC0dD9SJUZ/wOPtO8iiz/m+dkrOugAuKgoiR6qH4F+yorWila954tBz4uKsQ==} - '@module-federation/runtime-core@0.17.1': - resolution: {integrity: sha512-LCtIFuKgWPQ3E+13OyrVpuTPOWBMI/Ggwsq1Q874YeT8Px28b8tJRCj09DjyRFyhpSPyV/uG80T6iXPAUoLIfQ==} + '@module-federation/runtime-core@0.18.0': + resolution: {integrity: sha512-ZyYhrDyVAhUzriOsVfgL6vwd+5ebYm595Y13KeMf6TKDRoUHBMTLGQ8WM4TDj8JNsy7LigncK8C03fn97of0QQ==} - '@module-federation/runtime-tools@0.17.1': - resolution: {integrity: sha512-4kr6zTFFwGywJx6whBtxsc84V+COAuuBpEdEbPZN//YLXhNB0iz2IGsy9r9wDl+06h84bD+3dQ05l9euRLgXzQ==} + '@module-federation/runtime-tools@0.18.0': + resolution: {integrity: sha512-fSga9o4t1UfXNV/Kh6qFvRyZpPp3EHSPRISNeyT8ZoTpzDNiYzhtw0BPUSSD8m6C6XQh2s/11rI4g80UY+d+hA==} - '@module-federation/runtime@0.17.1': - resolution: {integrity: sha512-vKEN32MvUbpeuB/s6UXfkHDZ9N5jFyDDJnj83UTJ8n4N1jHIJu9VZ6Yi4/Ac8cfdvU8UIK9bIbfVXWbUYZUDsw==} + '@module-federation/runtime@0.18.0': + resolution: {integrity: sha512-+C4YtoSztM7nHwNyZl6dQKGUVJdsPrUdaf3HIKReg/GQbrt9uvOlUWo2NXMZ8vDAnf/QRrpSYAwXHmWDn9Obaw==} - '@module-federation/sdk@0.17.1': - resolution: {integrity: sha512-nlUcN6UTEi+3HWF+k8wPy7gH0yUOmCT+xNatihkIVR9REAnr7BUvHFGlPJmx7WEbLPL46+zJUbtQHvLzXwFhng==} + '@module-federation/sdk@0.18.0': + resolution: {integrity: sha512-Lo/Feq73tO2unjmpRfyyoUkTVoejhItXOk/h5C+4cistnHbTV8XHrW/13fD5e1Iu60heVdAhhelJd6F898Ve9A==} - '@module-federation/webpack-bundler-runtime@0.17.1': - resolution: {integrity: sha512-Swspdgf4PzcbvS9SNKFlBzfq8h/Qxwqjq/xRSqw1pqAZWondZQzwTTqPXhgrg0bFlz7qWjBS/6a8KuH/gRvGaQ==} + '@module-federation/webpack-bundler-runtime@0.18.0': + resolution: {integrity: sha512-TEvErbF+YQ+6IFimhUYKK3a5wapD90d90sLsNpcu2kB3QGT7t4nIluE25duXuZDVUKLz86tEPrza/oaaCWTpvQ==} '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} @@ -3350,11 +3490,14 @@ packages: '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} - '@napi-rs/wasm-runtime@1.0.3': - resolution: {integrity: sha512-rZxtMsLwjdXkMUGC3WwsPwLNVqVqnTJT6MNIB6e+5fhMcSCPP0AOsNWuMQ5mdCq6HNjs/ZeWAEchpqeprqBD2Q==} + '@napi-rs/wasm-runtime@0.2.4': + resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} - '@netlify/build-info@10.0.7': - resolution: {integrity: sha512-RZmSg0wekEUtPklRR8z6rsG5TPXRfT2EnamDBp94ZTUixDxDk07UCMBiz2hMKMg3qA6KTW6csuFNruvD3jw5Kw==} + '@napi-rs/wasm-runtime@1.0.4': + resolution: {integrity: sha512-+ZEtJPp8EF8h4kN6rLQECRor00H7jtDgBVtttIUoxuDkXLiQMaSBqju3LV/IEsMvqVG5pviUvR4jYhIA1xNm8w==} + + '@netlify/build-info@10.0.8': + resolution: {integrity: sha512-IotJn/+dizJpWIOJcSHiSFpIPpB0b2+s11Y0OekY3XFr58Wt3UGjbCNdO0cG4i3gsQEjzM2+lDQYgJ85TqPmSw==} engines: {node: '>=18.14.0'} hasBin: true @@ -3484,6 +3627,56 @@ packages: resolution: {integrity: sha512-aoNSbxtkePXUlbZB+anS1LqsJdctG5n3UVhfU47+CDdwMi6uNTBMF9gPcQRnqghQd2FGzcwwIFBruFMxjhBewg==} engines: {node: ^18.17.0 || >=20.5.0} + '@nx/nx-darwin-arm64@21.6.3': + resolution: {integrity: sha512-y/Wuo+FEky/ehah5UyERpQpUOm+KOc437zRwUrMGumNUFk73DaHVMmqABCZ1J5eqam60XgRZhq05qpRn+8dhtA==} + cpu: [arm64] + os: [darwin] + + '@nx/nx-darwin-x64@21.6.3': + resolution: {integrity: sha512-+9rogeP6EmlMBcUwflfOmFbQOWgAnJdupeJJuSenzWJCn/bE1C2iIGhuq4u4zajo2VceyN7uirlAWc8cQWCevw==} + cpu: [x64] + os: [darwin] + + '@nx/nx-freebsd-x64@21.6.3': + resolution: {integrity: sha512-jrewLpv/J84ze+sC+P0x1INVuXTWqU4qdZIPe0ItrRMDMmxiHdhm6LtHEEo5JYezqM/LgB87yjFE49Qsudtadw==} + cpu: [x64] + os: [freebsd] + + '@nx/nx-linux-arm-gnueabihf@21.6.3': + resolution: {integrity: sha512-VyMIKSp1N2ulA2wkAKIH+9a8k4tl67bH2wnvYROTRnfFykeczodfOxWeCAggS//1ccBM05pRxBklMt7fgAqV8w==} + cpu: [arm] + os: [linux] + + '@nx/nx-linux-arm64-gnu@21.6.3': + resolution: {integrity: sha512-l6/YZp5MJ5TYWbHoaR31lsqd4Ia2AnaGSACeNCUAsUsUNaa099nwmvFaKQEJxUX1aMpe4kHLyVbomK7ydEX+pg==} + cpu: [arm64] + os: [linux] + + '@nx/nx-linux-arm64-musl@21.6.3': + resolution: {integrity: sha512-klidxt4eiSxgLa1LW7YUHstm3qsptz+XD1+3w0ofX1rkdVkK1afrfcolzoeZ5nc4Av7MzZB0g0PoFTGHUIBkrw==} + cpu: [arm64] + os: [linux] + + '@nx/nx-linux-x64-gnu@21.6.3': + resolution: {integrity: sha512-B5ZvolVUIKKmacbZw1XD2nBIbebE2T6vBbMYq6kZP7PfSsfO5Y0HaWIsK8ulwCj35TPaEn9x/XbHJp5RakU7Ng==} + cpu: [x64] + os: [linux] + + '@nx/nx-linux-x64-musl@21.6.3': + resolution: {integrity: sha512-11L6SigPvjnIFbr4ivXlcH0fOPs55SvT8gkg2TOsSohKFY/Ze4O43NuoZe/7dilLjNgq8aWTbnbSuRK/kFGdBQ==} + cpu: [x64] + os: [linux] + + '@nx/nx-win32-arm64-msvc@21.6.3': + resolution: {integrity: sha512-hC84RvGp5YxGhQLitHcg3cohTy7sdsvIRIErq3EsJNlHIaUTZJAegno26sRpRE4Y/5G5RWqfzDCCERg9c3Askw==} + cpu: [arm64] + os: [win32] + + '@nx/nx-win32-x64-msvc@21.6.3': + resolution: {integrity: sha512-vcnVwrTsOVdN6ovKO6qFDHXYRa+lxKFLRGCUHvJvjTOddT1/xJqkL8NE4i1YDWZiCQCck0BizR3Kvs+N0DqHoQ==} + cpu: [x64] + os: [win32] + '@otplib/core@12.0.1': resolution: {integrity: sha512-4sGntwbA/AC+SbPhbsziRiD+jNDdIzsZ3JUyfZwjtKyc/wufl1pnSIaG4Uqx8ymPagujub0o92kgBnB89cuAMA==} @@ -3493,105 +3686,98 @@ packages: '@otplib/plugin-thirty-two@12.0.1': resolution: {integrity: sha512-MtT+uqRso909UkbrrYpJ6XFjj9D+x2Py7KjTO9JDPhL0bJUYVu5kFP4TFZW4NFAywrAtFRxOVY261u0qwb93gA==} - '@oxc-project/runtime@0.81.0': - resolution: {integrity: sha512-zm/LDVOq9FEmHiuM8zO4DWirv0VP2Tv2VsgaiHby9nvpq+FVrcqNYgv+TysLKOITQXWZj/roluTxFvpkHP0Iuw==} - engines: {node: '>=6.9.0'} - - '@oxc-project/types@0.81.0': - resolution: {integrity: sha512-CnOqkybZK8z6Gx7Wb1qF7AEnSzbol1WwcIzxYOr8e91LytGOjo0wCpgoYWZo8sdbpqX+X+TJayIzo4Pv0R/KjA==} - - '@oxc-resolver/binding-android-arm-eabi@11.6.2': - resolution: {integrity: sha512-b1h87/Nv5QPiT2xXg7RiSzJ0HsKSMf1U8vj6cUKdEDD1+KhDaXEH9xffB5QE54Df3SM4+wrYVy9NREil7/0C/Q==} + '@oxc-resolver/binding-android-arm-eabi@11.7.1': + resolution: {integrity: sha512-K0gF1mD6CYMAuX0dMWe6XW1Js00xCOBh/+ZAAJReQMa4+jmAk3bIeitsc8VnDthDbzOOKp3riizP3o/tBvNpgw==} cpu: [arm] os: [android] - '@oxc-resolver/binding-android-arm64@11.6.2': - resolution: {integrity: sha512-iIFsbWOQ42VJqOH0PkNs2+IcIjkmO7T+Gr27XDVXmaIWz3dkVYzYRlCtqGJOMIrjyUD52BtVXjej5s51i9Lgmg==} + '@oxc-resolver/binding-android-arm64@11.7.1': + resolution: {integrity: sha512-O1XEX/KxKX7baPgYHahP+3vT+9f4gasPA0px4DYrjy1mN9wWQqJPLLo/PO3cBw3qI3qRaaiAGT3eJSs8rKu8mA==} cpu: [arm64] os: [android] - '@oxc-resolver/binding-darwin-arm64@11.6.2': - resolution: {integrity: sha512-Lt/6pfDy2rtoxGmwFQOp4a9GxIW0CEUSQYofW1eQBpy/JpGM/AJgLTsg2nmgszODJpBOPO19GCIlzSZ7Et5cGg==} + '@oxc-resolver/binding-darwin-arm64@11.7.1': + resolution: {integrity: sha512-OSCJlXUTvGoal5dTMkdacmXL2R3YQ+97R7NMSdjkUVnh3TxvGBhoF9OebqY3PR7w2gQaY5LX+Ju+dYeHGBCGgw==} cpu: [arm64] os: [darwin] - '@oxc-resolver/binding-darwin-x64@11.6.2': - resolution: {integrity: sha512-UmGEeXk4/E3ubBWgoehVEQSBTEpl+UjZqY55sB+/5NHYFPMxY6PgG8y7dGZhyWPvwVW/pS/drnG3gptAjwF8cg==} + '@oxc-resolver/binding-darwin-x64@11.7.1': + resolution: {integrity: sha512-d0jKwK4r4Yw19xSijyt7wHZT77xh3v4GnJSbvEiPavLms27zqc//BqYJUSp9XgOTOkyFQ+oHno47JNiLTnsSnQ==} cpu: [x64] os: [darwin] - '@oxc-resolver/binding-freebsd-x64@11.6.2': - resolution: {integrity: sha512-p0Aj5aQKmyVamAtRio7Ct0Woh/iElvMxhAlbSWqJ9J/GH7lPG8H4R/iHWjURz+2iYPywqJICR8Eu1GDSApnzfA==} + '@oxc-resolver/binding-freebsd-x64@11.7.1': + resolution: {integrity: sha512-oNch5OpAnxFjukDZ5GJkuEDEPPYDirm10q2cJcbK0SETVM0rY+ou1cLqJAJC9R/dULbqGKC9fv2kuyuw9M6Fig==} cpu: [x64] os: [freebsd] - '@oxc-resolver/binding-linux-arm-gnueabihf@11.6.2': - resolution: {integrity: sha512-hDAF4FAkGxZsJCvutoBQ21LKcpUrvq5qAj3FpBTIzBaeIpupe6z0kHF9oIeTF8DJiLj4uEejaZXXtOSfJY50+A==} + '@oxc-resolver/binding-linux-arm-gnueabihf@11.7.1': + resolution: {integrity: sha512-ldUPUfV/0L56fTSfzUo86Bmgov8SAfau8Q4Y3WiAiQi6WHLA239abTZZViLZuXvrC+4RQF/kD0ySqKfBjW/X9g==} cpu: [arm] os: [linux] - '@oxc-resolver/binding-linux-arm-musleabihf@11.6.2': - resolution: {integrity: sha512-LTUs3PG9O3YjGPbguiM/fhaoWr19Yu/vqkBKXgvUo2Zpa7InHzZzurMQU9BAPr6A7gnIrKQ3W61h+RhQfSuUGQ==} + '@oxc-resolver/binding-linux-arm-musleabihf@11.7.1': + resolution: {integrity: sha512-M+ORXlPV0dXCHleqOYLjKHwxn9kDmcJqnJ7zGZ07vggaxOCnpM6zqyGS92YTTyeYre2AqO3Xrx1D4rnUeozI8g==} cpu: [arm] os: [linux] - '@oxc-resolver/binding-linux-arm64-gnu@11.6.2': - resolution: {integrity: sha512-VBZZ/5uYiFs+09h1royv78GAEPPy5Bsro53hPWMlJL/E9pPibaj3fCzZEAnrKSzVpvwf7+QSc5w7ZUrX3xAKpg==} + '@oxc-resolver/binding-linux-arm64-gnu@11.7.1': + resolution: {integrity: sha512-ukHZp9Vm07AlxqdOLFf8Bj4inzpt+ISbbODvwwHxX32GfcMLWYYJGAYWc13IGhWoElvWnI7D1M9ifDGyTNRGzg==} cpu: [arm64] os: [linux] - '@oxc-resolver/binding-linux-arm64-musl@11.6.2': - resolution: {integrity: sha512-x+LooeNXy3hhvDT7q29jLjh914OYX9YnrQbGT3ogep5EY/LLbUiG3LV8XSrWRqXD5132gea9SOYxmcpF9i6xTQ==} + '@oxc-resolver/binding-linux-arm64-musl@11.7.1': + resolution: {integrity: sha512-atkZ1OIt6t90kjQz1iqq6cN3OpfPG5zUJlO64Vd1ieYeqHRkOFeRgnWEobTePUHi34NlYr7mNZqIaAg7gjPUFg==} cpu: [arm64] os: [linux] - '@oxc-resolver/binding-linux-ppc64-gnu@11.6.2': - resolution: {integrity: sha512-+CluEbUpAaKvcNREZtUUiunqzo5o0/qp+6xoFkbDAwNhWIw1mtWCg1Di++Fa053Cah/Rx+dRMQteANoMBGCxxg==} + '@oxc-resolver/binding-linux-ppc64-gnu@11.7.1': + resolution: {integrity: sha512-HGgV4z3JwVF4Qvg2a1GhDnqn8mKLihy5Gp4rMfqNIAlERPSyIxo8oPQIL1XQKLYyyrkEEO99uwM+4cQGwhtbpQ==} cpu: [ppc64] os: [linux] - '@oxc-resolver/binding-linux-riscv64-gnu@11.6.2': - resolution: {integrity: sha512-OKWK/QvC6gECaeCNjfhuj0yiqMIisS0ewCRAmgT2pyxDwkNWgSm2wli+Tj/gpLjua2HjFDnDEcg0/dOoO6+xQg==} + '@oxc-resolver/binding-linux-riscv64-gnu@11.7.1': + resolution: {integrity: sha512-+vCO7iOR1s6VGefV02R2a702IASNWhSNm/MrR8RcWjKChmU0G+d1iC0oToUrGC4ovAEfstx2/O8EkROnfcLgrA==} cpu: [riscv64] os: [linux] - '@oxc-resolver/binding-linux-riscv64-musl@11.6.2': - resolution: {integrity: sha512-YtQ3hLvhVzan3boR44C0qu/jiTanaBAL9uTqs/S2tzOLfpO2PoTDbQDgADvOqYJDTJkOGiofJC2E1lJcRmpbXQ==} + '@oxc-resolver/binding-linux-riscv64-musl@11.7.1': + resolution: {integrity: sha512-3folNmS5gYNFy/9HYzLcdeThqAGvDJU0gQKrhHn7RPWQa58yZ0ZPpBMk6KRSSO61+wkchkL+0sdcLsoe5wZW8g==} cpu: [riscv64] os: [linux] - '@oxc-resolver/binding-linux-s390x-gnu@11.6.2': - resolution: {integrity: sha512-pcX/ih9QHrEWliiXJdZoX/bnfOlr5E0eOWSG2ew5U1HntGket/1AcdcA4UH3MQU/TrOLxxiKhGzeZv+fwewmmA==} + '@oxc-resolver/binding-linux-s390x-gnu@11.7.1': + resolution: {integrity: sha512-Ceo4z6g8vqPUKADROFL0b7MoyXlUdOBYCxTDu/fhd/5I3Ydk2S6bxkjJdzpBdlu+h2Z+eS9lTHFvkwkaORMPzw==} cpu: [s390x] os: [linux] - '@oxc-resolver/binding-linux-x64-gnu@11.6.2': - resolution: {integrity: sha512-LFYSgeYW11u4cQXzgIGthqCRAoLvl0IqbIMGeJLVt1tD7yrpTukfQynMzwP3vuTK5hmWgYc7NfK6G5+Zv/75hw==} + '@oxc-resolver/binding-linux-x64-gnu@11.7.1': + resolution: {integrity: sha512-QyFW5e43imQLxiBpCImhOiP4hY9coWGjroEm8elDqGNNaA7vXooaMQS2N3avMQawSaKhsb/3RemxaZ852XG38Q==} cpu: [x64] os: [linux] - '@oxc-resolver/binding-linux-x64-musl@11.6.2': - resolution: {integrity: sha512-IE13zwhg+XX9FVQHADbIe6RB2MgQeqyKdGyH67meGPgqCbLqT41K9qAm0k2uDlSswjLK8nhNe5Z+hhopBKzRRg==} + '@oxc-resolver/binding-linux-x64-musl@11.7.1': + resolution: {integrity: sha512-JhuCqCqktqQyQVc37V+eDiP3buCIuyCLpb92tUEyAP8nY3dy2b/ojMrH1ZNnJUlfY/67AqoZPL6nQGAB2WA3Sg==} cpu: [x64] os: [linux] - '@oxc-resolver/binding-wasm32-wasi@11.6.2': - resolution: {integrity: sha512-6nNW/wOKrptS9Rebf83aHvIsIiNcXOEWwUmhMR/4MHrH07zbcptBoZQcWO6362B9Y2lMN7dIF9v7brQcNDs63A==} + '@oxc-resolver/binding-wasm32-wasi@11.7.1': + resolution: {integrity: sha512-sMXm5Z2rfBwkCUespZBJCPhCVbgh/fpYQ23BQs0PmnvWoXrGQHWvnvg1p/GYmleN+nwe8strBjfutirZFiC5lA==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-resolver/binding-win32-arm64-msvc@11.6.2': - resolution: {integrity: sha512-YDR9UBOlKfFvWhVlyvNSlZjJ+B5kDpDn5K5s69JKW+Ke5ZYupVPTJPZ3GIMjbgj54fJQNFW+BiT4dL/EUGOHVQ==} + '@oxc-resolver/binding-win32-arm64-msvc@11.7.1': + resolution: {integrity: sha512-C/Sam1RJi/h/F618IB/H3pCOhTf+2ArdTqrqQolN8ARV35iWTSezgy6qPjQGj7aWn/9M5vgtCInfS2SwnkBJ4w==} cpu: [arm64] os: [win32] - '@oxc-resolver/binding-win32-ia32-msvc@11.6.2': - resolution: {integrity: sha512-8MqToY82sKT4po6bfb71LTiWW4PYXy/WNnzFIpkO88O1TtZV8ZsZ1kSeSwFazbqhV8H8nnxyJemqXNIqhtqNfw==} + '@oxc-resolver/binding-win32-ia32-msvc@11.7.1': + resolution: {integrity: sha512-iNRgJxOkfmxeq9DiF9S4jtw3vq5kkAm6dsP4RPxoAO/WsShPPHOSlTpOqyB8bSj5Bt9DBLRoI43XcNfDKgM+jA==} cpu: [ia32] os: [win32] - '@oxc-resolver/binding-win32-x64-msvc@11.6.2': - resolution: {integrity: sha512-y/xXcOwP9kp+3zRC8PiG5E4VMJeW59gwwRyxzh6DyMrKlcfikMFnuEbC2ZV0+mOffg7pkOOMKlNRK2aJC8gzkA==} + '@oxc-resolver/binding-win32-x64-msvc@11.7.1': + resolution: {integrity: sha512-MXS81efp8pu2MkjEPu+nDhgoyHwdWUygXYSzIh3gV2A8/qF0PVEzH+EpmKR7Pl8dEZIaG1YXA+CO6bmNZT8oSw==} cpu: [x64] os: [win32] @@ -3701,6 +3887,9 @@ packages: '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + '@posthog/core@1.0.2': + resolution: {integrity: sha512-hWk3rUtJl2crQK0WNmwg13n82hnTwB99BT99/XI5gZSvIlYZ1TPmMZE8H2dhJJ98J/rm9vYJ/UXNzw3RV5HTpQ==} + '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -4400,14 +4589,14 @@ packages: '@radix-ui/rect@1.1.1': resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} - '@react-aria/focus@3.21.0': - resolution: {integrity: sha512-7NEGtTPsBy52EZ/ToVKCu0HSelE3kq9qeis+2eEq90XSuJOMaDHUQrA7RC2Y89tlEwQB31bud/kKRi9Qme1dkA==} + '@react-aria/focus@3.21.1': + resolution: {integrity: sha512-hmH1IhHlcQ2lSIxmki1biWzMbGgnhdxJUM0MFfzc71Rv6YAzhlx4kX3GYn4VNcjCeb6cdPv4RZ5vunV4kgMZYQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/interactions@3.25.4': - resolution: {integrity: sha512-HBQMxgUPHrW8V63u9uGgBymkMfj6vdWbB0GgUJY49K9mBKMsypcHeWkWM6+bF7kxRO728/IK8bWDV6whDbqjHg==} + '@react-aria/interactions@3.25.5': + resolution: {integrity: sha512-EweYHOEvMwef/wsiEqV73KurX/OqnmbzKQa2fLxdULbec5+yDj6wVGaRHIzM4NiijIDe+bldEl5DG05CAKOAHA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 @@ -4418,8 +4607,8 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/utils@3.30.0': - resolution: {integrity: sha512-ydA6y5G1+gbem3Va2nczj/0G0W7/jUVo/cbN10WA5IizzWIwMP5qhFr7macgbKfHMkZ+YZC3oXnt2NNre5odKw==} + '@react-aria/utils@3.30.1': + resolution: {integrity: sha512-zETcbDd6Vf9GbLndO6RiWJadIZsBU2MMm23rBACXLmpRztkrIqPEb2RVdlLaq1+GklDx0Ii6PfveVjx+8S5U6A==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 @@ -4432,8 +4621,8 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/shared@3.31.0': - resolution: {integrity: sha512-ua5U6V66gDcbLZe4P2QeyNgPp4YWD1ymGA6j3n+s8CGExtrCPe64v+g4mvpT8Bnb985R96e4zFT61+m0YCwqMg==} + '@react-types/shared@3.32.0': + resolution: {integrity: sha512-t+cligIJsZYFMSPFMvsJMjzlzde06tZMOIOFa1OV5Z0BcMowrb2g4mB57j/9nP28iJIRYn10xCniQts+qadrqQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 @@ -4458,237 +4647,279 @@ packages: react-redux: optional: true - '@rolldown/binding-android-arm64@1.0.0-beta.32': - resolution: {integrity: sha512-Gs+313LfR4Ka3hvifdag9r44WrdKQaohya7ZXUXzARF7yx0atzFlVZjsvxtKAw1Vmtr4hB/RjUD1jf73SW7zDw==} - cpu: [arm64] - os: [android] - - '@rolldown/binding-darwin-arm64@1.0.0-beta.32': - resolution: {integrity: sha512-W8oMqzGcI7wKPXUtS3WJNXzbghHfNiuM1UBAGpVb+XlUCgYRQJd2PRGP7D3WGql3rR3QEhUvSyAuCBAftPQw6Q==} - cpu: [arm64] - os: [darwin] - - '@rolldown/binding-darwin-x64@1.0.0-beta.32': - resolution: {integrity: sha512-pM4c4sKUk37noJrnnDkJknLhCsfZu7aWyfe67bD0GQHfzAPjV16wPeD9CmQg4/0vv+5IfHYaa4VE536xbA+W0Q==} - cpu: [x64] - os: [darwin] - - '@rolldown/binding-freebsd-x64@1.0.0-beta.32': - resolution: {integrity: sha512-M8SUgFlYb5kJJWcFC8gUMRiX4WLFxPKMed3SJ2YrxontgIrEcpizPU8nLNVsRYEStoSfKHKExpQw3OP6fm+5bw==} - cpu: [x64] - os: [freebsd] - - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.32': - resolution: {integrity: sha512-FuQpbNC/hE//bvv29PFnk0AtpJzdPdYl5CMhlWPovd9g3Kc3lw9TrEPIbL7gRPUdhKAiq6rVaaGvOnXxsa0eww==} - cpu: [arm] - os: [linux] - - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.32': - resolution: {integrity: sha512-hRZygRlaGCjcNTNY9GV7dDI18sG1dK3cc7ujHq72LoDad23zFDUGMQjiSxHWK+/r92iMV+j2MiHbvzayxqynsg==} - cpu: [arm64] - os: [linux] - - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.32': - resolution: {integrity: sha512-HzgT6h+CXLs+GKAU0Wvkt3rvcv0CmDBsDjlPhh4GHysOKbG9NjpKYX2zvjx671E9pGbTvcPpwy7gGsy7xpu+8g==} - cpu: [arm64] - os: [linux] - - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.32': - resolution: {integrity: sha512-Ab/wbf6gdzphDbsg51UaxsC93foQ7wxhtg0SVCXd25BrV4MAJ1HoDtKN/f4h0maFmJobkqYub2DlmoasUzkvBg==} - cpu: [x64] - os: [linux] - - '@rolldown/binding-linux-x64-musl@1.0.0-beta.32': - resolution: {integrity: sha512-VoxqGEfh5A1Yx+zBp/FR5QwAbtzbuvky2SVc+ii4g1gLD4zww6mt/hPi5zG+b88zYPFBKHpxMtsz9cWqXU5V5Q==} - cpu: [x64] - os: [linux] - - '@rolldown/binding-openharmony-arm64@1.0.0-beta.32': - resolution: {integrity: sha512-qZ1ViyOUDGbiZrSAJ/FIAhYUElDfVxxFW6DLT/w4KeoZN3HsF4jmRP95mXtl51/oGrqzU9l9Q2f7/P4O/o2ZZA==} - cpu: [arm64] - os: [openharmony] - - '@rolldown/binding-wasm32-wasi@1.0.0-beta.32': - resolution: {integrity: sha512-hEkG3wD+f3wytV0lqwb/uCrXc4r4Ny/DWJFJPfQR3VeMWplhWGgSHNwZc2Q7k86Yi36f9NNzzWmrIuvHI9lCVw==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.32': - resolution: {integrity: sha512-k3MvDf8SiA7uP2ikP0unNouJ2YCrnwi7xcVW+RDgMp5YXVr3Xu6svmT3HGn0tkCKUuPmf+uy8I5uiHt5qWQbew==} - cpu: [arm64] - os: [win32] - - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.32': - resolution: {integrity: sha512-wAi/FxGh7arDOUG45UmnXE1sZUa0hY4cXAO2qWAjFa3f7bTgz/BqwJ7XN5SUezvAJPNkME4fEpInfnBvM25a0w==} - cpu: [ia32] - os: [win32] - - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.32': - resolution: {integrity: sha512-Ej0i4PZk8ltblZtzVK8ouaGUacUtxRmTm5S9794mdyU/tYxXjAJNseOfxrnHpMWKjMDrOKbqkPqJ52T9NR4LQQ==} - cpu: [x64] - os: [win32] - '@rolldown/pluginutils@1.0.0-beta.27': resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} - '@rolldown/pluginutils@1.0.0-beta.32': - resolution: {integrity: sha512-QReCdvxiUZAPkvp1xpAg62IeNzykOFA6syH2CnClif4YmALN1XKpB39XneL80008UbtMShthSVDKmrx05N1q/g==} - - '@rollup/rollup-android-arm-eabi@4.47.1': - resolution: {integrity: sha512-lTahKRJip0knffA/GTNFJMrToD+CM+JJ+Qt5kjzBK/sFQ0EWqfKW3AYQSlZXN98tX0lx66083U9JYIMioMMK7g==} + '@rollup/rollup-android-arm-eabi@4.50.1': + resolution: {integrity: sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.47.1': - resolution: {integrity: sha512-uqxkb3RJLzlBbh/bbNQ4r7YpSZnjgMgyoEOY7Fy6GCbelkDSAzeiogxMG9TfLsBbqmGsdDObo3mzGqa8hps4MA==} + '@rollup/rollup-android-arm-eabi@4.52.3': + resolution: {integrity: sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.50.1': + resolution: {integrity: sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.47.1': - resolution: {integrity: sha512-tV6reObmxBDS4DDyLzTDIpymthNlxrLBGAoQx6m2a7eifSNEZdkXQl1PE4ZjCkEDPVgNXSzND/k9AQ3mC4IOEQ==} + '@rollup/rollup-android-arm64@4.52.3': + resolution: {integrity: sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.50.1': + resolution: {integrity: sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.47.1': - resolution: {integrity: sha512-XuJRPTnMk1lwsSnS3vYyVMu4x/+WIw1MMSiqj5C4j3QOWsMzbJEK90zG+SWV1h0B1ABGCQ0UZUjti+TQK35uHQ==} + '@rollup/rollup-darwin-arm64@4.52.3': + resolution: {integrity: sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.50.1': + resolution: {integrity: sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.47.1': - resolution: {integrity: sha512-79BAm8Ag/tmJ5asCqgOXsb3WY28Rdd5Lxj8ONiQzWzy9LvWORd5qVuOnjlqiWWZJw+dWewEktZb5yiM1DLLaHw==} + '@rollup/rollup-darwin-x64@4.52.3': + resolution: {integrity: sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.50.1': + resolution: {integrity: sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.47.1': - resolution: {integrity: sha512-OQ2/ZDGzdOOlyfqBiip0ZX/jVFekzYrGtUsqAfLDbWy0jh1PUU18+jYp8UMpqhly5ltEqotc2miLngf9FPSWIA==} + '@rollup/rollup-freebsd-arm64@4.52.3': + resolution: {integrity: sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.50.1': + resolution: {integrity: sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.47.1': - resolution: {integrity: sha512-HZZBXJL1udxlCVvoVadstgiU26seKkHbbAMLg7680gAcMnRNP9SAwTMVet02ANA94kXEI2VhBnXs4e5nf7KG2A==} + '@rollup/rollup-freebsd-x64@4.52.3': + resolution: {integrity: sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.50.1': + resolution: {integrity: sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.47.1': - resolution: {integrity: sha512-sZ5p2I9UA7T950JmuZ3pgdKA6+RTBr+0FpK427ExW0t7n+QwYOcmDTK/aRlzoBrWyTpJNlS3kacgSlSTUg6P/Q==} + '@rollup/rollup-linux-arm-gnueabihf@4.52.3': + resolution: {integrity: sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.47.1': - resolution: {integrity: sha512-3hBFoqPyU89Dyf1mQRXCdpc6qC6At3LV6jbbIOZd72jcx7xNk3aAp+EjzAtN6sDlmHFzsDJN5yeUySvorWeRXA==} + '@rollup/rollup-linux-arm-musleabihf@4.50.1': + resolution: {integrity: sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.52.3': + resolution: {integrity: sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.50.1': + resolution: {integrity: sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.47.1': - resolution: {integrity: sha512-49J4FnMHfGodJWPw73Ve+/hsPjZgcXQGkmqBGZFvltzBKRS+cvMiWNLadOMXKGnYRhs1ToTGM0sItKISoSGUNA==} + '@rollup/rollup-linux-arm64-gnu@4.52.3': + resolution: {integrity: sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.47.1': - resolution: {integrity: sha512-4yYU8p7AneEpQkRX03pbpLmE21z5JNys16F1BZBZg5fP9rIlb0TkeQjn5du5w4agConCCEoYIG57sNxjryHEGg==} + '@rollup/rollup-linux-arm64-musl@4.50.1': + resolution: {integrity: sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.52.3': + resolution: {integrity: sha512-d3pY7LWno6SYNXRm6Ebsq0DJGoiLXTb83AIPCXl9fmtIQs/rXoS8SJxxUNtFbJ5MiOvs+7y34np77+9l4nfFMw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.52.3': + resolution: {integrity: sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.47.1': - resolution: {integrity: sha512-fAiq+J28l2YMWgC39jz/zPi2jqc0y3GSRo1yyxlBHt6UN0yYgnegHSRPa3pnHS5amT/efXQrm0ug5+aNEu9UuQ==} + '@rollup/rollup-linux-loongarch64-gnu@4.50.1': + resolution: {integrity: sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.50.1': + resolution: {integrity: sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.47.1': - resolution: {integrity: sha512-daoT0PMENNdjVYYU9xec30Y2prb1AbEIbb64sqkcQcSaR0zYuKkoPuhIztfxuqN82KYCKKrj+tQe4Gi7OSm1ow==} + '@rollup/rollup-linux-ppc64-gnu@4.52.3': + resolution: {integrity: sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.50.1': + resolution: {integrity: sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.47.1': - resolution: {integrity: sha512-JNyXaAhWtdzfXu5pUcHAuNwGQKevR+6z/poYQKVW+pLaYOj9G1meYc57/1Xv2u4uTxfu9qEWmNTjv/H/EpAisw==} + '@rollup/rollup-linux-riscv64-gnu@4.52.3': + resolution: {integrity: sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.47.1': - resolution: {integrity: sha512-U/CHbqKSwEQyZXjCpY43/GLYcTVKEXeRHw0rMBJP7fP3x6WpYG4LTJWR3ic6TeYKX6ZK7mrhltP4ppolyVhLVQ==} + '@rollup/rollup-linux-riscv64-musl@4.50.1': + resolution: {integrity: sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.52.3': + resolution: {integrity: sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.50.1': + resolution: {integrity: sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.47.1': - resolution: {integrity: sha512-uTLEakjxOTElfeZIGWkC34u2auLHB1AYS6wBjPGI00bWdxdLcCzK5awjs25YXpqB9lS8S0vbO0t9ZcBeNibA7g==} + '@rollup/rollup-linux-s390x-gnu@4.52.3': + resolution: {integrity: sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.50.1': + resolution: {integrity: sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.47.1': - resolution: {integrity: sha512-Ft+d/9DXs30BK7CHCTX11FtQGHUdpNDLJW0HHLign4lgMgBcPFN3NkdIXhC5r9iwsMwYreBBc4Rho5ieOmKNVQ==} + '@rollup/rollup-linux-x64-gnu@4.52.3': + resolution: {integrity: sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.47.1': - resolution: {integrity: sha512-N9X5WqGYzZnjGAFsKSfYFtAShYjwOmFJoWbLg3dYixZOZqU7hdMq+/xyS14zKLhFhZDhP9VfkzQnsdk0ZDS9IA==} + '@rollup/rollup-linux-x64-musl@4.50.1': + resolution: {integrity: sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.52.3': + resolution: {integrity: sha512-BCFkJjgk+WFzP+tcSMXq77ymAPIxsX9lFJWs+2JzuZTLtksJ2o5hvgTdIcZ5+oKzUDMwI0PfWzRBYAydAHF2Mw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openharmony-arm64@4.50.1': + resolution: {integrity: sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-openharmony-arm64@4.52.3': + resolution: {integrity: sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.50.1': + resolution: {integrity: sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.47.1': - resolution: {integrity: sha512-O+KcfeCORZADEY8oQJk4HK8wtEOCRE4MdOkb8qGZQNun3jzmj2nmhV/B/ZaaZOkPmJyvm/gW9n0gsB4eRa1eiQ==} + '@rollup/rollup-win32-arm64-msvc@4.52.3': + resolution: {integrity: sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.50.1': + resolution: {integrity: sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.47.1': - resolution: {integrity: sha512-CpKnYa8eHthJa3c+C38v/E+/KZyF1Jdh2Cz3DyKZqEWYgrM1IHFArXNWvBLPQCKUEsAqqKX27tTqVEFbDNUcOA==} + '@rollup/rollup-win32-ia32-msvc@4.52.3': + resolution: {integrity: sha512-of1iHkTQSo3kr6dTIRX6t81uj/c/b15HXVsPcEElN5sS859qHrOepM5p9G41Hah+CTqSh2r8Bm56dL2z9UQQ7g==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.52.3': + resolution: {integrity: sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ==} cpu: [x64] os: [win32] - '@rspack/binding-darwin-arm64@1.4.11': - resolution: {integrity: sha512-PrmBVhR8MC269jo6uQ+BMy1uwIDx0HAJYLQRQur8gXiehWabUBCRg/d4U9KR7rLzdaSScRyc5JWXR52T7/4MfA==} + '@rollup/rollup-win32-x64-msvc@4.50.1': + resolution: {integrity: sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.52.3': + resolution: {integrity: sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA==} + cpu: [x64] + os: [win32] + + '@rspack/binding-darwin-arm64@1.5.3': + resolution: {integrity: sha512-8R1uqr5E2CzRZjsA1QLXkD4xwcsiHmLJTIzCNj9QJ4+lCw6XgtPqpHZuk3zNROLayijEKwotGXJFHJIbgv1clA==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@1.4.11': - resolution: {integrity: sha512-YIV8Wzy+JY0SoSsVtN4wxFXOjzxxVPnVXNswrrfqVUTPr9jqGOFYUWCGpbt8lcCgfuBFm6zN8HpOsKm1xUNsVA==} + '@rspack/binding-darwin-x64@1.5.3': + resolution: {integrity: sha512-R4sb+scZbaBasyS+TQ6dRvv+f/2ZaZ0nXgY7t/ehcuGRvUz3S7FTJF/Mr/Ocxj5oVfb06thDAm+zaAVg+hsM9A==} cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@1.4.11': - resolution: {integrity: sha512-ms6uwECUIcu+6e82C5HJhRMHnfsI+l33v7XQezntzRPN0+sG3EpikEoT7SGbgt4vDwaWLR7wS20suN4qd5r3GA==} + '@rspack/binding-linux-arm64-gnu@1.5.3': + resolution: {integrity: sha512-NeDJJRNTLx8wOQT+si90th7cdt04I2F697Mp5w0a3Jf3XHAmsraBMn0phdLGWJoUWrrfVGthjgZDl5lcc1UHEA==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-arm64-musl@1.4.11': - resolution: {integrity: sha512-9evq0DOdxMN/H8VM8ZmyY9NSuBgILNVV6ydBfVPMHPx4r1E7JZGpWeKDegZcS5Erw3sS9kVSIxyX78L5PDzzKw==} + '@rspack/binding-linux-arm64-musl@1.5.3': + resolution: {integrity: sha512-M9utPq9s7zJkKapUlyfwwYT/rjZ+XM56NHQMUH9MVYgMJIl+66QURgWUXCAbuogxf1XWayUGQaZsgypoOrTG9A==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-x64-gnu@1.4.11': - resolution: {integrity: sha512-bHYFLxPPYBOSaHdQbEoCYGMQ1gOrEWj7Mro/DLfSHZi1a0okcQ2Q1y0i1DczReim3ZhLGNrK7k1IpFXCRbAobQ==} + '@rspack/binding-linux-x64-gnu@1.5.3': + resolution: {integrity: sha512-AsKqU4pIg0yYg1VvSEU0NspIwCexqXD2AYE0wujAAwBo0hOfbt5dl1JCK7idiZdIQvoFg86HbfGwdHIVcFLI0w==} cpu: [x64] os: [linux] - '@rspack/binding-linux-x64-musl@1.4.11': - resolution: {integrity: sha512-wrm4E7q2k4+cwT6Uhp6hIQ3eUe/YoaUttj6j5TqHYZX6YeLrNPtD9+ne6lQQ17BV8wmm6NZsmoFIJ5xIptpRhQ==} + '@rspack/binding-linux-x64-musl@1.5.3': + resolution: {integrity: sha512-0aHuvDef92pFZaHhk8Mp8RP9TfTzhQ+Pjqrc2ixRS/FeJA+jVB2CSaYlAPP4QrgXdmW7tewSxEw8hYhF9CNv/A==} cpu: [x64] os: [linux] - '@rspack/binding-wasm32-wasi@1.4.11': - resolution: {integrity: sha512-hiYxHZjaZ17wQtXyLCK0IdtOvMWreGVTiGsaHCxyeT+SldDG+r16bXNjmlqfZsjlfl1mkAqKz1dg+mMX28OTqw==} + '@rspack/binding-wasm32-wasi@1.5.3': + resolution: {integrity: sha512-Y7KN/ZRuWcFdjCzuZE0JsPwTqJAz1aipJsEOI3whBUj9Va2RwbR9r3vbW6OscS0Wm3rTJAfqH0xwx9x3GksnAw==} cpu: [wasm32] - '@rspack/binding-win32-arm64-msvc@1.4.11': - resolution: {integrity: sha512-+HF/mnjmTr8PC1dccRt1bkrD2tPDGeqvXC1BBLYd/Klq1VbtIcnrhfmvQM6KaXbiLcY9VWKzcZPOTmnyZ8TaHQ==} + '@rspack/binding-win32-arm64-msvc@1.5.3': + resolution: {integrity: sha512-I9SqobDwFwcIUNzr+VwvR2lUGqfarOpFDp7mZmA6+qO/V0yJxS0aqBIwNoZB/UFPbUh71OdmFavBzcTYE9vPSg==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@1.4.11': - resolution: {integrity: sha512-EU2fQGwrRfwFd/tcOInlD0jy6gNQE4Q3Ayj0Is+cX77sbhPPyyOz0kZDEaQ4qaN2VU8w4Hu/rrD7c0GAKLFvCw==} + '@rspack/binding-win32-ia32-msvc@1.5.3': + resolution: {integrity: sha512-pPSzSycfK03lLNxzwEkrRUfqETB7y0KEEbO0HcGX63EC9Ne4SILJfkkH55G0PO4aT/dfAosAlkf6V64ATgrHGA==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@1.4.11': - resolution: {integrity: sha512-1Nc5ZzWqfvE+iJc47qtHFzYYnHsC3awavXrCo74GdGip1vxtksM3G30BlvAQHHVtEmULotWqPbjZpflw/Xk9Ag==} + '@rspack/binding-win32-x64-msvc@1.5.3': + resolution: {integrity: sha512-He/GrFVrCZ4gBrHSxGd7mnwk9A9BDkAeZZEBnfK4n/HfXxU32WX5jiAGacFoJQYFLDOWTAcmxFad37TSs61zXw==} cpu: [x64] os: [win32] - '@rspack/binding@1.4.11': - resolution: {integrity: sha512-maGl/zRwnl0QVwkBCkgjn5PH20L9HdlRIdkYhEsfTepy5x2QZ0ti/0T49djjTJQrqb+S1i6wWQymMMMMMsxx6Q==} + '@rspack/binding@1.5.3': + resolution: {integrity: sha512-bWAKligHxelx3XxOgFmK6k1vR+ANxjBXLXTmgOiZxsJNScHJap3HYViXWJHKj5jvdXEvg9sC8TE7WNctCfa8iQ==} - '@rspack/core@1.4.11': - resolution: {integrity: sha512-JtKnL6p7Kc/YgWQJF3Woo4OccbgKGyT/4187W4dyex8BMkdQcbqCNIdi6dFk02hwQzxpOOxRSBI4hlGRbz7oYQ==} - engines: {node: '>=16.0.0'} + '@rspack/core@1.5.3': + resolution: {integrity: sha512-EMNXysJyqsfd2aVys5C7GDZKaLEcoN5qgs7ZFhWOWJGKgBqjdKTljyRTd4RRZV4fV6iAko/WrxnAxmzZNk8mjA==} + engines: {node: '>=18.12.0'} peerDependencies: '@swc/helpers': '>=0.5.1' peerDependenciesMeta: @@ -4705,8 +4936,8 @@ packages: '@rushstack/eslint-patch@1.12.0': resolution: {integrity: sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw==} - '@schematics/angular@20.3.2': - resolution: {integrity: sha512-bd23C6Map7Rfrryc8pZuyPPG8yQLCH863ISo32ARVwiAmBFgjfyNwqC5FsuqHWrYlTzZDzZUk5CjKp1SXxqqxg==} + '@schematics/angular@20.3.4': + resolution: {integrity: sha512-aIgeRAfSJdxVfsES521vNb6Nuy+Uei7xE85hD+mQHX+62bN7vJhM/tmMFIYS7UF8d0rRnMPiGEr2Rfx6Om5iPg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@sideway/address@4.1.5': @@ -4751,6 +4982,9 @@ packages: '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@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'} @@ -4771,6 +5005,9 @@ packages: '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + '@standard-schema/spec@1.0.0': + resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@svgr/babel-plugin-add-jsx-attribute@8.0.0': resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} engines: {node: '>=14'} @@ -4849,68 +5086,68 @@ packages: resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} engines: {node: '>=14'} - '@swc/core-darwin-arm64@1.13.4': - resolution: {integrity: sha512-CGbTu9dGBwgklUj+NAQAYyPjBuoHaNRWK4QXJRv1QNIkhtE27aY7QA9uEON14SODxsio3t8+Pjjl2Mzx1Pxf+g==} + '@swc/core-darwin-arm64@1.13.5': + resolution: {integrity: sha512-lKNv7SujeXvKn16gvQqUQI5DdyY8v7xcoO3k06/FJbHJS90zEwZdQiMNRiqpYw/orU543tPaWgz7cIYWhbopiQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.13.4': - resolution: {integrity: sha512-qLFwYmLrqHNCf+JO9YLJT6IP/f9LfbXILTaqyfluFLW1GCfJyvUrSt3CWaL2lwwyT1EbBh6BVaAAecXiJIo3vg==} + '@swc/core-darwin-x64@1.13.5': + resolution: {integrity: sha512-ILd38Fg/w23vHb0yVjlWvQBoE37ZJTdlLHa8LRCFDdX4WKfnVBiblsCU9ar4QTMNdeTBEX9iUF4IrbNWhaF1Ng==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.13.4': - resolution: {integrity: sha512-y7SeNIA9em3+smNMpr781idKuNwJNAqewiotv+pIR5FpXdXXNjHWW+jORbqQYd61k6YirA5WQv+Af4UzqEX17g==} + '@swc/core-linux-arm-gnueabihf@1.13.5': + resolution: {integrity: sha512-Q6eS3Pt8GLkXxqz9TAw+AUk9HpVJt8Uzm54MvPsqp2yuGmY0/sNaPPNVqctCX9fu/Nu8eaWUen0si6iEiCsazQ==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.13.4': - resolution: {integrity: sha512-u0c51VdzRmXaphLgghY9+B2Frzler6nIv+J788nqIh6I0ah3MmMW8LTJKZfdaJa3oFxzGNKXsJiaU2OFexNkug==} + '@swc/core-linux-arm64-gnu@1.13.5': + resolution: {integrity: sha512-aNDfeN+9af+y+M2MYfxCzCy/VDq7Z5YIbMqRI739o8Ganz6ST+27kjQFd8Y/57JN/hcnUEa9xqdS3XY7WaVtSw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.13.4': - resolution: {integrity: sha512-Z92GJ98x8yQHn4I/NPqwAQyHNkkMslrccNVgFcnY1msrb6iGSw5uFg2H2YpvQ5u2/Yt6CRpLIUVVh8SGg1+gFA==} + '@swc/core-linux-arm64-musl@1.13.5': + resolution: {integrity: sha512-9+ZxFN5GJag4CnYnq6apKTnnezpfJhCumyz0504/JbHLo+Ue+ZtJnf3RhyA9W9TINtLE0bC4hKpWi8ZKoETyOQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.13.4': - resolution: {integrity: sha512-rSUcxgpFF0L8Fk1CbUf946XCX1CRp6eaHfKqplqFNWCHv8HyqAtSFvgCHhT+bXru6Ca/p3sLC775SUeSWhsJ9w==} + '@swc/core-linux-x64-gnu@1.13.5': + resolution: {integrity: sha512-WD530qvHrki8Ywt/PloKUjaRKgstQqNGvmZl54g06kA+hqtSE2FTG9gngXr3UJxYu/cNAjJYiBifm7+w4nbHbA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.13.4': - resolution: {integrity: sha512-qY77eFUvmdXNSmTW+I1fsz4enDuB0I2fE7gy6l9O4koSfjcCxkXw2X8x0lmKLm3FRiINS1XvZSg2G+q4NNQCRQ==} + '@swc/core-linux-x64-musl@1.13.5': + resolution: {integrity: sha512-Luj8y4OFYx4DHNQTWjdIuKTq2f5k6uSXICqx+FSabnXptaOBAbJHNbHT/06JZh6NRUouaf0mYXN0mcsqvkhd7Q==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.13.4': - resolution: {integrity: sha512-xjPeDrOf6elCokxuyxwoskM00JJFQMTT2hTQZE24okjG3JiXzSFV+TmzYSp+LWNxPpnufnUUy/9Ee8+AcpslGw==} + '@swc/core-win32-arm64-msvc@1.13.5': + resolution: {integrity: sha512-cZ6UpumhF9SDJvv4DA2fo9WIzlNFuKSkZpZmPG1c+4PFSEMy5DFOjBSllCvnqihCabzXzpn6ykCwBmHpy31vQw==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.13.4': - resolution: {integrity: sha512-Ta+Bblc9tE9X9vQlpa3r3+mVnHYdKn09QsZ6qQHvuXGKWSS99DiyxKTYX2vxwMuoTObR0BHvnhNbaGZSV1VwNA==} + '@swc/core-win32-ia32-msvc@1.13.5': + resolution: {integrity: sha512-C5Yi/xIikrFUzZcyGj9L3RpKljFvKiDMtyDzPKzlsDrKIw2EYY+bF88gB6oGY5RGmv4DAX8dbnpRAqgFD0FMEw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.13.4': - resolution: {integrity: sha512-pHnb4QwGiuWs4Z9ePSgJ48HP3NZIno6l75SB8YLCiPVDiLhvCLKEjz/caPRsFsmet9BEP8e3bAf2MV8MXgaTSg==} + '@swc/core-win32-x64-msvc@1.13.5': + resolution: {integrity: sha512-YrKdMVxbYmlfybCSbRtrilc6UA8GF5aPmGKBdPvjrarvsmf4i7ZHGCEnLtfOMd3Lwbs2WUZq3WdMbozYeLU93Q==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.13.4': - resolution: {integrity: sha512-bCq2GCuKV16DSOOEdaRqHMm1Ok4YEoLoNdgdzp8BS/Hxxr/0NVCHBUgRLLRy/TlJGv20Idx+djd5FIDvsnqMaw==} + '@swc/core@1.13.5': + resolution: {integrity: sha512-WezcBo8a0Dg2rnR82zhwoR6aRNxeTGfK5QCD6TQ+kg3xx/zNT02s/0o+81h/3zhvFSB24NtqEr8FTw88O5W/JQ==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -4927,72 +5164,72 @@ packages: '@swc/helpers@0.5.17': resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} - '@swc/html-darwin-arm64@1.13.4': - resolution: {integrity: sha512-wmfLLmTKBEqGdRjmTWRkGTVGEOqXTiz8I8auyE1v8PfdkRxHkZGTwkQyxS84UBJ6OHnueWu6s5CSzr6AxawKZg==} + '@swc/html-darwin-arm64@1.13.5': + resolution: {integrity: sha512-5r4kGFQJm85EKOxSiP9pUT/9T1uq+tx0s5HRqfM/J1hVZmpIq2GudBVYS8CGklVWAVQ0tBHhBuP9SysAb/pcSA==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/html-darwin-x64@1.13.4': - resolution: {integrity: sha512-8dveUSVvgeuptK4EHG8PhKtMWfZ+x15CScPlc/LIDRAjQJZqltlvHUhdhyCGlzwG//WkK6Dx/xPNZcsq/HZ/wg==} + '@swc/html-darwin-x64@1.13.5': + resolution: {integrity: sha512-bCY0BSfxrmbKpInB/wZFX0DH4hgEQBwWLeKNwZhafIR5R/tvzuiIvb/VdkeKv8+26r2lkedbp+EreCFnDqQ2BQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/html-linux-arm-gnueabihf@1.13.4': - resolution: {integrity: sha512-BofA5PW5wHm1AYG+LbX+/U+3ulxPe5EbxWbVr1j5Dbbd4xH2H5PNEL4bU+9Ri5+/eZrG2VRQyfKY/OMidqzHaQ==} + '@swc/html-linux-arm-gnueabihf@1.13.5': + resolution: {integrity: sha512-o6TVZERfx7Z8btauYE7nHgMEPPIVemqAZL3ViUTuBK6asF9wfJ4m2YAbsrlzi8xaLgaizWvdUV7W1qE5yfOxPg==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/html-linux-arm64-gnu@1.13.4': - resolution: {integrity: sha512-cwZJjePCN8iblaR7qs/0gbH4rI11X0dfb7CiY93ILHcKqFSgmDdV18FpdsxA/lTjc/YX2ybg2HVnJWOfskrHPA==} + '@swc/html-linux-arm64-gnu@1.13.5': + resolution: {integrity: sha512-I/Ip5FtCfQ0wYg2MurytkEWPZrFB1SOPOeTNu4n+PAWDBjEcX3q+wgmMpzoGgVljvpEAQviJ+jzRyLW2tDDVHA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/html-linux-arm64-musl@1.13.4': - resolution: {integrity: sha512-tQkN1uDAj0sAo40ytuyN+s7c5VacT58D0DhYyVOLOiTR31kXXHRGacG4zHPwhY5J4GYITcRzXucU5mN6I9l3tw==} + '@swc/html-linux-arm64-musl@1.13.5': + resolution: {integrity: sha512-q8RTISYZuI5qOR8wEhox2oC+ZBo5IBaT6N43b5W+JRSIMKIsY7hVgC3gSI/tG4/6K14hv2QrqtAUFzVpLwtkyA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/html-linux-x64-gnu@1.13.4': - resolution: {integrity: sha512-EkmwVteKqZ+Q/JDLBKGkaFgL0fk0DlxlRbkcYggGtz7WPxt845ULMCjtsnCaiybjoTO+AamgMdZ62MI/TMn9UA==} + '@swc/html-linux-x64-gnu@1.13.5': + resolution: {integrity: sha512-YFU0/xVWzjAtg5V6QREW510O5/SNILrm18Vo2qF1bTktCB2eCjNSjCHOdicvPXTImEUlTp0ey6wO+QvEuvRFAg==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/html-linux-x64-musl@1.13.4': - resolution: {integrity: sha512-NUIZqwNZ1AaW/fDjiLdD1bVLw2VbRy4yGr6OgFAVOKvw5nkekxl8RTSJAlM+V1blnD9yLabW4qFmibqtgud7cQ==} + '@swc/html-linux-x64-musl@1.13.5': + resolution: {integrity: sha512-/ilgZm7umDQTea97FlE0pIcoHTAlICE+aSoVvLi+ONL3wr4g1ebwlgQ5Cxpgp5cxnKeghDYpqP/mFLh+Ztl8DQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/html-win32-arm64-msvc@1.13.4': - resolution: {integrity: sha512-HtYcJQWdf6wcKeDIJuXt82wO8Di4/rXO+X6EB4sGvp0akyovm4X8axs20jaOBG4ycqh72ZVCS+iXdxiJAJxDRQ==} + '@swc/html-win32-arm64-msvc@1.13.5': + resolution: {integrity: sha512-aLZvyEhzM6e7E53jelEp9ob/CrZ4K0atmsq+ctsaki8PNOu8shM03CEK1yQNCdZLR1kKkUgytyUVMEbhqz+IQQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/html-win32-ia32-msvc@1.13.4': - resolution: {integrity: sha512-nIoL/XZ4PW6c/+je3Qh43uaOlALyvU/FmdvaweVwTvg9L67iS9D4yK3VZw7d3W96stCp+dJGFxytWLS10t/oJw==} + '@swc/html-win32-ia32-msvc@1.13.5': + resolution: {integrity: sha512-51QXTdKMmgRriRmTzH0gkeyHLY4knJdAKEY1kPTBeguXCjgLIUX2nMQd24oe9ovJfPce0NCOmCSrODri8PiduQ==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/html-win32-x64-msvc@1.13.4': - resolution: {integrity: sha512-HJiFgrQ3TFSPUyJ1LTqTBfA5NWrYaCZ8evNhwcMo3F+SyBHlJ2OpArLu9q+1IMMJBu7SHviDnxbafFLJ6BskTA==} + '@swc/html-win32-x64-msvc@1.13.5': + resolution: {integrity: sha512-MnU1fMNZijEKkKTp12SKbNuH7rglgHhXSFZr+zjDhQmtVPEF4goCrBfoY8ZJ4j9FjOGyodFcYH6ulz95l9/QwQ==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/html@1.13.4': - resolution: {integrity: sha512-zRM7pM4kuWJNeDaapeVUAX6z6eWD2EVtDFYiXaFFMOfvhkTaFHAuCPTR/GuirwaLD2kDeLJRKaBI7zYAtIX3KA==} + '@swc/html@1.13.5': + resolution: {integrity: sha512-eVAyb3kk6wltz4FnWNRL06iYnqkQuTfpe5Fin9oLLmcpIYr2DgHcrGgeDJF4vJc9YZwACvEYmV8DC+1NfdzAJQ==} engines: {node: '>=14'} - '@swc/types@0.1.24': - resolution: {integrity: sha512-tjTMh3V4vAORHtdTprLlfoMptu1WfTZG9Rsca6yOKyNYsRr+MUXutKmliB17orgSZk5DpnDxs8GUdd/qwYxOng==} + '@swc/types@0.1.25': + resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} '@szmarczak/http-timer@5.0.1': resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} @@ -5006,17 +5243,17 @@ packages: '@tanem/svg-injector@10.1.68': resolution: {integrity: sha512-UkJajeR44u73ujtr5GVSbIlELDWD/mzjqWe54YMK61ljKxFcJoPd9RBSaO7xj02ISCWUqJW99GjrS+sVF0UnrA==} - '@tanstack/angular-query-experimental@5.85.6': - resolution: {integrity: sha512-HUdexlhqpIdToIxQtN328ZBtc3FpqPbKK/irrW7ZMgjMk6zdAQeVlULwN7yigP9FnjWqu11MiKOk22JGdGeu6A==} + '@tanstack/angular-query-experimental@5.87.4': + resolution: {integrity: sha512-pZ22N4Zz1BXrV1zkkmJHU5ascY11TYmqQETiihCDfD8KgbS7dXlGXwUIfIc8dllLKVs/Vi5y/SjzU1cjSGu7ZQ==} peerDependencies: '@angular/common': '>=16.0.0' '@angular/core': '>=16.0.0' - '@tanstack/query-core@5.85.6': - resolution: {integrity: sha512-hCj0TktzdCv2bCepIdfwqVwUVWb+GSHm1Jnn8w+40lfhQ3m7lCO7ADRUJy+2unxQ/nzjh2ipC6ye69NDW3l73g==} + '@tanstack/query-core@5.87.4': + resolution: {integrity: sha512-uNsg6zMxraEPDVO2Bn+F3/ctHi+Zsk+MMpcN8h6P7ozqD088F6mFY5TfGM7zuyIrL7HKpDyu6QHfLWiDxh3cuw==} - '@tanstack/query-devtools@5.84.0': - resolution: {integrity: sha512-fbF3n+z1rqhvd9EoGp5knHkv3p5B2Zml1yNRjh7sNXklngYI5RVIWUrUjZ1RIcEoscarUb0+bOvIs5x9dwzOXQ==} + '@tanstack/query-devtools@5.87.3': + resolution: {integrity: sha512-LkzxzSr2HS1ALHTgDmJH5eGAVsSQiuwz//VhFW5OqNk0OQ+Fsqba0Tsf+NzWRtXYvpgUqwQr4b2zdFZwxHcGvg==} '@tanstack/react-virtual@3.13.12': resolution: {integrity: sha512-Gd13QdxPSukP8ZrkbgS2RwoZseTTbQPLnQEn7HY/rqtM+8Zt95f7xKC7N0EsKs7aoz0WzZ+fditZux+F8EzYxA==} @@ -5068,6 +5305,9 @@ packages: '@tybys/wasm-util@0.10.0': resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} + '@tybys/wasm-util@0.9.0': + resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + '@types/acorn@4.0.6': resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} @@ -5200,12 +5440,6 @@ packages: '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -5310,14 +5544,14 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@18.19.123': - resolution: {integrity: sha512-K7DIaHnh0mzVxreCR9qwgNxp3MH9dltPNIEddW9MYUlcKAzm+3grKNSTe2vCJHI1FaLpvpL5JGJrz1UZDKYvDg==} + '@types/node@18.19.124': + resolution: {integrity: sha512-hY4YWZFLs3ku6D2Gqo3RchTd9VRCcrjqp/I0mmohYeUVA5Y8eCXKJEasHxLAJVZRJuQogfd1GiJ9lgogBgKeuQ==} - '@types/node@22.17.2': - resolution: {integrity: sha512-gL6z5N9Jm9mhY+U2KXZpteb+09zyffliRkZyZOHODGATyC5B1Jt/7TzuuiLkFsSUMLbS1OLmlj/E+/3KF4Q/4w==} + '@types/node@22.18.1': + resolution: {integrity: sha512-rzSDyhn4cYznVG+PCzGe1lwuMYJrcBS1fc3JqSa2PvtABwWo+dZ1ij5OVok3tqfpEBCBoaR4d7upFJk73HRJDw==} - '@types/node@24.3.0': - resolution: {integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==} + '@types/node@24.3.1': + resolution: {integrity: sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -5328,9 +5562,6 @@ packages: '@types/parse5@6.0.3': resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} - '@types/pg@8.15.5': - resolution: {integrity: sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==} - '@types/prismjs@1.26.5': resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} @@ -5372,8 +5603,8 @@ packages: '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} - '@types/semver@7.7.0': - resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==} + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} '@types/send@0.17.5': resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} @@ -5387,8 +5618,8 @@ packages: '@types/sinonjs__fake-timers@8.1.1': resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} - '@types/sizzle@2.3.9': - resolution: {integrity: sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w==} + '@types/sizzle@2.3.10': + resolution: {integrity: sha512-TC0dmN0K8YcWEAEfiPi5gJP14eJe30TTGjkvek3iM/1NdHHsdCA/Td6GvNndMOo/iSnIsZ4HuuhrYPDAmbxzww==} '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} @@ -5445,23 +5676,23 @@ packages: typescript: optional: true - '@typescript-eslint/eslint-plugin@8.40.0': - resolution: {integrity: sha512-w/EboPlBwnmOBtRbiOvzjD+wdiZdgFeo17lkltrtn7X37vagKKWJABvyfsJXTlHe6XBzugmYgd4A4nW+k8Mixw==} + '@typescript-eslint/eslint-plugin@8.43.0': + resolution: {integrity: sha512-8tg+gt7ENL7KewsKMKDHXR1vm8tt9eMxjJBYINf6swonlWgkYn5NwyIgXpbbDxTNU5DgpDFfj95prcTq2clIQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.35.1 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.40.0': - resolution: {integrity: sha512-jCNyAuXx8dr5KJMkecGmZ8KI61KBUhkCob+SD+C+I5+Y1FWI2Y3QmY4/cxMCC5WAsZqoEtEETVhUiUMIGCf6Bw==} + '@typescript-eslint/parser@8.43.0': + resolution: {integrity: sha512-B7RIQiTsCBBmY+yW4+ILd6mF5h1FUwJsVvpqkrgpszYifetQ2Ke+Z4u6aZh0CblkUGIdR59iYVyXqqZGkZ3aBw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.40.0': - resolution: {integrity: sha512-/A89vz7Wf5DEXsGVvcGdYKbVM9F7DyFXj52lNYUDS1L9yJfqjW/fIp5PgMuEJL/KeqVTe2QSbXAGUZljDUpArw==} + '@typescript-eslint/project-service@8.43.0': + resolution: {integrity: sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -5478,12 +5709,12 @@ packages: resolution: {integrity: sha512-+Ncj0Q6DT8ZHYNp8h5RndW4Siv52kiPpHEz/i8Sj2rh2y8ZCc5pKSHSslk+eZi0Bdj+/+swNOmDNcL2CrlaEnA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.40.0': - resolution: {integrity: sha512-y9ObStCcdCiZKzwqsE8CcpyuVMwRouJbbSrNuThDpv16dFAj429IkM6LNb1dZ2m7hK5fHyzNcErZf7CEeKXR4w==} + '@typescript-eslint/scope-manager@8.43.0': + resolution: {integrity: sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.40.0': - resolution: {integrity: sha512-jtMytmUaG9d/9kqSl/W3E3xaWESo4hFDxAIHGVW/WKKtQhesnRIJSAJO6XckluuJ6KDB5woD1EiqknriCtAmcw==} + '@typescript-eslint/tsconfig-utils@8.43.0': + resolution: {integrity: sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -5508,8 +5739,8 @@ packages: typescript: optional: true - '@typescript-eslint/type-utils@8.40.0': - resolution: {integrity: sha512-eE60cK4KzAc6ZrzlJnflXdrMqOBaugeukWICO2rB0KNvwdIMaEaYiywwHMzA1qFpTxrLhN9Lp4E/00EgWcD3Ow==} + '@typescript-eslint/type-utils@8.43.0': + resolution: {integrity: sha512-qaH1uLBpBuBBuRf8c1mLJ6swOfzCXryhKND04Igr4pckzSEW9JX5Aw9AgW00kwfjWJF0kk0ps9ExKTfvXfw4Qg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -5527,8 +5758,8 @@ packages: resolution: {integrity: sha512-xpU1rMQfnnNZxpHN6YUfr18sGOMcpC9hvt54fupcU6N1qMCagEtkRt1U15x086oJAgAITJGa67454ffAoCxv/w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.40.0': - resolution: {integrity: sha512-ETdbFlgbAmXHyFPwqUIYrfc12ArvpBhEVgGAxVYSwli26dn8Ko+lIo4Su9vI9ykTZdJn+vJprs/0eZU0YMAEQg==} + '@typescript-eslint/types@8.43.0': + resolution: {integrity: sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@5.62.0': @@ -5558,8 +5789,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.40.0': - resolution: {integrity: sha512-k1z9+GJReVVOkc1WfVKs1vBrR5MIKKbdAjDTPvIK3L8De6KbFfPFt6BKpdkdk7rZS2GtC/m6yI5MYX+UsuvVYQ==} + '@typescript-eslint/typescript-estree@8.43.0': + resolution: {integrity: sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -5582,8 +5813,8 @@ packages: peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/utils@8.40.0': - resolution: {integrity: sha512-Cgzi2MXSZyAUOY+BFwGs17s7ad/7L+gKt6Y8rAVVWS+7o6wrjeFN4nVfTpbE25MNcxyJ+iYUXflbs2xR9h4UBg==} + '@typescript-eslint/utils@8.43.0': + resolution: {integrity: sha512-S1/tEmkUeeswxd0GGcnwuVQPFWo8NzZTOMxCvw8BX7OMxnNae+i8Tm7REQen/SwUIPoPqfKn7EaZ+YLpiB3k9g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -5601,8 +5832,8 @@ packages: resolution: {integrity: sha512-ej06rfct0kalfJgIR8nTR7dF1mgfF83hkylrYas7IAElHfgw4zx99BUGa6VrnHZ1PkxdJBp5PgcO2FmmlOoaRQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.40.0': - resolution: {integrity: sha512-8CZ47QwalyRjsypfwnbI3hKy5gJDPmrkLjkgMxhi0+DZZ2QNx2naS6/hWoVYUHU7LU2zleF68V9miaVZvhFfTA==} + '@typescript-eslint/visitor-keys@8.43.0': + resolution: {integrity: sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -5801,32 +6032,40 @@ packages: '@yarnpkg/lockfile@1.1.0': resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} - '@zag-js/core@1.21.7': - resolution: {integrity: sha512-mFaygzRqRty/tKo6bAvSioFQevFXJ/9LEKUovObEzriNBgrIFwxdrRhHmua26fpFimZJQeVZk5qePBKLy6xvGQ==} + '@yarnpkg/parsers@3.0.2': + resolution: {integrity: sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==} + engines: {node: '>=18.12.0'} - '@zag-js/dom-query@1.21.7': - resolution: {integrity: sha512-3oU6tbauM3D4558CCHULgbw872YHZ537pHDOdr9Q3rzUgFkEvSlxKpDAomsCwLSmgSkeUxLikiep8WV1ZXaYDw==} + '@zag-js/core@1.22.1': + resolution: {integrity: sha512-4BNrwO9Tadq2Z0d2xSSQs4O/o3OarEHzXM2FQqx46vrwSE57qUghnZex429ZQ51fuk8AL5Lowt26a9JxE9sVPg==} - '@zag-js/focus-trap@1.21.7': - resolution: {integrity: sha512-I4coXNhqtnkBOv7HFu3YOUceK+t3wzb1Fj1farFhkLmAMEnF45wpmdUHdXIZD2IUO8KusvHybMNfAgiB3PncKQ==} + '@zag-js/dom-query@1.22.1': + resolution: {integrity: sha512-mtvGj2z3rkl40mkjd+QwoOHvxqpiOkY4mtVjzNzgzcbVtUN63Mz7giW8OZB+KLy37hwFX0B8JfiQncU8IOHNpw==} - '@zag-js/presence@1.21.7': - resolution: {integrity: sha512-0yuQx7182boWzwZ28rTL3dtryIfBixggoSdH/6772O1eiAw/M3bWV5F+Zs/4ox0AqViznrM9/08m4S0OV7BsGw==} + '@zag-js/focus-trap@1.22.1': + resolution: {integrity: sha512-6W9cG0LEVICt0srVfWSpamKzsnRxXMdl3gV+GQ5HvkCCk1Sw6Io4tc3QvSSvaWcfyhM07feerOsa2ah7qiT/ig==} - '@zag-js/react@1.21.7': - resolution: {integrity: sha512-gnJcR+IYXhFG1LTHCC7XXnhWqD8wP7zutmJEncNltNLNAgGzv6OMcIwMJIIYL55Rb/okNjpGDnDMMH5JuxkR3A==} + '@zag-js/presence@1.22.1': + resolution: {integrity: sha512-9+pkKnjcHbNxk/80HzLdDjpiKGV/I208wAe0Njmej6q6Z79ED6cb7tXiOgAS7w/ZLWxwQW7B9oMJ3guVflBHwQ==} + + '@zag-js/react@1.22.1': + resolution: {integrity: sha512-TcIKkNo9EFel+d92nb7104voKJNDiMkqq9nn7Ozq/TE8A62JPf5zk8y8zqoxTbGDTTk+tDjW7Sm1IKb4r6rX4w==} peerDependencies: react: '>=18.0.0' react-dom: '>=18.0.0' - '@zag-js/store@1.21.7': - resolution: {integrity: sha512-NSB3B9w1jZRr+j4RiSsEIavq0Q5KVcuQtITAst6XvBdrr4ZXkezOw6OA9MovGeaGrgUfRhzCHruMDiNHUtlUcQ==} + '@zag-js/store@1.22.1': + resolution: {integrity: sha512-KrMWi/Fa4cqOjx2zDSMIu6vztFYik+V3K6VPWRVONM4FkboLpTqAEayzwgTTNqMK9iYYZIYjhiPhAVLW9iLuBg==} - '@zag-js/types@1.21.7': - resolution: {integrity: sha512-9LfflObSapy3SNiB2EX8bXjf0nqj/QJka7y3wftkXfNYI/U3urp7hL4d3MQlcChuu+NCxkpG3GnjkhCLFsWkHw==} + '@zag-js/types@1.22.1': + resolution: {integrity: sha512-lvpDSMR96e7H7TdwOiVpMzj6css5Ydix1nBi7BlmjME6v5OPR0KZwVDGD6h5UtTeVjPq8dPaqM8TJWw+QwbQSw==} - '@zag-js/utils@1.21.7': - resolution: {integrity: sha512-XARSLvc/W/3EGJ+q203ulcvFWCCebLu2wvBNZwSLtL1Zk/9TpmmPXye3/m6GYMeo5vVOrVM/qJ/653PnJFJSYw==} + '@zag-js/utils@1.22.1': + resolution: {integrity: sha512-VXY4gjHaTENHW+wjnKKENZ2jcaW0vnG2a5lYEMuZR4dpNCKH217yFr/bCNrI44y2s1W3LWhWmpEjfZluP6udYg==} + + '@zkochan/js-yaml@0.0.7': + resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} + hasBin: true abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} @@ -5850,11 +6089,10 @@ packages: resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} engines: {node: '>= 0.6'} - acorn-import-phases@1.0.4: - resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} - engines: {node: '>=10.13.0'} + acorn-import-attributes@1.9.5: + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} peerDependencies: - acorn: ^8.14.0 + acorn: ^8 acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -5942,6 +6180,10 @@ packages: resolution: {integrity: sha512-Y+moNhsqgLmvJdgTsO4GZNgsaDWv8AOGAaPeIeHKlDn/XunoAqYbA+XNpBd1dW8GOXAUDyxC9Rxc7AV4kpFcIg==} engines: {node: '>= 14.0.0'} + algoliasearch@5.37.0: + resolution: {integrity: sha512-y7gau/ZOQDqoInTQp0IwTOjkrHc4Aq4R8JgpmCleFwiLl+PbN2DMWoDUWZnrK8AhNJwT++dn28Bt4NZYNLAmuA==} + engines: {node: '>= 14.0.0'} + allof-merge@0.6.7: resolution: {integrity: sha512-slvjkM56OdeVkm1tllrnaumtSHwqyHrepXkAe6Am+CW4WdbHkNqdOKPF6cvY3/IouzvXk1BoLICT5LY7sCoFGw==} @@ -5970,8 +6212,8 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} - ansi-escapes@7.0.0: - resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + ansi-escapes@7.1.0: + resolution: {integrity: sha512-YdhtCd19sKRKfAAUsrcC1wzm4JuzJoiX4pOJqIoW2qmKj5WzG/dL8uUJ0361zaXtHqK7gEhOwtAtz7t3Yq3X5g==} engines: {node: '>=18'} ansi-html-community@0.0.8: @@ -5983,8 +6225,8 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.2.0: - resolution: {integrity: sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} ansi-styles@4.3.0: @@ -5995,14 +6237,10 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} - ansis@4.1.0: - resolution: {integrity: sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==} - engines: {node: '>=14'} - any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -6150,6 +6388,9 @@ packages: axios@1.11.0: resolution: {integrity: sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==} + axios@1.12.2: + resolution: {integrity: sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==} + axobject-query@4.0.0: resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} @@ -6157,8 +6398,13 @@ packages: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} - b4a@1.6.7: - resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} + b4a@1.7.1: + resolution: {integrity: sha512-ZovbrBV0g6JxK5cGUF1Suby1vLfKjv4RWi8IxoaO/Mon8BDD9I21RxjHFtgQ+kskJqLAVyQZly3uMBui+vhc8Q==} + peerDependencies: + react-native-b4a: '*' + peerDependenciesMeta: + react-native-b4a: + optional: true babel-loader@9.2.1: resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} @@ -6180,6 +6426,16 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-corejs3@0.8.7: + resolution: {integrity: sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.5.5: + resolution: {integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-regenerator@0.6.5: resolution: {integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==} peerDependencies: @@ -6194,8 +6450,8 @@ packages: bare-events@2.6.1: resolution: {integrity: sha512-AuTJkq9XmE6Vk0FJVNq5QxETrSA/vKHarWVBG5l/JbdCL1prJemiyJqUS0jrlXO0MftuPq4m3YVYhoNc5+aE/g==} - bare-fs@4.2.1: - resolution: {integrity: sha512-mELROzV0IhqilFgsl1gyp48pnZsaV9xhQapHLDsvn4d4ZTfbFhcghQezl7FTEDNBcGqLUnNI3lUlm6ecrLWdFA==} + bare-fs@4.3.3: + resolution: {integrity: sha512-W+ZpiQx1i0dm073So22v3jColDtvyqSTyUYEnooYwKcl+SHuqnQGKyuHdwigQffWJV5ghKtskVH7ydAkBVKQZQ==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -6221,6 +6477,9 @@ packages: bare-events: optional: true + bare-url@2.2.2: + resolution: {integrity: sha512-g+ueNGKkrjMazDG3elZO1pNs3HY5+mMmOet1jtKyhOaCnkLzitxf26z7hoAEkDNgdNmnc1KIlt/dw6Po6xZMpA==} + base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -6300,8 +6559,8 @@ packages: browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - browserslist@4.25.3: - resolution: {integrity: sha512-cDGv1kkDI4/0e5yON9yM5G/0A5u8sf5TnmdX5C9qHzI9PPu++sQ9zjm1k9NiOrf3riY4OkK0zSGqfvJyJsgCBQ==} + browserslist@4.25.4: + resolution: {integrity: sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -6399,8 +6658,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001736: - resolution: {integrity: sha512-ImpN5gLEY8gWeqfLUyEF4b7mYWcYoR2Si1VhnrbM4JizRFmfGaAQ12PhNykq6nvI4XvKLrsp8Xde74D5phJOSw==} + caniuse-lite@1.0.30001741: + resolution: {integrity: sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==} case-anything@2.1.13: resolution: {integrity: sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==} @@ -6412,16 +6671,16 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@5.3.1: - resolution: {integrity: sha512-48af6xm9gQK8rhIcOxWwdGzIervm8BVTin+yRp9HEvU20BtVZ2lBywlIJBzwaDtvo0FvjeL7QdCADoUoqIbV3A==} + chai@5.3.3: + resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} engines: {node: '>=18'} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.6.0: - resolution: {integrity: sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} char-regex@1.0.2: @@ -6526,6 +6785,10 @@ packages: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} + cli-spinners@2.6.1: + resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} + engines: {node: '>=6'} + cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} @@ -6689,8 +6952,8 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - concurrently@9.2.0: - resolution: {integrity: sha512-IsB/fiXTupmagMW4MNp2lx2cdSN2FfZq78vF90LBB+zZHArbIQZjQtzXCiXnvTxCZSvXanTqFLWBjw2UkLx1SQ==} + concurrently@9.2.1: + resolution: {integrity: sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==} engines: {node: '>=18'} hasBin: true @@ -6762,8 +7025,8 @@ packages: copy-anything@2.0.6: resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} - copy-text-to-clipboard@3.2.0: - resolution: {integrity: sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==} + copy-text-to-clipboard@3.2.1: + resolution: {integrity: sha512-3am6cw+WOicd0+HyzhC4kYS02wHJUiVQXmAADxfUARKsHBkWl1Vl3QQEiILlSs8YcPS/C0+y/urCNEYQk+byWA==} engines: {node: '>=12'} copy-to-clipboard@3.3.3: @@ -6841,8 +7104,8 @@ packages: peerDependencies: postcss: ^8.0.9 - css-has-pseudo@7.0.2: - resolution: {integrity: sha512-nzol/h+E0bId46Kn2dQH5VElaknX2Sr0hFuB/1EomdC7j+OISt2ZzK7EHX9DZDY53WbIVAR7FYKSO2XnSf07MQ==} + css-has-pseudo@7.0.3: + resolution: {integrity: sha512-oG+vKuGyqe/xvEMoxAQrhi7uY16deJR3i7wwhBerVrGQKSqUC5GiOVxTpM9F9B9hw0J+eKeOWLH7E9gZ1Dr5rA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -7169,8 +7432,8 @@ packages: dateformat@4.6.3: resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} - dayjs@1.11.13: - resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + dayjs@1.11.18: + resolution: {integrity: sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==} debounce@1.2.1: resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} @@ -7462,6 +7725,14 @@ packages: resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} engines: {node: '>=12'} + dotenv-expand@11.0.7: + resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} + engines: {node: '>=12'} + + dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} + dotenv@16.6.1: resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} @@ -7488,11 +7759,11 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.207: - resolution: {integrity: sha512-mryFrrL/GXDTmAtIVMVf+eIXM09BBPlO5IQ7lUyKmK8d+A4VpRGG+M3ofoVef6qyF8s60rJei8ymlJxjUA8Faw==} + electron-to-chromium@1.5.217: + resolution: {integrity: sha512-Pludfu5iBxp9XzNl0qq2G87hdD17ZV7h5T4n6rQXDi3nCyloBV3jreE9+8GC6g4X/5yxqVgXEURpcLtM0WS4jA==} - emoji-regex@10.4.0: - resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + emoji-regex@10.5.0: + resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -7536,6 +7807,10 @@ packages: resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} engines: {node: '>=10.13.0'} + enquirer@2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} + enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} @@ -7963,8 +8238,8 @@ packages: fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - fast-uri@3.0.6: - resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} @@ -8148,6 +8423,12 @@ packages: from@0.1.7: resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} + front-matter@4.0.2: + resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -8222,8 +8503,8 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.3.0: - resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + get-east-asian-width@1.4.0: + resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} engines: {node: '>=18'} get-intrinsic@1.3.0: @@ -8512,8 +8793,8 @@ packages: resolution: {integrity: sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==} engines: {node: ^18.17.0 || >=20.5.0} - hosted-git-info@9.0.0: - resolution: {integrity: sha512-gEf705MZLrDPkbbhi8PnoO4ZwYgKoNL+ISZ3AjZMht2r3N5tuTwncyDi6Fv2/qDnMmZxgs0yI8WDOyR8q3G+SQ==} + hosted-git-info@9.0.1: + resolution: {integrity: sha512-FLN0k/CSIHgTZr46YbK5od55jQEzWNGCNl8AufispkkTwcIpnxG1NMH52+O7lu0z3mI9bjPfGzcO7MhDesQ1kw==} engines: {node: ^20.17.0 || >=22.9.0} hpack.js@2.1.6: @@ -8723,8 +9004,8 @@ packages: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - index-to-position@1.1.0: - resolution: {integrity: sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==} + index-to-position@1.2.0: + resolution: {integrity: sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==} engines: {node: '>=18'} infima@0.2.0-alpha.45: @@ -8878,8 +9159,8 @@ packages: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} - is-fullwidth-code-point@5.0.0: - resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + is-fullwidth-code-point@5.1.0: + resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} engines: {node: '>=18'} is-generator-function@1.1.0: @@ -8913,8 +9194,8 @@ packages: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} - is-npm@6.0.0: - resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} + is-npm@6.1.0: + resolution: {integrity: sha512-O2z4/kNgyjhQwVR1Wpkbfc19JIhggF97NZNCpWTnjH7kVcZMUrnut9XSN7txI7VdyIYk5ZatOq3zvSuWpU8hoA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} is-number-object@1.1.1: @@ -9127,6 +9408,10 @@ packages: jasmine-spec-reporter@7.0.0: resolution: {integrity: sha512-OtC7JRasiTcjsaCBPtMO0Tl8glCejM4J4/dNuOJdA8lBjz4PmWjYQ6pzb0uzpBNAWJMDudYuj9OdXJWqM2QTJg==} + jest-diff@30.1.2: + resolution: {integrity: sha512-4+prq+9J61mOVXCa4Qp8ZjavdxzrWQXrI80GNxP8f4tkI2syPuPrJgdRPZRrfUTRvIoUwcmNLbqEJy9W800+NQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-util@29.7.0: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9150,6 +9435,10 @@ packages: joi@17.13.3: resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + joi@18.0.1: + resolution: {integrity: sha512-IiQpRyypSnLisQf3PwuN2eIHAsAIGZIrLZkd4zdvIar2bDyhM91ubRjy8a3eYablXsh9BeI/c7dmPYHca5qtoA==} + engines: {node: '>= 20'} + jose@5.10.0: resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==} @@ -9242,6 +9531,9 @@ packages: engines: {node: '>=6'} hasBin: true + jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} @@ -9323,8 +9615,8 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - knip@5.63.0: - resolution: {integrity: sha512-xIFIi/uvLW0S/AQqwggN6UVRKBOQ1Ya7jBfQzllswZplr2si5C616/5wCcWc/eoi1PLJgPgJQLxqYq1aiYpqwg==} + knip@5.63.1: + resolution: {integrity: sha512-wSznedUAzcU4o9e0O2WPqDnP7Jttu8cesq/R23eregRY8QYQ9NLJ3aGt9fadJfRzPBoU4tRyutwVQu6chhGDlA==} engines: {node: '>=18.18.0'} hasBin: true peerDependencies: @@ -9362,9 +9654,9 @@ packages: resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} engines: {node: '> 0.8'} - less@4.4.0: - resolution: {integrity: sha512-kdTwsyRuncDfjEs0DlRILWNvxhDG/Zij4YLO4TMJgDLW+8OzpfkdPnRgrsRuY1o+oaxJGWsps5f/RVBgGmmN0w==} - engines: {node: '>=14'} + less@4.1.3: + resolution: {integrity: sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==} + engines: {node: '>=6'} hasBin: true leven@3.1.0: @@ -9375,8 +9667,8 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - libphonenumber-js@1.12.13: - resolution: {integrity: sha512-QZXnR/OGiDcBjF4hGk0wwVrPcZvbSSyzlvkjXv5LFfktj7O2VZDrt4Xs8SgR/vOFco+qk1i8J43ikMXZoTrtPw==} + libphonenumber-js@1.12.15: + resolution: {integrity: sha512-TMDCtIhWUDHh91wRC+wFuGlIzKdPzaTUHHVrIZ3vPUEoNaXFLrsIQ1ZpAeZeXApIF6rvDksMTvjrIQlLKaYxqQ==} lightningcss-darwin-arm64@1.30.1: resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} @@ -9453,6 +9745,10 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lines-and-columns@2.0.3: + resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lint-staged@15.5.1: resolution: {integrity: sha512-6m7u8mue4Xn6wK6gZvSCQwBvMBR36xfY24nF5bMTf2MHDYG6S3yhJuOgdYVw99hsjyDt2d4z168b3naI8+NWtQ==} engines: {node: '>=18.12.0'} @@ -9601,8 +9897,8 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@3.2.0: - resolution: {integrity: sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==} + loupe@3.2.1: + resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -9614,8 +9910,8 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.1.0: - resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} + lru-cache@11.2.1: + resolution: {integrity: sha512-r8LA6i4LP4EeWOhqBaZZjDWwehd1xUJPCJd9Sv300H0ZmcUER4+JPh7bqqZeqs1o5pgtgvXm+d9UGrB5zZGDiQ==} engines: {node: 20 || >=22} lru-cache@5.1.1: @@ -9642,6 +9938,9 @@ packages: magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + magic-string@0.30.19: + resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} + make-dir-cli@4.0.0: resolution: {integrity: sha512-9BBC2CaGH0hUAx+tQthgxqYypwkTs+7oXmPdiWyDpHGo4mGB3kdudUKQGivK59C1aJroo4QLlXF7Chu/kdhYiw==} engines: {node: '>=18'} @@ -9659,8 +9958,8 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} - make-dir@5.0.0: - resolution: {integrity: sha512-G0yBotnlWVonPClw+tq+xi4K7DZC9n96HjGTBDdHkstAVsDkfZhi1sTvZypXLpyQTbISBkDtK0E5XlUqDsShQg==} + make-dir@5.1.0: + resolution: {integrity: sha512-IfpFq6UM39dUNiphpA6uDezNx/AvWyhwfICWPR3t1VspkgkMZrL+Rk1RbN1bx+aeNYwOrqGJgEgV3yotk+ZUVw==} engines: {node: '>=18'} make-fetch-happen@14.0.3: @@ -9685,11 +9984,6 @@ packages: engines: {node: '>= 18'} hasBin: true - marked@16.2.0: - resolution: {integrity: sha512-LbbTuye+0dWRz2TS9KJ7wsnD4KAtpj0MVkWc90XvBa6AslXsT0hTBVH5k32pcSyHH1fst9XEFJunXHktVy0zlg==} - engines: {node: '>= 20'} - hasBin: true - material-colors@1.2.6: resolution: {integrity: sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==} @@ -9858,8 +10152,8 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - mermaid@11.10.0: - resolution: {integrity: sha512-oQsFzPBy9xlpnGxUqLbVY8pvknLlsNIJ0NWwi8SUJjhbP1IT0E0o1lfhU4iYV3ubpy+xkzkaOyDUQMn06vQElQ==} + mermaid@11.11.0: + resolution: {integrity: sha512-9lb/VNkZqWTRjVgCV+l1N+t4kyi94y+l5xrmBmbbxZYkfRl5hEDaTPMOcaWKCl1McG8nBEaMlWwkcAEEgjhBgg==} methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} @@ -10170,6 +10464,10 @@ packages: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -10213,8 +10511,8 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} - minizlib@3.0.2: - resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} mitt@3.0.1: @@ -10229,16 +10527,11 @@ packages: engines: {node: '>=10'} hasBin: true - mkdirp@3.0.1: - resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} - engines: {node: '>=10'} - hasBin: true + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} - mlly@1.7.4: - resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} - - mocha@11.7.1: - resolution: {integrity: sha512-5EK+Cty6KheMS/YLPPMJC64g5V61gIR25KsRItHw6x4hEKT6Njp1n9LOlH4gpevuwMVS66SXaBBpg+RWZkza4A==} + mocha@11.7.2: + resolution: {integrity: sha512-lkqVJPmqqG/w5jmmFtiRvtA2jkDyNVUcefFJKb2uyX4dekk8Okgqop3cgbFiaIvj8uCRJVTP5x9dfxGyXm2jvQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true @@ -10428,11 +10721,14 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true + node-machine-id@1.1.12: + resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} + node-readfiles@0.2.0: resolution: {integrity: sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA==} - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + node-releases@2.0.20: + resolution: {integrity: sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA==} nodemon@3.1.10: resolution: {integrity: sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==} @@ -10461,8 +10757,8 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} - normalize-url@8.0.2: - resolution: {integrity: sha512-Ee/R3SyN4BuynXcnTaekmaVdbDAEiNrHqjQIA37mHU8G9pf7aaAD4ZX3XjBLo6rsdcxA/gtkcNYZLt30ACgynw==} + normalize-url@8.1.0: + resolution: {integrity: sha512-X06Mfd/5aKsRHc0O0J5CUedwnPmnDtLF2+nq+KN9KSDlJHkPuh0JUviWjEWMe0SW/9TDdSLVPuk7L5gGTIA1/w==} engines: {node: '>=14.16'} npm-bundled@4.0.0: @@ -10485,8 +10781,8 @@ packages: resolution: {integrity: sha512-+t2etZAGcB7TbbLHfDwooV9ppB2LhhcT6A+L9cahsf9mEUAoQ6CktLEVvEnpD0N5CkX7zJqnPGaFtoQDy9EkHQ==} engines: {node: ^20.17.0 || >=22.9.0} - npm-packlist@10.0.1: - resolution: {integrity: sha512-vaC03b2PqJA6QqmwHi1jNU8fAPXEnnyv4j/W4PVfgm24C4/zZGSVut3z0YUeN0WIFCo1oGOL02+6LbvFK7JL4Q==} + npm-packlist@10.0.2: + resolution: {integrity: sha512-DrIWNiWT0FTdDRjGOYfEEZUNe1IzaSZ+up7qBTKnrQDySpdmuOQvytrqQlpK5QrCA4IThMvL4wTumqaa1ZvVIQ==} engines: {node: ^20.17.0 || >=22.9.0} npm-pick-manifest@10.0.0: @@ -10521,8 +10817,20 @@ packages: peerDependencies: webpack: ^4.0.0 || ^5.0.0 - nwsapi@2.2.21: - resolution: {integrity: sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==} + nwsapi@2.2.22: + resolution: {integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==} + + nx@21.6.1: + resolution: {integrity: sha512-sVz4kXPxhHm+jyLpRlQblHP3ltlkivUc2psl6WpEbS3Z1pV5cMg6H/GDLohLt5VyQ8tgqKNA+mXQqljVUh8hWg==} + hasBin: true + peerDependencies: + '@swc-node/register': ^1.8.0 + '@swc/core': ^1.3.85 + peerDependenciesMeta: + '@swc-node/register': + optional: true + '@swc/core': + optional: true oas-kit-common@1.0.8: resolution: {integrity: sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==} @@ -10641,6 +10949,10 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + ora@5.3.0: + resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} + engines: {node: '>=10'} + ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} @@ -10662,8 +10974,8 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} - oxc-resolver@11.6.2: - resolution: {integrity: sha512-9lXwNQUzgPs5UgjKig5+EINESHYJCFsRQLzPyjWLc7sshl6ZXvXPiQfEGqUIs2fsd9SdV/jYmL7IuaK43cL0SA==} + oxc-resolver@11.7.1: + resolution: {integrity: sha512-PzbEnD6NKTCFVKkUZtmQcX69ajdfM33RqI5kyb8mH9EdIqEUS00cWSXN0lsgYrtdTMzwo0EKKoH7hnGg6EDraQ==} p-cancelable@3.0.0: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} @@ -10894,40 +11206,6 @@ packages: performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - pg-cloudflare@1.2.7: - resolution: {integrity: sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==} - - pg-connection-string@2.9.1: - resolution: {integrity: sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==} - - pg-int8@1.0.1: - resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} - engines: {node: '>=4.0.0'} - - pg-pool@3.10.1: - resolution: {integrity: sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==} - peerDependencies: - pg: '>=8.0' - - pg-protocol@1.10.3: - resolution: {integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==} - - pg-types@2.2.0: - resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} - engines: {node: '>=4'} - - pg@8.16.3: - resolution: {integrity: sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==} - 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==} @@ -11024,8 +11302,8 @@ packages: peerDependencies: postcss: ^8.4.6 - postcss-color-functional-notation@7.0.10: - resolution: {integrity: sha512-k9qX+aXHBiLTRrWoCJuUFI6F1iF6QJQUXNVWJVSbqZgj57jDhBlOvD8gNUGl35tgqDivbGLhZeW3Ongz4feuKA==} + postcss-color-functional-notation@7.0.11: + resolution: {integrity: sha512-zfqoUSaHMko/k2PA9xnaydVTHqYv5vphq5Q2AHcG/dCdv/OkHYWcVWfVTBKZ526uzT8L7NghuvSw3C9PxlKnLg==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -11108,8 +11386,8 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-double-position-gradients@6.0.2: - resolution: {integrity: sha512-7qTqnL7nfLRyJK/AHSVrrXOuvDDzettC+wGoienURV8v2svNbu6zJC52ruZtHaO6mfcagFmuTGFdzRsJKB3k5Q==} + postcss-double-position-gradients@6.0.3: + resolution: {integrity: sha512-Dl0Z9sdbMwrPslgOaGBZRGo3TASmmgTcqcUODr82MTYyJk6devXZM6MlQjpQKMJqlLJ6oL1w78U7IXFdPA5+ug==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -11155,8 +11433,8 @@ packages: peerDependencies: postcss: ^8.4.21 - postcss-lab-function@7.0.10: - resolution: {integrity: sha512-tqs6TCEv9tC1Riq6fOzHuHcZyhg4k3gIAMB8GGY/zA1ssGdm6puHMVE7t75aOSoFg7UD2wyrFFhbldiCMyyFTQ==} + postcss-lab-function@7.0.11: + resolution: {integrity: sha512-BEA4jId8uQe1gyjZZ6Bunb6ZsH2izks+v25AxQJDBtigXCjTLmCPWECwQpLTtcxH589MVxhs/9TAmRC6lUEmXQ==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -11368,8 +11646,8 @@ packages: peerDependencies: postcss: ^8.4 - postcss-preset-env@10.2.4: - resolution: {integrity: sha512-q+lXgqmTMdB0Ty+EQ31SuodhdfZetUlwCA/F0zRcd/XdxjzI+Rl2JhZNz5US2n/7t9ePsvuhCnEN4Bmu86zXlA==} + postcss-preset-env@10.3.1: + resolution: {integrity: sha512-8ZOOWVwQ0iMpfEYkYo+U6W7fE2dJ/tP6dtEFwPJ66eB5JjnFupfYh+y6zo+vWDO72nGhKOVdxwhTjfzcSNRg4Q==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -11456,24 +11734,8 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} - postgres-array@2.0.0: - resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} - engines: {node: '>=4'} - - postgres-bytea@1.0.0: - resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} - 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'} - - posthog-js@1.260.1: - resolution: {integrity: sha512-DD8ZSRpdScacMqtqUIvMFme8lmOWkOvExG8VvjONE7Cm3xpRH5xXpfrwMJE4bayTGWKMx4ij6SfphK6dm/o2ug==} + posthog-js@1.262.0: + resolution: {integrity: sha512-RPbm+0qLVsgKQEN3KjfYAK+0qOwBPT28RHDg4WIstN8/z2m6PczMqSirOIXSqbvDwSCQQQRPTKS6fSurevqJMA==} peerDependencies: '@rrweb/types': 2.0.0-alpha.17 rrweb-snapshot: 2.0.0-alpha.17 @@ -11601,6 +11863,10 @@ packages: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + pretty-format@30.0.5: + resolution: {integrity: sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + pretty-time@1.1.0: resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} engines: {node: '>=4'} @@ -11822,8 +12088,8 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react-json-view-lite@2.4.2: - resolution: {integrity: sha512-m7uTsXDgPQp8R9bJO4HD/66+i218eyQPAb+7/dGQpwg8i4z2afTFqtHJPQFHvJfgDCjGQ1HSGlL3HtrZDa3Tdg==} + react-json-view-lite@2.5.0: + resolution: {integrity: sha512-tk7o7QG9oYyELWHL8xiMQ8x4WzjCzbWNyig3uexmkLb54r8jO0yH3WCWx8UZS0c49eSA4QUmG5caiRJ8fAn58g==} engines: {node: '>=18'} peerDependencies: react: ^18.0.0 || ^19.0.0 @@ -12019,8 +12285,8 @@ packages: reftools@1.1.9: resolution: {integrity: sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==} - regenerate-unicode-properties@10.2.0: - resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + regenerate-unicode-properties@10.2.2: + resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} engines: {node: '>=4'} regenerate@1.4.2: @@ -12030,8 +12296,8 @@ packages: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} - regexpu-core@6.2.0: - resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} + regexpu-core@6.3.1: + resolution: {integrity: sha512-DzcswPr252wEr7Qz8AyAVbfyBDKLoYp6eRA1We2Fa9qirRFSdtkP5sHr3yglDKy2BbA0fd2T+j/CUSKes3FeVQ==} engines: {node: '>=4'} registry-auth-token@5.1.0: @@ -12087,8 +12353,8 @@ packages: remark-gfm@4.0.1: resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} - remark-mdx@3.1.0: - resolution: {integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==} + remark-mdx@3.1.1: + resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} remark-parse@10.0.2: resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} @@ -12156,6 +12422,10 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} + resolve@1.22.10: resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} engines: {node: '>= 0.4'} @@ -12205,12 +12475,13 @@ packages: robust-predicates@3.0.2: resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} - rolldown@1.0.0-beta.32: - resolution: {integrity: sha512-vxI2sPN07MMaoYKlFrVva5qZ1Y7DAZkgp7MQwTnyHt4FUMz9Sh+YeCzNFV9JYHI6ZNwoGWLCfCViE3XVsRC1cg==} + rollup@4.50.1: + resolution: {integrity: sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rollup@4.47.1: - resolution: {integrity: sha512-iasGAQoZ5dWDzULEUX3jiW0oB1qyFOepSyDyoU6S/OhVlDIwj5knI5QBa5RRQ0sK7OE0v+8VIi2JuV+G+3tfNg==} + rollup@4.52.3: + resolution: {integrity: sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -12292,6 +12563,11 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + sass@1.92.1: + resolution: {integrity: sha512-ffmsdbwqb3XeyR8jJR6KelIXARM9bFQe8A6Q3W4Klmwy5Ckd5gz7jgUNHo4UOqutU5Sk1DtKLbpDP0nLCg1xqQ==} + engines: {node: '>=14.0.0'} + hasBin: true + sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} @@ -12518,8 +12794,8 @@ packages: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} - slice-ansi@7.1.0: - resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + slice-ansi@7.1.2: + resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} engines: {node: '>=18'} slugify@1.6.6: @@ -12612,10 +12888,6 @@ 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'} - split@0.3.3: resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} @@ -12647,8 +12919,8 @@ packages: stackframe@1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - start-server-and-test@2.0.13: - resolution: {integrity: sha512-G42GCIUjBv/nDoK+QsO+nBdX2Cg3DSAKhSic2DN0GLlK4Q+63TkOeN1cV9PHZKnVOzDKGNVZGCREjpvAIAOdiQ==} + start-server-and-test@2.1.0: + resolution: {integrity: sha512-yJg/GR9z7+8qxhZqDPmCEKbU/BO/zpyXUZGLmY1Nv4rmJJDC89NnzIEUWXEG4e1J4MRFoDF50eJK8bGHKrSdlg==} engines: {node: '>=16'} hasBin: true @@ -12740,8 +13012,8 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} strip-bom-string@1.0.0: @@ -12860,13 +13132,17 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - tapable@2.2.2: - resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + tapable@2.2.3: + resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} engines: {node: '>=6'} tar-fs@3.1.0: resolution: {integrity: sha512-5Mty5y/sOF1YWj1J6GiBodjlDc05CUR8PKXrsnFAiSG0xA+GHeWLovaZPYUDXkH/1iKRf2+M5+OrRgzC7O9b7w==} + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} @@ -12874,8 +13150,8 @@ packages: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} - tar@7.4.3: - resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + tar@7.5.1: + resolution: {integrity: sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==} engines: {node: '>=18'} tcomb-validation@3.4.1: @@ -12904,8 +13180,8 @@ packages: uglify-js: optional: true - terser@5.43.1: - resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==} + terser@5.44.0: + resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==} engines: {node: '>=10'} hasBin: true @@ -13081,6 +13357,10 @@ packages: tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -13119,40 +13399,6 @@ packages: tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - turbo-darwin-64@2.5.5: - resolution: {integrity: sha512-RYnTz49u4F5tDD2SUwwtlynABNBAfbyT2uU/brJcyh5k6lDLyNfYKdKmqd3K2ls4AaiALWrFKVSBsiVwhdFNzQ==} - cpu: [x64] - os: [darwin] - - turbo-darwin-arm64@2.5.5: - resolution: {integrity: sha512-Tk+ZeSNdBobZiMw9aFypQt0DlLsWSFWu1ymqsAdJLuPoAH05qCfYtRxE1pJuYHcJB5pqI+/HOxtJoQ40726Btw==} - cpu: [arm64] - os: [darwin] - - turbo-linux-64@2.5.5: - resolution: {integrity: sha512-2/XvMGykD7VgsvWesZZYIIVXMlgBcQy+ZAryjugoTcvJv8TZzSU/B1nShcA7IAjZ0q7OsZ45uP2cOb8EgKT30w==} - cpu: [x64] - os: [linux] - - turbo-linux-arm64@2.5.5: - resolution: {integrity: sha512-DW+8CjCjybu0d7TFm9dovTTVg1VRnlkZ1rceO4zqsaLrit3DgHnN4to4uwyuf9s2V/BwS3IYcRy+HG9BL596Iw==} - cpu: [arm64] - os: [linux] - - turbo-windows-64@2.5.5: - resolution: {integrity: sha512-q5p1BOy8ChtSZfULuF1BhFMYIx6bevXu4fJ+TE/hyNfyHJIfjl90Z6jWdqAlyaFLmn99X/uw+7d6T/Y/dr5JwQ==} - cpu: [x64] - os: [win32] - - turbo-windows-arm64@2.5.5: - resolution: {integrity: sha512-AXbF1KmpHUq3PKQwddMGoKMYhHsy5t1YBQO8HZ04HLMR0rWv9adYlQ8kaeQJTko1Ay1anOBFTqaxfVOOsu7+1Q==} - cpu: [arm64] - os: [win32] - - turbo@2.5.5: - resolution: {integrity: sha512-eZ7wI6KjtT1eBqCnh2JPXWNUAxtoxxfi6VdBdZFvil0ychCOTxbm7YLRBi1JSt7U3c+u3CLxpoPxLdvr/Npr3A==} - hasBin: true - tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} @@ -13254,8 +13500,8 @@ packages: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} - unicode-match-property-value-ecmascript@2.2.0: - resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + unicode-match-property-value-ecmascript@2.2.1: + resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} engines: {node: '>=4'} unicode-property-aliases-ecmascript@2.1.0: @@ -13549,8 +13795,8 @@ packages: vite: optional: true - vite@5.4.19: - resolution: {integrity: sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==} + vite@5.4.20: + resolution: {integrity: sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -13673,16 +13919,16 @@ packages: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} - wait-on@7.2.0: - resolution: {integrity: sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==} - engines: {node: '>=12.0.0'} - hasBin: true - wait-on@8.0.4: resolution: {integrity: sha512-8f9LugAGo4PSc0aLbpKVCVtzayd36sSCp4WLpVngkYq6PK87H79zt77/tlCU6eKCLqR46iFvcl0PU5f+DmtkwA==} engines: {node: '>=12.0.0'} hasBin: true + wait-on@9.0.1: + resolution: {integrity: sha512-noeCAI+XbqWMXY23sKril0BSURhuLYarkVXwJv1uUWwoojZJE7pmX3vJ7kh7SZaNgPGzfsCSQIZM/AGvu0Q9pA==} + engines: {node: '>=20.0.0'} + hasBin: true + walk-up-path@4.0.0: resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} engines: {node: 20 || >=22} @@ -13763,8 +14009,8 @@ packages: resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} engines: {node: '>=10.13.0'} - webpack@5.101.3: - resolution: {integrity: sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==} + webpack@5.95.0: + resolution: {integrity: sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -13857,8 +14103,8 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - workerpool@9.3.3: - resolution: {integrity: sha512-slxCaKbYjEdFT/o2rH9xS1hf4uRDch1w7Uo+apxhZ+sf/1d9e0ZVkn42kPNGP2dgjIx6YFvSevj0zHvbWe2jdw==} + workerpool@9.3.4: + resolution: {integrity: sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==} wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} @@ -13872,8 +14118,8 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} - wrap-ansi@9.0.0: - resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} engines: {node: '>=18'} wrappy@1.0.2: @@ -13941,10 +14187,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@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} @@ -14059,33 +14301,40 @@ snapshots: '@algolia/requester-fetch': 5.35.0 '@algolia/requester-node-http': 5.35.0 - '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.3)': + '@algolia/abtesting@1.3.0': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.35.0)(algoliasearch@5.35.0) + '@algolia/client-common': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 + + '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.37.0)(algoliasearch@5.37.0)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.37.0)(algoliasearch@5.37.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.37.0)(algoliasearch@5.37.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.3)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.37.0)(algoliasearch@5.37.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.35.0)(algoliasearch@5.35.0) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.37.0)(algoliasearch@5.37.0) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)': + '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.37.0)(algoliasearch@5.37.0)': dependencies: - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.35.0)(algoliasearch@5.35.0) - '@algolia/client-search': 5.35.0 - algoliasearch: 5.35.0 + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.37.0)(algoliasearch@5.37.0) + '@algolia/client-search': 5.37.0 + algoliasearch: 5.37.0 - '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)': + '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.37.0)(algoliasearch@5.37.0)': dependencies: - '@algolia/client-search': 5.35.0 - algoliasearch: 5.35.0 + '@algolia/client-search': 5.37.0 + algoliasearch: 5.37.0 '@algolia/client-abtesting@5.35.0': dependencies: @@ -14094,6 +14343,13 @@ snapshots: '@algolia/requester-fetch': 5.35.0 '@algolia/requester-node-http': 5.35.0 + '@algolia/client-abtesting@5.37.0': + dependencies: + '@algolia/client-common': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 + '@algolia/client-analytics@5.35.0': dependencies: '@algolia/client-common': 5.35.0 @@ -14101,8 +14357,17 @@ snapshots: '@algolia/requester-fetch': 5.35.0 '@algolia/requester-node-http': 5.35.0 + '@algolia/client-analytics@5.37.0': + dependencies: + '@algolia/client-common': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 + '@algolia/client-common@5.35.0': {} + '@algolia/client-common@5.37.0': {} + '@algolia/client-insights@5.35.0': dependencies: '@algolia/client-common': 5.35.0 @@ -14110,6 +14375,13 @@ snapshots: '@algolia/requester-fetch': 5.35.0 '@algolia/requester-node-http': 5.35.0 + '@algolia/client-insights@5.37.0': + dependencies: + '@algolia/client-common': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 + '@algolia/client-personalization@5.35.0': dependencies: '@algolia/client-common': 5.35.0 @@ -14117,6 +14389,13 @@ snapshots: '@algolia/requester-fetch': 5.35.0 '@algolia/requester-node-http': 5.35.0 + '@algolia/client-personalization@5.37.0': + dependencies: + '@algolia/client-common': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 + '@algolia/client-query-suggestions@5.35.0': dependencies: '@algolia/client-common': 5.35.0 @@ -14124,6 +14403,13 @@ snapshots: '@algolia/requester-fetch': 5.35.0 '@algolia/requester-node-http': 5.35.0 + '@algolia/client-query-suggestions@5.37.0': + dependencies: + '@algolia/client-common': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 + '@algolia/client-search@5.35.0': dependencies: '@algolia/client-common': 5.35.0 @@ -14131,6 +14417,13 @@ snapshots: '@algolia/requester-fetch': 5.35.0 '@algolia/requester-node-http': 5.35.0 + '@algolia/client-search@5.37.0': + dependencies: + '@algolia/client-common': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 + '@algolia/events@4.0.1': {} '@algolia/ingestion@1.35.0': @@ -14140,6 +14433,13 @@ snapshots: '@algolia/requester-fetch': 5.35.0 '@algolia/requester-node-http': 5.35.0 + '@algolia/ingestion@1.37.0': + dependencies: + '@algolia/client-common': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 + '@algolia/monitoring@1.35.0': dependencies: '@algolia/client-common': 5.35.0 @@ -14147,6 +14447,13 @@ snapshots: '@algolia/requester-fetch': 5.35.0 '@algolia/requester-node-http': 5.35.0 + '@algolia/monitoring@1.37.0': + dependencies: + '@algolia/client-common': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 + '@algolia/recommend@5.35.0': dependencies: '@algolia/client-common': 5.35.0 @@ -14154,28 +14461,47 @@ snapshots: '@algolia/requester-fetch': 5.35.0 '@algolia/requester-node-http': 5.35.0 + '@algolia/recommend@5.37.0': + dependencies: + '@algolia/client-common': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 + '@algolia/requester-browser-xhr@5.35.0': dependencies: '@algolia/client-common': 5.35.0 + '@algolia/requester-browser-xhr@5.37.0': + dependencies: + '@algolia/client-common': 5.37.0 + '@algolia/requester-fetch@5.35.0': dependencies: '@algolia/client-common': 5.35.0 + '@algolia/requester-fetch@5.37.0': + dependencies: + '@algolia/client-common': 5.37.0 + '@algolia/requester-node-http@5.35.0': dependencies: '@algolia/client-common': 5.35.0 + '@algolia/requester-node-http@5.37.0': + dependencies: + '@algolia/client-common': 5.37.0 + '@alloc/quick-lru@5.2.0': {} '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2003.2(chokidar@4.0.3)': + '@angular-devkit/architect@0.2003.4(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.2(chokidar@4.0.3) + '@angular-devkit/core': 20.3.4(chokidar@4.0.3) rxjs: 7.8.2 transitivePeerDependencies: - chokidar @@ -14191,7 +14517,7 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/core@20.3.2(chokidar@4.0.3)': + '@angular-devkit/core@20.3.4(chokidar@4.0.3)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -14212,9 +14538,9 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular-devkit/schematics@20.3.2(chokidar@4.0.3)': + '@angular-devkit/schematics@20.3.4(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.2(chokidar@4.0.3) + '@angular-devkit/core': 20.3.4(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 8.2.0 @@ -14243,13 +14569,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular-eslint/eslint-plugin-template@19.8.1(@angular-eslint/template-parser@19.8.1(eslint@8.57.1)(typescript@5.9.2))(@typescript-eslint/types@8.40.0)(@typescript-eslint/utils@8.40.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': + '@angular-eslint/eslint-plugin-template@19.8.1(@angular-eslint/template-parser@19.8.1(eslint@8.57.1)(typescript@5.9.2))(@typescript-eslint/types@8.43.0)(@typescript-eslint/utils@8.43.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': dependencies: '@angular-eslint/bundled-angular-compiler': 19.8.1 '@angular-eslint/template-parser': 19.8.1(eslint@8.57.1)(typescript@5.9.2) - '@angular-eslint/utils': 19.8.1(@typescript-eslint/utils@8.40.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) - '@typescript-eslint/types': 8.40.0 - '@typescript-eslint/utils': 8.40.0(eslint@8.57.1)(typescript@5.9.2) + '@angular-eslint/utils': 19.8.1(@typescript-eslint/utils@8.43.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/utils': 8.43.0(eslint@8.57.1)(typescript@5.9.2) aria-query: 5.3.2 axobject-query: 4.1.0 eslint: 8.57.1 @@ -14265,20 +14591,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular-eslint/eslint-plugin@19.8.1(@typescript-eslint/utils@8.40.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': + '@angular-eslint/eslint-plugin@19.8.1(@typescript-eslint/utils@8.43.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': dependencies: '@angular-eslint/bundled-angular-compiler': 19.8.1 - '@angular-eslint/utils': 19.8.1(@typescript-eslint/utils@8.40.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) - '@typescript-eslint/utils': 8.40.0(eslint@8.57.1)(typescript@5.9.2) + '@angular-eslint/utils': 19.8.1(@typescript-eslint/utils@8.43.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/utils': 8.43.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 typescript: 5.9.2 - '@angular-eslint/schematics@19.8.1(@angular-eslint/template-parser@19.8.1(eslint@8.57.1)(typescript@5.9.2))(@typescript-eslint/types@8.40.0)(@typescript-eslint/utils@8.40.0(eslint@8.57.1)(typescript@5.9.2))(chokidar@4.0.3)(eslint@8.57.1)(typescript@5.9.2)': + '@angular-eslint/schematics@19.8.1(@angular-eslint/template-parser@19.8.1(eslint@8.57.1)(typescript@5.9.2))(@typescript-eslint/types@8.43.0)(@typescript-eslint/utils@8.43.0(eslint@8.57.1)(typescript@5.9.2))(chokidar@4.0.3)(eslint@8.57.1)(typescript@5.9.2)': dependencies: '@angular-devkit/core': 19.2.17(chokidar@4.0.3) '@angular-devkit/schematics': 19.2.17(chokidar@4.0.3) - '@angular-eslint/eslint-plugin': 19.8.1(@typescript-eslint/utils@8.40.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) - '@angular-eslint/eslint-plugin-template': 19.8.1(@angular-eslint/template-parser@19.8.1(eslint@8.57.1)(typescript@5.9.2))(@typescript-eslint/types@8.40.0)(@typescript-eslint/utils@8.40.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) + '@angular-eslint/eslint-plugin': 19.8.1(@typescript-eslint/utils@8.43.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) + '@angular-eslint/eslint-plugin-template': 19.8.1(@angular-eslint/template-parser@19.8.1(eslint@8.57.1)(typescript@5.9.2))(@typescript-eslint/types@8.43.0)(@typescript-eslint/utils@8.43.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) ignore: 7.0.5 semver: 7.7.2 strip-json-comments: 3.1.1 @@ -14306,31 +14632,31 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular-eslint/utils@19.8.1(@typescript-eslint/utils@8.40.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': + '@angular-eslint/utils@19.8.1(@typescript-eslint/utils@8.43.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': dependencies: '@angular-eslint/bundled-angular-compiler': 19.8.1 - '@typescript-eslint/utils': 8.40.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/utils': 8.43.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 typescript: 5.9.2 - '@angular/animations@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/animations@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/core': 20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - '@angular/build@20.3.2(@angular/compiler-cli@20.3.1(@angular/compiler@20.3.1)(typescript@5.9.2))(@angular/compiler@20.3.1)(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.1(@angular/animations@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/service-worker@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@types/node@22.17.2)(chokidar@4.0.3)(jiti@2.5.1)(karma@6.4.4)(less@4.4.0)(lightningcss@1.30.1)(postcss@8.5.6)(tailwindcss@3.4.14)(terser@5.43.1)(tslib@2.8.1)(typescript@5.9.2)(yaml@2.8.1)': + '@angular/build@20.3.4(@angular/compiler-cli@20.3.3(@angular/compiler@20.3.3)(typescript@5.9.2))(@angular/compiler@20.3.3)(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.3(@angular/animations@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/service-worker@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@types/node@22.18.1)(chokidar@4.0.3)(jiti@2.5.1)(karma@6.4.4)(lightningcss@1.30.1)(postcss@8.5.6)(tailwindcss@3.4.14)(terser@5.44.0)(tslib@2.8.1)(typescript@5.9.2)(yaml@2.8.1)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2003.2(chokidar@4.0.3) - '@angular/compiler': 20.3.1 - '@angular/compiler-cli': 20.3.1(@angular/compiler@20.3.1)(typescript@5.9.2) + '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular/compiler': 20.3.3 + '@angular/compiler-cli': 20.3.3(@angular/compiler@20.3.3)(typescript@5.9.2) '@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@22.17.2) - '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.1.5(@types/node@22.17.2)(jiti@2.5.1)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1)) + '@inquirer/confirm': 5.1.14(@types/node@22.18.1) + '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.1.5(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(yaml@2.8.1)) beasties: 0.3.5 - browserslist: 4.25.3 + browserslist: 4.25.4 esbuild: 0.25.9 https-proxy-agent: 7.0.6 istanbul-lib-instrument: 6.0.3 @@ -14341,21 +14667,20 @@ snapshots: parse5-html-rewriting-stream: 8.0.0 picomatch: 4.0.3 piscina: 5.1.3 - rolldown: 1.0.0-beta.32 + rollup: 4.52.3 sass: 1.90.0 semver: 7.7.2 source-map-support: 0.5.21 tinyglobby: 0.2.14 tslib: 2.8.1 typescript: 5.9.2 - vite: 7.1.5(@types/node@22.17.2)(jiti@2.5.1)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + vite: 7.1.5(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(yaml@2.8.1) watchpack: 2.4.4 optionalDependencies: - '@angular/core': 20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 20.3.1(@angular/animations@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)) - '@angular/service-worker': 20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 20.3.3(@angular/animations@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/service-worker': 20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) karma: 6.4.4 - less: 4.4.0 lmdb: 3.4.2 postcss: 8.5.6 tailwindcss: 3.4.14 @@ -14372,23 +14697,23 @@ snapshots: - tsx - yaml - '@angular/cdk@20.2.4(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/cdk@20.2.7(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/cli@20.3.2(@types/node@22.17.2)(chokidar@4.0.3)': + '@angular/cli@20.3.4(@types/node@22.18.1)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2003.2(chokidar@4.0.3) - '@angular-devkit/core': 20.3.2(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.2(chokidar@4.0.3) - '@inquirer/prompts': 7.8.2(@types/node@22.17.2) - '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@22.17.2))(@types/node@22.17.2)(listr2@9.0.1) + '@angular-devkit/architect': 0.2003.4(chokidar@4.0.3) + '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) + '@inquirer/prompts': 7.8.2(@types/node@22.18.1) + '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@22.18.1))(@types/node@22.18.1)(listr2@9.0.1) '@modelcontextprotocol/sdk': 1.17.3 - '@schematics/angular': 20.3.2(chokidar@4.0.3) + '@schematics/angular': 20.3.4(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 algoliasearch: 5.35.0 ini: 5.0.0 @@ -14405,15 +14730,15 @@ snapshots: - chokidar - supports-color - '@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@20.3.1(@angular/compiler@20.3.1)(typescript@5.9.2)': + '@angular/compiler-cli@20.3.3(@angular/compiler@20.3.3)(typescript@5.9.2)': dependencies: - '@angular/compiler': 20.3.1 + '@angular/compiler': 20.3.3 '@babel/core': 7.28.3 '@jridgewell/sourcemap-codec': 1.5.5 chokidar: 4.0.3 @@ -14427,72 +14752,72 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@20.3.1': + '@angular/compiler@20.3.3': dependencies: tslib: 2.8.1 - '@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)': + '@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 20.3.1 + '@angular/compiler': 20.3.3 zone.js: 0.15.1 - '@angular/forms@20.3.1(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.1(@angular/animations@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/forms@20.3.3(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.3(@angular/animations@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 20.3.1(@angular/animations@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 20.3.3(@angular/animations@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/language-service@20.3.1': {} + '@angular/language-service@20.3.3': {} - '@angular/material-moment-adapter@20.2.4(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/material@20.2.4(e997458c0c3ddd4908b1b075c4607fbc))(moment@2.30.1)': + '@angular/material-moment-adapter@20.2.7(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/material@20.2.7(9c11a8eb564a221c173ca8f1e04d1698))(moment@2.30.1)': dependencies: - '@angular/core': 20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/material': 20.2.4(e997458c0c3ddd4908b1b075c4607fbc) + '@angular/core': 20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/material': 20.2.7(9c11a8eb564a221c173ca8f1e04d1698) moment: 2.30.1 tslib: 2.8.1 - '@angular/material@20.2.4(e997458c0c3ddd4908b1b075c4607fbc)': + '@angular/material@20.2.7(9c11a8eb564a221c173ca8f1e04d1698)': dependencies: - '@angular/cdk': 20.2.4(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/common': 20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/forms': 20.3.1(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.1(@angular/animations@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) - '@angular/platform-browser': 20.3.1(@angular/animations@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/cdk': 20.2.7(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/common': 20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/forms': 20.3.3(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.3(@angular/animations@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + '@angular/platform-browser': 20.3.3(@angular/animations@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/platform-browser-dynamic@20.3.1(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.3.1)(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.1(@angular/animations@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))': + '@angular/platform-browser-dynamic@20.3.3(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.3.3)(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.3(@angular/animations@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))': dependencies: - '@angular/common': 20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/compiler': 20.3.1 - '@angular/core': 20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 20.3.1(@angular/animations@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/compiler': 20.3.3 + '@angular/core': 20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 20.3.3(@angular/animations@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)) tslib: 2.8.1 - '@angular/platform-browser@20.3.1(@angular/animations@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/platform-browser@20.3.3(@angular/animations@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/common': 20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/animations': 20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)) - '@angular/router@20.3.1(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.1(@angular/animations@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/router@20.3.3(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.3(@angular/animations@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 20.3.1(@angular/animations@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 20.3.3(@angular/animations@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/service-worker@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/service-worker@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 @@ -14501,7 +14826,7 @@ snapshots: package-manager-detector: 1.3.0 tinyexec: 1.0.1 - '@antfu/utils@8.1.1': {} + '@antfu/utils@9.2.0': {} '@apidevtools/json-schema-ref-parser@11.9.3': dependencies: @@ -14512,7 +14837,7 @@ snapshots: '@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) - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 @@ -14523,20 +14848,20 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.28.0': {} + '@babel/compat-data@7.28.4': {} - '@babel/core@7.28.3': + '@babel/core@7.23.7': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.27.1 '@babel/generator': 7.28.3 '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3) - '@babel/helpers': 7.28.3 - '@babel/parser': 7.28.3 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.23.7) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.4 '@babel/template': 7.27.2 - '@babel/traverse': 7.28.3 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 convert-source-map: 2.0.0 debug: 4.4.1(supports-color@5.5.0) gensync: 1.0.0-beta.2 @@ -14545,9 +14870,49 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/eslint-parser@7.28.0(@babel/core@7.28.3)(eslint@8.57.1)': + '@babel/core@7.28.3': dependencies: - '@babel/core': 7.28.3 + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + convert-source-map: 2.0.0 + debug: 4.4.1(supports-color@5.5.0) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/core@7.28.4': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.1(supports-color@5.5.0) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/eslint-parser@7.28.4(@babel/core@7.28.4)(eslint@8.57.1)': + dependencies: + '@babel/core': 7.28.4 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 eslint: 8.57.1 eslint-visitor-keys: 2.1.0 @@ -14555,47 +14920,69 @@ snapshots: '@babel/generator@7.28.3': dependencies: - '@babel/parser': 7.28.3 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 '@babel/helper-compilation-targets@7.27.2': dependencies: - '@babel/compat-data': 7.28.0 + '@babel/compat-data': 7.28.4 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.25.3 + browserslist: 4.25.4 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.3)': + '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.3) + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/traverse': 7.28.4 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.3)': + '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 - regexpu-core: 6.2.0 + regexpu-core: 6.3.1 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.3)': + '@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + debug: 4.4.1(supports-color@5.5.0) + lodash.debounce: 4.0.8 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + debug: 4.4.1(supports-color@5.5.0) + lodash.debounce: 4.0.8 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 debug: 4.4.1(supports-color@5.5.0) @@ -14608,15 +14995,24 @@ snapshots: '@babel/helper-member-expression-to-functions@7.27.1': dependencies: - '@babel/traverse': 7.28.3 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.28.3 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.3(@babel/core@7.23.7)': + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color @@ -14625,44 +15021,53 @@ snapshots: '@babel/core': 7.28.3 '@babel/helper-module-imports': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.3)': + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-wrap-function': 7.28.3 - '@babel/traverse': 7.28.3 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.3)': + '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.28.3 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 '@babel/helper-string-parser@7.27.1': {} @@ -14673,621 +15078,788 @@ snapshots: '@babel/helper-wrap-function@7.28.3': dependencies: '@babel/template': 7.27.2 - '@babel/traverse': 7.28.3 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/helpers@7.28.3': + '@babel/helpers@7.28.4': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 - '@babel/parser@7.28.3': + '@babel/parser@7.28.4': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.28.3)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.3)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.28.3)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.3)': + '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.3)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.3) - '@babel/traverse': 7.28.3 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.4) + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.3) + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-block-scoping@7.28.0(@babel/core@7.28.3)': + '@babel/plugin-transform-block-scoping@7.28.4(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.3)': + '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.28.3(@babel/core@7.28.3)': + '@babel/plugin-transform-classes@7.28.4(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-globals': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.3) - '@babel/traverse': 7.28.3 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/template': 7.27.2 - '@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.28.3)': + '@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.3)': + '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-object-rest-spread@7.28.0(@babel/core@7.28.3)': + '@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.3) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.3) - '@babel/traverse': 7.28.3 + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4) + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.3) + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.3)': + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.3) + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-constant-elements@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-react-constant-elements@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.3)': + '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.3) - '@babel/types': 7.28.2 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regenerator@7.28.3(@babel/core@7.28.3)': + '@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-runtime@7.28.3(@babel/core@7.28.3)': + '@babel/plugin-transform-runtime@7.28.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.3) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.3) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.3) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.4) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.4) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.4) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.3)': + '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.3) + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/preset-env@7.28.3(@babel/core@7.28.3)': + '@babel/preset-env@7.23.8(@babel/core@7.28.4)': dependencies: - '@babel/compat-data': 7.28.0 - '@babel/core': 7.28.3 + '@babel/compat-data': 7.28.4 + '@babel/core': 7.28.4 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.28.3) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.3) - '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.3) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.3) - '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-block-scoping': 7.28.0(@babel/core@7.28.3) - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.3) - '@babel/plugin-transform-classes': 7.28.3(@babel/core@7.28.3) - '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.3) - '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.28.3) - '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-object-rest-spread': 7.28.0(@babel/core@7.28.3) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.3) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-regenerator': 7.28.3(@babel/core@7.28.3) - '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.3) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.3) - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.3) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.3) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.3) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.28.4) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.4) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.4) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.4) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.4) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.4) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.4) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.4) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.4) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.4) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.4) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-block-scoping': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.4) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.4) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.4) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.4) + babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.28.4) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.28.4) core-js-compat: 3.45.1 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.3)': + '@babel/preset-env@7.28.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/compat-data': 7.28.4 + '@babel/core': 7.28.4 + '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.28.2 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.28.4) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.4) + '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.4) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-block-scoping': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.4) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.4) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.4) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.4) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.4) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.4) + core-js-compat: 3.45.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/types': 7.28.4 esutils: 2.0.3 - '@babel/preset-react@7.27.1(@babel/core@7.28.3)': + '@babel/preset-react@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.3) - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.27.1(@babel/core@7.28.3)': + '@babel/preset-typescript@7.23.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - '@babel/runtime-corejs3@7.28.3': + '@babel/preset-typescript@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.4) + transitivePeerDependencies: + - supports-color + + '@babel/runtime-corejs3@7.28.4': dependencies: core-js-pure: 3.45.1 - '@babel/runtime@7.28.3': {} + '@babel/runtime@7.28.4': {} '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.3 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 - '@babel/traverse@7.28.3': + '@babel/traverse@7.28.4': dependencies: '@babel/code-frame': 7.27.1 '@babel/generator': 7.28.3 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.3 + '@babel/parser': 7.28.4 '@babel/template': 7.27.2 - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 debug: 4.4.1(supports-color@5.5.0) transitivePeerDependencies: - supports-color - '@babel/types@7.28.2': + '@babel/types@7.28.4': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 @@ -15297,45 +15869,24 @@ snapshots: '@bufbuild/buf-darwin-arm64@1.55.1': optional: true - '@bufbuild/buf-darwin-arm64@1.56.0': - optional: true - '@bufbuild/buf-darwin-x64@1.55.1': optional: true - '@bufbuild/buf-darwin-x64@1.56.0': - optional: true - '@bufbuild/buf-linux-aarch64@1.55.1': optional: true - '@bufbuild/buf-linux-aarch64@1.56.0': - optional: true - '@bufbuild/buf-linux-armv7@1.55.1': optional: true - '@bufbuild/buf-linux-armv7@1.56.0': - optional: true - '@bufbuild/buf-linux-x64@1.55.1': optional: true - '@bufbuild/buf-linux-x64@1.56.0': - optional: true - '@bufbuild/buf-win32-arm64@1.55.1': optional: true - '@bufbuild/buf-win32-arm64@1.56.0': - optional: true - '@bufbuild/buf-win32-x64@1.55.1': optional: true - '@bufbuild/buf-win32-x64@1.56.0': - optional: true - '@bufbuild/buf@1.55.1': optionalDependencies: '@bufbuild/buf-darwin-arm64': 1.55.1 @@ -15346,16 +15897,6 @@ snapshots: '@bufbuild/buf-win32-arm64': 1.55.1 '@bufbuild/buf-win32-x64': 1.55.1 - '@bufbuild/buf@1.56.0': - optionalDependencies: - '@bufbuild/buf-darwin-arm64': 1.56.0 - '@bufbuild/buf-darwin-x64': 1.56.0 - '@bufbuild/buf-linux-aarch64': 1.56.0 - '@bufbuild/buf-linux-armv7': 1.56.0 - '@bufbuild/buf-linux-x64': 1.56.0 - '@bufbuild/buf-win32-arm64': 1.56.0 - '@bufbuild/buf-win32-x64': 1.56.0 - '@bufbuild/protobuf@2.6.3': {} '@bufbuild/protocompile@0.0.1(@bufbuild/buf@1.55.1)': @@ -15364,11 +15905,11 @@ snapshots: '@bufbuild/protobuf': 2.6.3 fflate: 0.8.2 - '@bugsnag/browser@8.4.0': + '@bugsnag/browser@8.6.0': dependencies: - '@bugsnag/core': 8.4.0 + '@bugsnag/core': 8.6.0 - '@bugsnag/core@8.4.0': + '@bugsnag/core@8.6.0': dependencies: '@bugsnag/cuid': 3.2.1 '@bugsnag/safe-json-stringify': 6.1.0 @@ -15378,14 +15919,14 @@ snapshots: '@bugsnag/cuid@3.2.1': {} - '@bugsnag/js@8.4.0': + '@bugsnag/js@8.6.0': dependencies: - '@bugsnag/browser': 8.4.0 - '@bugsnag/node': 8.4.0 + '@bugsnag/browser': 8.6.0 + '@bugsnag/node': 8.6.0 - '@bugsnag/node@8.4.0': + '@bugsnag/node@8.6.0': dependencies: - '@bugsnag/core': 8.4.0 + '@bugsnag/core': 8.6.0 byline: 5.0.0 error-stack-parser: 2.1.4 iserror: 0.0.2 @@ -15394,7 +15935,7 @@ snapshots: '@bugsnag/safe-json-stringify@6.1.0': {} - '@changesets/apply-release-plan@7.0.12': + '@changesets/apply-release-plan@7.0.13': dependencies: '@changesets/config': 3.1.1 '@changesets/get-version-range-type': 0.4.0 @@ -15423,9 +15964,9 @@ snapshots: dependencies: '@changesets/types': 6.1.0 - '@changesets/cli@2.29.6(@types/node@24.3.0)': + '@changesets/cli@2.29.7(@types/node@24.3.1)': dependencies: - '@changesets/apply-release-plan': 7.0.12 + '@changesets/apply-release-plan': 7.0.13 '@changesets/assemble-release-plan': 6.0.9 '@changesets/changelog-git': 0.2.1 '@changesets/config': 3.1.1 @@ -15439,7 +15980,7 @@ snapshots: '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@changesets/write': 0.4.0 - '@inquirer/external-editor': 1.0.1(@types/node@24.3.0) + '@inquirer/external-editor': 1.0.1(@types/node@24.3.1) '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 ci-info: 3.9.0 @@ -15557,7 +16098,7 @@ snapshots: '@colors/colors@1.5.0': {} - '@connectrpc/connect-node@2.0.4(@bufbuild/protobuf@2.6.3)(@connectrpc/connect@2.0.4(@bufbuild/protobuf@2.6.3))': + '@connectrpc/connect-node@2.1.0(@bufbuild/protobuf@2.6.3)(@connectrpc/connect@2.0.4(@bufbuild/protobuf@2.6.3))': dependencies: '@bufbuild/protobuf': 2.6.3 '@connectrpc/connect': 2.0.4(@bufbuild/protobuf@2.6.3) @@ -15576,16 +16117,16 @@ snapshots: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/color-helpers@5.0.2': {} + '@csstools/color-helpers@5.1.0': {} '@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)': dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-color-parser@3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/color-helpers': 5.0.2 + '@csstools/color-helpers': 5.1.0 '@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) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 @@ -15601,44 +16142,62 @@ snapshots: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-alpha-function@1.0.0(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + '@csstools/postcss-cascade-layers@5.0.2(postcss@8.5.6)': dependencies: '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) postcss: 8.5.6 postcss-selector-parser: 7.1.0 - '@csstools/postcss-color-function@4.0.10(postcss@8.5.6)': + '@csstools/postcss-color-function-display-p3-linear@1.0.0(postcss@8.5.6)': dependencies: - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.6) + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) '@csstools/utilities': 2.0.0(postcss@8.5.6) postcss: 8.5.6 - '@csstools/postcss-color-mix-function@3.0.10(postcss@8.5.6)': + '@csstools/postcss-color-function@4.0.11(postcss@8.5.6)': dependencies: - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.6) + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) '@csstools/utilities': 2.0.0(postcss@8.5.6) postcss: 8.5.6 - '@csstools/postcss-color-mix-variadic-function-arguments@1.0.0(postcss@8.5.6)': + '@csstools/postcss-color-mix-function@3.0.11(postcss@8.5.6)': dependencies: - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.6) + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) '@csstools/utilities': 2.0.0(postcss@8.5.6) postcss: 8.5.6 - '@csstools/postcss-content-alt-text@2.0.6(postcss@8.5.6)': + '@csstools/postcss-color-mix-variadic-function-arguments@1.0.1(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-content-alt-text@2.0.7(postcss@8.5.6)': dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.6) + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) '@csstools/utilities': 2.0.0(postcss@8.5.6) postcss: 8.5.6 @@ -15655,34 +16214,34 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - '@csstools/postcss-gamut-mapping@2.0.10(postcss@8.5.6)': + '@csstools/postcss-gamut-mapping@2.0.11(postcss@8.5.6)': dependencies: - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 postcss: 8.5.6 - '@csstools/postcss-gradients-interpolation-method@5.0.10(postcss@8.5.6)': + '@csstools/postcss-gradients-interpolation-method@5.0.11(postcss@8.5.6)': dependencies: - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.6) + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) '@csstools/utilities': 2.0.0(postcss@8.5.6) postcss: 8.5.6 - '@csstools/postcss-hwb-function@4.0.10(postcss@8.5.6)': + '@csstools/postcss-hwb-function@4.0.11(postcss@8.5.6)': dependencies: - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.6) + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) '@csstools/utilities': 2.0.0(postcss@8.5.6) postcss: 8.5.6 - '@csstools/postcss-ic-unit@4.0.2(postcss@8.5.6)': + '@csstools/postcss-ic-unit@4.0.3(postcss@8.5.6)': dependencies: - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.6) + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) '@csstools/utilities': 2.0.0(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -15697,11 +16256,11 @@ snapshots: postcss: 8.5.6 postcss-selector-parser: 7.1.0 - '@csstools/postcss-light-dark-function@2.0.9(postcss@8.5.6)': + '@csstools/postcss-light-dark-function@2.0.10(postcss@8.5.6)': dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.6) + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) '@csstools/utilities': 2.0.0(postcss@8.5.6) postcss: 8.5.6 @@ -15754,16 +16313,16 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - '@csstools/postcss-oklab-function@4.0.10(postcss@8.5.6)': + '@csstools/postcss-oklab-function@4.0.11(postcss@8.5.6)': dependencies: - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.6) + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) '@csstools/utilities': 2.0.0(postcss@8.5.6) postcss: 8.5.6 - '@csstools/postcss-progressive-custom-properties@4.1.0(postcss@8.5.6)': + '@csstools/postcss-progressive-custom-properties@4.2.0(postcss@8.5.6)': dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -15775,12 +16334,12 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 postcss: 8.5.6 - '@csstools/postcss-relative-color-syntax@3.0.10(postcss@8.5.6)': + '@csstools/postcss-relative-color-syntax@3.0.11(postcss@8.5.6)': dependencies: - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.6) + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) '@csstools/utilities': 2.0.0(postcss@8.5.6) postcss: 8.5.6 @@ -15803,9 +16362,9 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 postcss: 8.5.6 - '@csstools/postcss-text-decoration-shorthand@4.0.2(postcss@8.5.6)': + '@csstools/postcss-text-decoration-shorthand@4.0.3(postcss@8.5.6)': dependencies: - '@csstools/color-helpers': 5.0.2 + '@csstools/color-helpers': 5.1.0 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -15832,10 +16391,10 @@ snapshots: dependencies: postcss: 8.5.6 - '@ctrl/ngx-codemirror@6.1.0(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@20.3.1(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.1(@angular/animations@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(codemirror@5.65.20)': + '@ctrl/ngx-codemirror@6.1.0(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@20.3.3(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.3(@angular/animations@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(codemirror@5.65.20)': dependencies: - '@angular/core': 20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/forms': 20.3.1(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.1(@angular/animations@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + '@angular/core': 20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/forms': 20.3.3(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.3(@angular/animations@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@types/codemirror': 5.60.16 codemirror: 5.65.20 tslib: 2.8.1 @@ -15870,18 +16429,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@devcontainers/cli@0.80.0': {} - '@discoveryjs/json-ext@0.5.7': {} '@docsearch/css@3.9.0': {} - '@docsearch/react@3.9.0(@algolia/client-search@5.35.0)(@types/react@19.1.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)': + '@docsearch/react@3.9.0(@algolia/client-search@5.37.0)(@types/react@19.1.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.35.0)(algoliasearch@5.35.0) + '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.37.0)(algoliasearch@5.37.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.37.0)(algoliasearch@5.37.0) '@docsearch/css': 3.9.0 - algoliasearch: 5.35.0 + algoliasearch: 5.37.0 optionalDependencies: '@types/react': 19.1.2 react: 18.3.1 @@ -15890,26 +16447,25 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' - '@docusaurus/babel@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/babel@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/generator': 7.28.3 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.3) - '@babel/plugin-transform-runtime': 7.28.3(@babel/core@7.28.3) - '@babel/preset-env': 7.28.3(@babel/core@7.28.3) - '@babel/preset-react': 7.27.1(@babel/core@7.28.3) - '@babel/preset-typescript': 7.27.1(@babel/core@7.28.3) - '@babel/runtime': 7.28.3 - '@babel/runtime-corejs3': 7.28.3 - '@babel/traverse': 7.28.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-transform-runtime': 7.28.3(@babel/core@7.28.4) + '@babel/preset-env': 7.28.3(@babel/core@7.28.4) + '@babel/preset-react': 7.27.1(@babel/core@7.28.4) + '@babel/preset-typescript': 7.27.1(@babel/core@7.28.4) + '@babel/runtime': 7.28.4 + '@babel/runtime-corejs3': 7.28.4 + '@babel/traverse': 7.28.4 '@docusaurus/logger': 3.8.1 - '@docusaurus/utils': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) babel-plugin-dynamic-import-node: 2.3.3 fs-extra: 11.3.1 tslib: 2.8.1 transitivePeerDependencies: - '@swc/core' - - acorn - esbuild - react - react-dom @@ -15917,40 +16473,39 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/bundler@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/bundler@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@babel/core': 7.28.3 - '@docusaurus/babel': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/core': 7.28.4 + '@docusaurus/babel': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/cssnano-preset': 3.8.1 '@docusaurus/logger': 3.8.1 - '@docusaurus/types': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - babel-loader: 9.2.1(@babel/core@7.28.3)(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + '@docusaurus/types': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + babel-loader: 9.2.1(@babel/core@7.28.4)(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) clean-css: 5.3.3 - copy-webpack-plugin: 11.0.0(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) - css-loader: 6.11.0(@rspack/core@1.4.11(@swc/helpers@0.5.17))(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) - css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + copy-webpack-plugin: 11.0.0(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) + css-loader: 6.11.0(@rspack/core@1.5.3(@swc/helpers@0.5.17))(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) + css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) cssnano: 6.1.2(postcss@8.5.6) - file-loader: 6.2.0(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + file-loader: 6.2.0(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) html-minifier-terser: 7.2.0 - mini-css-extract-plugin: 2.9.4(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) - null-loader: 4.0.1(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + mini-css-extract-plugin: 2.9.4(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) + null-loader: 4.0.1(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) postcss: 8.5.6 - postcss-loader: 7.3.4(postcss@8.5.6)(typescript@5.9.2)(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) - postcss-preset-env: 10.2.4(postcss@8.5.6) - terser-webpack-plugin: 5.3.14(@swc/core@1.13.4(@swc/helpers@0.5.17))(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + postcss-loader: 7.3.4(postcss@8.5.6)(typescript@5.9.2)(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) + postcss-preset-env: 10.3.1(postcss@8.5.6) + terser-webpack-plugin: 5.3.14(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))))(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) - webpackbar: 6.0.1(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))))(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) + webpackbar: 6.0.1(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) optionalDependencies: - '@docusaurus/faster': 3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17) + '@docusaurus/faster': 3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17) transitivePeerDependencies: - '@parcel/css' - '@rspack/core' - '@swc/core' - '@swc/css' - - acorn - csso - esbuild - lightningcss @@ -15961,16 +16516,16 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/core@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/core@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/babel': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/bundler': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/babel': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/bundler': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) '@docusaurus/logger': 3.8.1 - '@docusaurus/mdx-loader': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mdx-js/react': 3.1.0(@types/react@19.1.2)(react@18.3.1) + '@docusaurus/mdx-loader': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mdx-js/react': 3.1.1(@types/react@19.1.2)(react@18.3.1) boxen: 6.2.1 chalk: 4.1.2 chokidar: 3.6.0 @@ -15985,7 +16540,7 @@ snapshots: execa: 5.1.1 fs-extra: 11.3.1 html-tags: 3.3.1 - html-webpack-plugin: 5.6.4(@rspack/core@1.4.11(@swc/helpers@0.5.17))(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + html-webpack-plugin: 5.6.4(@rspack/core@1.5.3(@swc/helpers@0.5.17))(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) leven: 3.1.0 lodash: 4.17.21 open: 8.4.2 @@ -15995,7 +16550,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)' react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' - react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) react-router: 5.3.4(react@18.3.1) react-router-config: 5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1) react-router-dom: 5.3.4(react@18.3.1) @@ -16004,9 +16559,9 @@ snapshots: tinypool: 1.1.1 tslib: 2.8.1 update-notifier: 6.0.2 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 4.15.2(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + webpack-dev-server: 4.15.2(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) webpack-merge: 6.0.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -16014,7 +16569,6 @@ snapshots: - '@rspack/core' - '@swc/core' - '@swc/css' - - acorn - bufferutil - csso - debug @@ -16033,17 +16587,17 @@ snapshots: postcss-sort-media-queries: 5.2.0(postcss@8.5.6) tslib: 2.8.1 - '@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17)': + '@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17)': dependencies: - '@docusaurus/types': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rspack/core': 1.4.11(@swc/helpers@0.5.17) - '@swc/core': 1.13.4(@swc/helpers@0.5.17) - '@swc/html': 1.13.4 - browserslist: 4.25.3 + '@docusaurus/types': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rspack/core': 1.5.3(@swc/helpers@0.5.17) + '@swc/core': 1.13.5(@swc/helpers@0.5.17) + '@swc/html': 1.13.5 + browserslist: 4.25.4 lightningcss: 1.30.1 - swc-loader: 0.2.6(@swc/core@1.13.4(@swc/helpers@0.5.17))(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + swc-loader: 0.2.6(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) tslib: 2.8.1 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) transitivePeerDependencies: - '@swc/helpers' - esbuild @@ -16055,16 +16609,16 @@ snapshots: chalk: 4.1.2 tslib: 2.8.1 - '@docusaurus/mdx-loader@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/mdx-loader@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@docusaurus/logger': 3.8.1 - '@docusaurus/utils': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mdx-js/mdx': 3.1.0(acorn@8.15.0) + '@docusaurus/utils': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mdx-js/mdx': 3.1.1 '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 estree-util-value-to-estree: 3.4.0 - file-loader: 6.2.0(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + file-loader: 6.2.0(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) fs-extra: 11.3.1 image-size: 2.0.2 mdast-util-mdx: 3.0.0 @@ -16080,20 +16634,19 @@ snapshots: tslib: 2.8.1 unified: 11.0.5 unist-util-visit: 5.0.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))))(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))))(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) vfile: 6.0.3 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) transitivePeerDependencies: - '@swc/core' - - acorn - esbuild - supports-color - uglify-js - webpack-cli - '@docusaurus/module-type-aliases@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/module-type-aliases@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@docusaurus/types': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/history': 4.7.11 '@types/react': 19.1.2 '@types/react-router-config': 5.0.11 @@ -16104,23 +16657,22 @@ snapshots: react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' transitivePeerDependencies: - '@swc/core' - - acorn - esbuild - supports-color - uglify-js - webpack-cli - '@docusaurus/plugin-content-blog@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/plugin-content-blog@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) '@docusaurus/logger': 3.8.1 - '@docusaurus/mdx-loader': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-docs': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/theme-common': 3.8.1(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/types': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/mdx-loader': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-docs': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/theme-common': 3.8.1(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) cheerio: 1.0.0-rc.12 feed: 4.2.2 fs-extra: 11.3.1 @@ -16132,7 +16684,7 @@ snapshots: tslib: 2.8.1 unist-util-visit: 5.0.0 utility-types: 3.11.0 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -16140,7 +16692,6 @@ snapshots: - '@rspack/core' - '@swc/core' - '@swc/css' - - acorn - bufferutil - csso - debug @@ -16152,17 +16703,17 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) '@docusaurus/logger': 3.8.1 - '@docusaurus/mdx-loader': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/module-type-aliases': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/theme-common': 3.8.1(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/types': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/mdx-loader': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/module-type-aliases': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-common': 3.8.1(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/react-router-config': 5.0.11 combine-promises: 1.2.0 fs-extra: 11.3.1 @@ -16173,7 +16724,7 @@ snapshots: schema-dts: 1.1.5 tslib: 2.8.1 utility-types: 3.11.0 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -16181,7 +16732,6 @@ snapshots: - '@rspack/core' - '@swc/core' - '@swc/css' - - acorn - bufferutil - csso - debug @@ -16193,18 +16743,18 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-content-pages@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/plugin-content-pages@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/mdx-loader': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/types': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/mdx-loader': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) fs-extra: 11.3.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -16212,7 +16762,6 @@ snapshots: - '@rspack/core' - '@swc/core' - '@swc/css' - - acorn - bufferutil - csso - debug @@ -16224,12 +16773,12 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-css-cascade-layers@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/plugin-css-cascade-layers@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/types': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/types': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tslib: 2.8.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -16238,7 +16787,6 @@ snapshots: - '@rspack/core' - '@swc/core' - '@swc/css' - - acorn - bufferutil - csso - debug @@ -16252,15 +16800,15 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-debug@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/plugin-debug@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/types': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/types': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) fs-extra: 11.3.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-json-view-lite: 2.4.2(react@18.3.1) + react-json-view-lite: 2.5.0(react@18.3.1) tslib: 2.8.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -16269,7 +16817,6 @@ snapshots: - '@rspack/core' - '@swc/core' - '@swc/css' - - acorn - bufferutil - csso - debug @@ -16281,11 +16828,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-analytics@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/plugin-google-analytics@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/types': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/types': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 @@ -16296,7 +16843,6 @@ snapshots: - '@rspack/core' - '@swc/core' - '@swc/css' - - acorn - bufferutil - csso - debug @@ -16308,11 +16854,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-gtag@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/plugin-google-gtag@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/types': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/types': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/gtag.js': 0.0.12 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -16324,7 +16870,6 @@ snapshots: - '@rspack/core' - '@swc/core' - '@swc/css' - - acorn - bufferutil - csso - debug @@ -16336,11 +16881,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/plugin-google-tag-manager@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/types': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/types': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 @@ -16351,7 +16896,6 @@ snapshots: - '@rspack/core' - '@swc/core' - '@swc/css' - - acorn - bufferutil - csso - debug @@ -16363,14 +16907,14 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-sitemap@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/plugin-sitemap@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) '@docusaurus/logger': 3.8.1 - '@docusaurus/types': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) fs-extra: 11.3.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -16383,7 +16927,6 @@ snapshots: - '@rspack/core' - '@swc/core' - '@swc/css' - - acorn - bufferutil - csso - debug @@ -16395,18 +16938,18 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-svgr@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/plugin-svgr@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/types': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/types': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@svgr/core': 8.1.0(typescript@5.9.2) '@svgr/webpack': 8.1.0(typescript@5.9.2) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -16414,7 +16957,6 @@ snapshots: - '@rspack/core' - '@swc/core' - '@swc/css' - - acorn - bufferutil - csso - debug @@ -16426,23 +16968,23 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/preset-classic@3.8.1(@algolia/client-search@5.35.0)(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(@types/react@19.1.2)(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2)': + '@docusaurus/preset-classic@3.8.1(@algolia/client-search@5.37.0)(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/react@19.1.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-content-blog': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-content-docs': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-content-pages': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-css-cascade-layers': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-debug': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-google-analytics': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-google-gtag': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-google-tag-manager': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-sitemap': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-svgr': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/theme-classic': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(@types/react@19.1.2)(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/theme-common': 3.8.1(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/theme-search-algolia': 3.8.1(@algolia/client-search@5.35.0)(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(@types/react@19.1.2)(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2) - '@docusaurus/types': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-content-blog': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-content-docs': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-content-pages': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-css-cascade-layers': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-debug': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-google-analytics': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-google-gtag': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-google-tag-manager': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-sitemap': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-svgr': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/theme-classic': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/react@19.1.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/theme-common': 3.8.1(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-search-algolia': 3.8.1(@algolia/client-search@5.37.0)(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/react@19.1.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2) + '@docusaurus/types': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: @@ -16454,7 +16996,6 @@ snapshots: - '@swc/core' - '@swc/css' - '@types/react' - - acorn - bufferutil - csso - debug @@ -16472,24 +17013,24 @@ snapshots: '@types/react': 19.1.2 react: 18.3.1 - '@docusaurus/theme-classic@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(@types/react@19.1.2)(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/theme-classic@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/react@19.1.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) '@docusaurus/logger': 3.8.1 - '@docusaurus/mdx-loader': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/module-type-aliases': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-blog': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-content-docs': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/plugin-content-pages': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/theme-common': 3.8.1(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/mdx-loader': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/module-type-aliases': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-blog': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-content-docs': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/plugin-content-pages': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/theme-common': 3.8.1(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/theme-translations': 3.8.1 - '@docusaurus/types': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mdx-js/react': 3.1.0(@types/react@19.1.2)(react@18.3.1) + '@docusaurus/types': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mdx-js/react': 3.1.1(@types/react@19.1.2)(react@18.3.1) clsx: 2.1.1 - copy-text-to-clipboard: 3.2.0 + copy-text-to-clipboard: 3.2.1 infima: 0.2.0-alpha.45 lodash: 4.17.21 nprogress: 0.2.0 @@ -16509,7 +17050,6 @@ snapshots: - '@swc/core' - '@swc/css' - '@types/react' - - acorn - bufferutil - csso - debug @@ -16521,13 +17061,13 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/theme-common@3.8.1(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/theme-common@3.8.1(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@docusaurus/mdx-loader': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/module-type-aliases': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-docs': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/utils': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/mdx-loader': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/module-type-aliases': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-docs': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/utils': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/history': 4.7.11 '@types/react': 19.1.2 '@types/react-router-config': 5.0.11 @@ -16540,20 +17080,19 @@ snapshots: utility-types: 3.11.0 transitivePeerDependencies: - '@swc/core' - - acorn - esbuild - supports-color - uglify-js - webpack-cli - '@docusaurus/theme-mermaid@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': + '@docusaurus/theme-mermaid@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)': dependencies: - '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/module-type-aliases': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/theme-common': 3.8.1(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/types': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - mermaid: 11.10.0 + '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/module-type-aliases': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-common': 3.8.1(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + mermaid: 11.11.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 @@ -16565,7 +17104,6 @@ snapshots: - '@rspack/core' - '@swc/core' - '@swc/css' - - acorn - bufferutil - csso - debug @@ -16577,18 +17115,18 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/theme-search-algolia@3.8.1(@algolia/client-search@5.35.0)(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(@types/react@19.1.2)(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2)': + '@docusaurus/theme-search-algolia@3.8.1(@algolia/client-search@5.37.0)(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/react@19.1.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.9.2)': dependencies: - '@docsearch/react': 3.9.0(@algolia/client-search@5.35.0)(@types/react@19.1.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3) - '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docsearch/react': 3.9.0(@algolia/client-search@5.37.0)(@types/react@19.1.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3) + '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) '@docusaurus/logger': 3.8.1 - '@docusaurus/plugin-content-docs': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/theme-common': 3.8.1(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-docs': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/theme-common': 3.8.1(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/theme-translations': 3.8.1 - '@docusaurus/utils': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - algoliasearch: 5.35.0 - algoliasearch-helper: 3.26.0(algoliasearch@5.35.0) + '@docusaurus/utils': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + algoliasearch: 5.37.0 + algoliasearch-helper: 3.26.0(algoliasearch@5.37.0) clsx: 2.1.1 eta: 2.2.0 fs-extra: 11.3.1 @@ -16606,7 +17144,6 @@ snapshots: - '@swc/core' - '@swc/css' - '@types/react' - - acorn - bufferutil - csso - debug @@ -16624,9 +17161,9 @@ snapshots: fs-extra: 11.3.1 tslib: 2.8.1 - '@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@mdx-js/mdx': 3.1.0(acorn@8.15.0) + '@mdx-js/mdx': 3.1.1 '@types/history': 4.7.11 '@types/react': 19.1.2 commander: 5.1.0 @@ -16635,23 +17172,21 @@ snapshots: react-dom: 18.3.1(react@18.3.1) react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)' utility-types: 3.11.0 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) webpack-merge: 5.10.0 transitivePeerDependencies: - '@swc/core' - - acorn - esbuild - supports-color - uglify-js - webpack-cli - '@docusaurus/utils-common@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/utils-common@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@docusaurus/types': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tslib: 2.8.1 transitivePeerDependencies: - '@swc/core' - - acorn - esbuild - react - react-dom @@ -16659,11 +17194,11 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-validation@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/utils-validation@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@docusaurus/logger': 3.8.1 - '@docusaurus/utils': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) fs-extra: 11.3.1 joi: 17.13.3 js-yaml: 4.1.0 @@ -16671,7 +17206,6 @@ snapshots: tslib: 2.8.1 transitivePeerDependencies: - '@swc/core' - - acorn - esbuild - react - react-dom @@ -16679,14 +17213,14 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/utils@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@docusaurus/logger': 3.8.1 - '@docusaurus/types': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) escape-string-regexp: 4.0.0 execa: 5.1.1 - file-loader: 6.2.0(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + file-loader: 6.2.0(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) fs-extra: 11.3.1 github-slugger: 1.5.0 globby: 11.1.0 @@ -16699,12 +17233,11 @@ snapshots: prompts: 2.4.2 resolve-pathname: 3.0.0 tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))))(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))))(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) utility-types: 3.11.0 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) transitivePeerDependencies: - '@swc/core' - - acorn - esbuild - react - react-dom @@ -16712,21 +17245,18 @@ snapshots: - uglify-js - webpack-cli - '@emnapi/core@1.4.5': + '@emnapi/core@1.5.0': dependencies: - '@emnapi/wasi-threads': 1.0.4 + '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 - optional: true - '@emnapi/runtime@1.4.5': + '@emnapi/runtime@1.5.0': dependencies: tslib: 2.8.1 - optional: true - '@emnapi/wasi-threads@1.0.4': + '@emnapi/wasi-threads@1.1.0': dependencies: tslib: 2.8.1 - optional: true '@esbuild/aix-ppc64@0.21.5': optional: true @@ -16875,7 +17405,7 @@ snapshots: '@esbuild/win32-x64@0.25.9': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': + '@eslint-community/eslint-utils@4.9.0(eslint@8.57.1)': dependencies: eslint: 8.57.1 eslint-visitor-keys: 3.4.3 @@ -16965,23 +17495,23 @@ snapshots: dependencies: tslib: 2.8.1 - '@fortawesome/angular-fontawesome@3.0.0(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))': + '@fortawesome/angular-fontawesome@3.0.0(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/core': 20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1) - '@fortawesome/fontawesome-svg-core': 7.0.1 + '@angular/core': 20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1) + '@fortawesome/fontawesome-svg-core': 7.1.0 tslib: 2.8.1 '@fortawesome/fontawesome-common-types@6.7.2': {} - '@fortawesome/fontawesome-common-types@7.0.1': {} + '@fortawesome/fontawesome-common-types@7.1.0': {} '@fortawesome/fontawesome-svg-core@6.7.2': dependencies: '@fortawesome/fontawesome-common-types': 6.7.2 - '@fortawesome/fontawesome-svg-core@7.0.1': + '@fortawesome/fontawesome-svg-core@7.1.0': dependencies: - '@fortawesome/fontawesome-common-types': 7.0.1 + '@fortawesome/fontawesome-common-types': 7.1.0 '@fortawesome/free-brands-svg-icons@6.7.2': dependencies: @@ -16999,12 +17529,28 @@ snapshots: protobufjs: 7.5.4 yargs: 17.7.2 + '@hapi/address@5.1.1': + dependencies: + '@hapi/hoek': 11.0.7 + + '@hapi/formula@3.0.2': {} + + '@hapi/hoek@11.0.7': {} + '@hapi/hoek@9.3.0': {} + '@hapi/pinpoint@2.0.1': {} + + '@hapi/tlds@1.1.3': {} + '@hapi/topo@5.1.0': dependencies: '@hapi/hoek': 9.3.0 + '@hapi/topo@6.0.2': + dependencies: + '@hapi/hoek': 11.0.7 + '@headlessui/react@1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@tanstack/react-virtual': 3.13.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -17015,8 +17561,8 @@ snapshots: '@headlessui/react@2.2.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@floating-ui/react': 0.26.28(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@react-aria/focus': 3.21.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@react-aria/interactions': 3.25.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@react-aria/focus': 3.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@react-aria/interactions': 3.25.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tanstack/react-virtual': 3.13.12(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -17052,16 +17598,16 @@ snapshots: '@iconify/types@2.0.0': {} - '@iconify/utils@2.3.0': + '@iconify/utils@3.0.1': dependencies: '@antfu/install-pkg': 1.1.0 - '@antfu/utils': 8.1.1 + '@antfu/utils': 9.2.0 '@iconify/types': 2.0.0 debug: 4.4.1(supports-color@5.5.0) globals: 15.15.0 kolorist: 1.8.0 local-pkg: 1.1.2 - mlly: 1.7.4 + mlly: 1.8.0 transitivePeerDependencies: - supports-color @@ -17139,7 +17685,7 @@ snapshots: '@img/sharp-wasm32@0.34.3': dependencies: - '@emnapi/runtime': 1.4.5 + '@emnapi/runtime': 1.5.0 optional: true '@img/sharp-win32-arm64@0.34.3': @@ -17151,11 +17697,11 @@ snapshots: '@img/sharp-win32-x64@0.34.3': optional: true - '@inkeep/cxkit-color-mode@0.5.96': {} + '@inkeep/cxkit-color-mode@0.5.97': {} - '@inkeep/cxkit-docusaurus@0.5.96(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(zod@3.25.76)': + '@inkeep/cxkit-docusaurus@0.5.97(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(zod@3.25.76)': dependencies: - '@inkeep/cxkit-react': 0.5.96(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(zod@3.25.76) + '@inkeep/cxkit-react': 0.5.97(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(zod@3.25.76) merge-anything: 5.1.7 path: 0.12.7 react: 18.3.1 @@ -17167,11 +17713,11 @@ snapshots: - supports-color - zod - '@inkeep/cxkit-primitives@0.5.96(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(zod@3.25.76)': + '@inkeep/cxkit-primitives@0.5.97(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(zod@3.25.76)': dependencies: - '@inkeep/cxkit-color-mode': 0.5.96 - '@inkeep/cxkit-theme': 0.5.96 - '@inkeep/cxkit-types': 0.5.96 + '@inkeep/cxkit-color-mode': 0.5.97 + '@inkeep/cxkit-theme': 0.5.97 + '@inkeep/cxkit-types': 0.5.97 '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 '@radix-ui/react-avatar': 1.1.2(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -17197,9 +17743,9 @@ snapshots: '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@18.3.1) '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@18.3.1) '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@18.3.1) - '@zag-js/focus-trap': 1.21.7 - '@zag-js/presence': 1.21.7 - '@zag-js/react': 1.21.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@zag-js/focus-trap': 1.22.1 + '@zag-js/presence': 1.22.1 + '@zag-js/react': 1.22.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) altcha-lib: 1.3.0 aria-hidden: 1.2.6 dequal: 2.0.3 @@ -17228,9 +17774,9 @@ snapshots: - supports-color - zod - '@inkeep/cxkit-react@0.5.96(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(zod@3.25.76)': + '@inkeep/cxkit-react@0.5.97(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(zod@3.25.76)': dependencies: - '@inkeep/cxkit-styled': 0.5.96(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(zod@3.25.76) + '@inkeep/cxkit-styled': 0.5.97(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(zod@3.25.76) '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@18.3.1) lucide-react: 0.503.0(react@18.3.1) transitivePeerDependencies: @@ -17242,9 +17788,9 @@ snapshots: - supports-color - zod - '@inkeep/cxkit-styled@0.5.96(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(zod@3.25.76)': + '@inkeep/cxkit-styled@0.5.97(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(zod@3.25.76)': dependencies: - '@inkeep/cxkit-primitives': 0.5.96(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(zod@3.25.76) + '@inkeep/cxkit-primitives': 0.5.97(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(zod@3.25.76) class-variance-authority: 0.7.1 clsx: 2.1.1 merge-anything: 5.1.7 @@ -17258,150 +17804,150 @@ snapshots: - supports-color - zod - '@inkeep/cxkit-theme@0.5.96': + '@inkeep/cxkit-theme@0.5.97': dependencies: colorjs.io: 0.5.2 - '@inkeep/cxkit-types@0.5.96': {} + '@inkeep/cxkit-types@0.5.97': {} '@inquirer/ansi@1.0.0': {} - '@inquirer/checkbox@4.2.4(@types/node@22.17.2)': + '@inquirer/checkbox@4.2.4(@types/node@22.18.1)': dependencies: '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@22.17.2) + '@inquirer/core': 10.2.2(@types/node@22.18.1) '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@22.17.2) + '@inquirer/type': 3.0.8(@types/node@22.18.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 - '@inquirer/confirm@5.1.14(@types/node@22.17.2)': + '@inquirer/confirm@5.1.14(@types/node@22.18.1)': dependencies: - '@inquirer/core': 10.2.2(@types/node@22.17.2) - '@inquirer/type': 3.0.8(@types/node@22.17.2) + '@inquirer/core': 10.2.2(@types/node@22.18.1) + '@inquirer/type': 3.0.8(@types/node@22.18.1) optionalDependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 - '@inquirer/confirm@5.1.18(@types/node@22.17.2)': + '@inquirer/confirm@5.1.18(@types/node@22.18.1)': dependencies: - '@inquirer/core': 10.2.2(@types/node@22.17.2) - '@inquirer/type': 3.0.8(@types/node@22.17.2) + '@inquirer/core': 10.2.2(@types/node@22.18.1) + '@inquirer/type': 3.0.8(@types/node@22.18.1) optionalDependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 - '@inquirer/core@10.2.2(@types/node@22.17.2)': + '@inquirer/core@10.2.2(@types/node@22.18.1)': dependencies: '@inquirer/ansi': 1.0.0 '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@22.17.2) + '@inquirer/type': 3.0.8(@types/node@22.18.1) 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': 22.17.2 + '@types/node': 22.18.1 - '@inquirer/editor@4.2.20(@types/node@22.17.2)': + '@inquirer/editor@4.2.20(@types/node@22.18.1)': dependencies: - '@inquirer/core': 10.2.2(@types/node@22.17.2) - '@inquirer/external-editor': 1.0.2(@types/node@22.17.2) - '@inquirer/type': 3.0.8(@types/node@22.17.2) + '@inquirer/core': 10.2.2(@types/node@22.18.1) + '@inquirer/external-editor': 1.0.2(@types/node@22.18.1) + '@inquirer/type': 3.0.8(@types/node@22.18.1) optionalDependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 - '@inquirer/expand@4.0.20(@types/node@22.17.2)': + '@inquirer/expand@4.0.20(@types/node@22.18.1)': dependencies: - '@inquirer/core': 10.2.2(@types/node@22.17.2) - '@inquirer/type': 3.0.8(@types/node@22.17.2) + '@inquirer/core': 10.2.2(@types/node@22.18.1) + '@inquirer/type': 3.0.8(@types/node@22.18.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 - '@inquirer/external-editor@1.0.1(@types/node@24.3.0)': + '@inquirer/external-editor@1.0.1(@types/node@24.3.1)': dependencies: chardet: 2.1.0 iconv-lite: 0.6.3 optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 24.3.1 - '@inquirer/external-editor@1.0.2(@types/node@22.17.2)': + '@inquirer/external-editor@1.0.2(@types/node@22.18.1)': dependencies: chardet: 2.1.0 iconv-lite: 0.7.0 optionalDependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 '@inquirer/figures@1.0.13': {} - '@inquirer/input@4.2.4(@types/node@22.17.2)': + '@inquirer/input@4.2.4(@types/node@22.18.1)': dependencies: - '@inquirer/core': 10.2.2(@types/node@22.17.2) - '@inquirer/type': 3.0.8(@types/node@22.17.2) + '@inquirer/core': 10.2.2(@types/node@22.18.1) + '@inquirer/type': 3.0.8(@types/node@22.18.1) optionalDependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 - '@inquirer/number@3.0.20(@types/node@22.17.2)': + '@inquirer/number@3.0.20(@types/node@22.18.1)': dependencies: - '@inquirer/core': 10.2.2(@types/node@22.17.2) - '@inquirer/type': 3.0.8(@types/node@22.17.2) + '@inquirer/core': 10.2.2(@types/node@22.18.1) + '@inquirer/type': 3.0.8(@types/node@22.18.1) optionalDependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 - '@inquirer/password@4.0.20(@types/node@22.17.2)': + '@inquirer/password@4.0.20(@types/node@22.18.1)': dependencies: '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@22.17.2) - '@inquirer/type': 3.0.8(@types/node@22.17.2) + '@inquirer/core': 10.2.2(@types/node@22.18.1) + '@inquirer/type': 3.0.8(@types/node@22.18.1) optionalDependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 - '@inquirer/prompts@7.8.2(@types/node@22.17.2)': + '@inquirer/prompts@7.8.2(@types/node@22.18.1)': dependencies: - '@inquirer/checkbox': 4.2.4(@types/node@22.17.2) - '@inquirer/confirm': 5.1.18(@types/node@22.17.2) - '@inquirer/editor': 4.2.20(@types/node@22.17.2) - '@inquirer/expand': 4.0.20(@types/node@22.17.2) - '@inquirer/input': 4.2.4(@types/node@22.17.2) - '@inquirer/number': 3.0.20(@types/node@22.17.2) - '@inquirer/password': 4.0.20(@types/node@22.17.2) - '@inquirer/rawlist': 4.1.8(@types/node@22.17.2) - '@inquirer/search': 3.1.3(@types/node@22.17.2) - '@inquirer/select': 4.3.4(@types/node@22.17.2) + '@inquirer/checkbox': 4.2.4(@types/node@22.18.1) + '@inquirer/confirm': 5.1.18(@types/node@22.18.1) + '@inquirer/editor': 4.2.20(@types/node@22.18.1) + '@inquirer/expand': 4.0.20(@types/node@22.18.1) + '@inquirer/input': 4.2.4(@types/node@22.18.1) + '@inquirer/number': 3.0.20(@types/node@22.18.1) + '@inquirer/password': 4.0.20(@types/node@22.18.1) + '@inquirer/rawlist': 4.1.8(@types/node@22.18.1) + '@inquirer/search': 3.1.3(@types/node@22.18.1) + '@inquirer/select': 4.3.4(@types/node@22.18.1) optionalDependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 - '@inquirer/rawlist@4.1.8(@types/node@22.17.2)': + '@inquirer/rawlist@4.1.8(@types/node@22.18.1)': dependencies: - '@inquirer/core': 10.2.2(@types/node@22.17.2) - '@inquirer/type': 3.0.8(@types/node@22.17.2) + '@inquirer/core': 10.2.2(@types/node@22.18.1) + '@inquirer/type': 3.0.8(@types/node@22.18.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 - '@inquirer/search@3.1.3(@types/node@22.17.2)': + '@inquirer/search@3.1.3(@types/node@22.18.1)': dependencies: - '@inquirer/core': 10.2.2(@types/node@22.17.2) + '@inquirer/core': 10.2.2(@types/node@22.18.1) '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@22.17.2) + '@inquirer/type': 3.0.8(@types/node@22.18.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 - '@inquirer/select@4.3.4(@types/node@22.17.2)': + '@inquirer/select@4.3.4(@types/node@22.18.1)': dependencies: '@inquirer/ansi': 1.0.0 - '@inquirer/core': 10.2.2(@types/node@22.17.2) + '@inquirer/core': 10.2.2(@types/node@22.18.1) '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@22.17.2) + '@inquirer/type': 3.0.8(@types/node@22.18.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 - '@inquirer/type@3.0.8(@types/node@22.17.2)': + '@inquirer/type@3.0.8(@types/node@22.18.1)': optionalDependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 '@isaacs/balanced-match@4.0.1': {} @@ -17413,7 +17959,7 @@ snapshots: dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 @@ -17424,34 +17970,47 @@ snapshots: '@istanbuljs/schema@0.1.3': {} + '@jest/diff-sequences@30.0.1': {} + + '@jest/get-type@30.1.0': {} + '@jest/schemas@29.6.3': dependencies: '@sinclair/typebox': 0.27.8 + '@jest/schemas@30.0.5': + dependencies: + '@sinclair/typebox': 0.34.41 + '@jest/types@29.6.3': dependencies: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.17.2 + '@types/node': 22.18.1 '@types/yargs': 17.0.33 chalk: 4.1.2 '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/source-map@0.3.11': dependencies: '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/trace-mapping@0.3.30': + '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 @@ -17462,10 +18021,10 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@3.0.1(@inquirer/prompts@7.8.2(@types/node@22.17.2))(@types/node@22.17.2)(listr2@9.0.1)': + '@listr2/prompt-adapter-inquirer@3.0.1(@inquirer/prompts@7.8.2(@types/node@22.18.1))(@types/node@22.18.1)(listr2@9.0.1)': dependencies: - '@inquirer/prompts': 7.8.2(@types/node@22.17.2) - '@inquirer/type': 3.0.8(@types/node@22.17.2) + '@inquirer/prompts': 7.8.2(@types/node@22.18.1) + '@inquirer/type': 3.0.8(@types/node@22.18.1) listr2: 9.0.1 transitivePeerDependencies: - '@types/node' @@ -17493,14 +18052,14 @@ snapshots: '@manypkg/find-root@1.1.0': dependencies: - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.28.4 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 '@manypkg/get-packages@1.1.3': dependencies: - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.28.4 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -17522,12 +18081,13 @@ snapshots: - encoding - supports-color - '@mdx-js/mdx@3.1.0(acorn@8.15.0)': + '@mdx-js/mdx@3.1.1': dependencies: '@types/estree': 1.0.8 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdx': 2.0.13 + acorn: 8.15.0 collapse-white-space: 2.1.0 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 @@ -17539,7 +18099,7 @@ snapshots: recma-jsx: 1.0.1(acorn@8.15.0) recma-stringify: 1.0.0 rehype-recma: 1.0.0 - remark-mdx: 3.1.0 + remark-mdx: 3.1.1 remark-parse: 11.0.0 remark-rehype: 11.1.2 source-map: 0.7.6 @@ -17549,10 +18109,9 @@ snapshots: unist-util-visit: 5.0.0 vfile: 6.0.3 transitivePeerDependencies: - - acorn - supports-color - '@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1)': + '@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1)': dependencies: '@types/mdx': 2.0.13 '@types/react': 19.1.2 @@ -17579,30 +18138,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@module-federation/error-codes@0.17.1': {} + '@module-federation/error-codes@0.18.0': {} - '@module-federation/runtime-core@0.17.1': + '@module-federation/runtime-core@0.18.0': dependencies: - '@module-federation/error-codes': 0.17.1 - '@module-federation/sdk': 0.17.1 + '@module-federation/error-codes': 0.18.0 + '@module-federation/sdk': 0.18.0 - '@module-federation/runtime-tools@0.17.1': + '@module-federation/runtime-tools@0.18.0': dependencies: - '@module-federation/runtime': 0.17.1 - '@module-federation/webpack-bundler-runtime': 0.17.1 + '@module-federation/runtime': 0.18.0 + '@module-federation/webpack-bundler-runtime': 0.18.0 - '@module-federation/runtime@0.17.1': + '@module-federation/runtime@0.18.0': dependencies: - '@module-federation/error-codes': 0.17.1 - '@module-federation/runtime-core': 0.17.1 - '@module-federation/sdk': 0.17.1 + '@module-federation/error-codes': 0.18.0 + '@module-federation/runtime-core': 0.18.0 + '@module-federation/sdk': 0.18.0 - '@module-federation/sdk@0.17.1': {} + '@module-federation/sdk@0.18.0': {} - '@module-federation/webpack-bundler-runtime@0.17.1': + '@module-federation/webpack-bundler-runtime@0.18.0': dependencies: - '@module-federation/runtime': 0.17.1 - '@module-federation/sdk': 0.17.1 + '@module-federation/runtime': 0.18.0 + '@module-federation/sdk': 0.18.0 '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': optional: true @@ -17696,21 +18255,27 @@ snapshots: '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@emnapi/core': 1.4.5 - '@emnapi/runtime': 1.4.5 + '@emnapi/core': 1.5.0 + '@emnapi/runtime': 1.5.0 '@tybys/wasm-util': 0.10.0 optional: true - '@napi-rs/wasm-runtime@1.0.3': + '@napi-rs/wasm-runtime@0.2.4': dependencies: - '@emnapi/core': 1.4.5 - '@emnapi/runtime': 1.4.5 + '@emnapi/core': 1.5.0 + '@emnapi/runtime': 1.5.0 + '@tybys/wasm-util': 0.9.0 + + '@napi-rs/wasm-runtime@1.0.4': + dependencies: + '@emnapi/core': 1.5.0 + '@emnapi/runtime': 1.5.0 '@tybys/wasm-util': 0.10.0 optional: true - '@netlify/build-info@10.0.7': + '@netlify/build-info@10.0.8': dependencies: - '@bugsnag/js': 8.4.0 + '@bugsnag/js': 8.6.0 '@iarna/toml': 2.2.5 dot-prop: 9.0.0 find-up: 7.0.0 @@ -17750,10 +18315,10 @@ snapshots: '@next/swc-win32-x64-msvc@15.4.0-canary.86': optional: true - '@ng-icons/core@32.1.0(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@ng-icons/core@32.1.0(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 @@ -17761,10 +18326,10 @@ snapshots: dependencies: tslib: 2.8.1 - '@ngx-translate/core@17.0.0(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))': + '@ngx-translate/core@17.0.0(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/common': 20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': @@ -17844,6 +18409,36 @@ snapshots: transitivePeerDependencies: - supports-color + '@nx/nx-darwin-arm64@21.6.3': + optional: true + + '@nx/nx-darwin-x64@21.6.3': + optional: true + + '@nx/nx-freebsd-x64@21.6.3': + optional: true + + '@nx/nx-linux-arm-gnueabihf@21.6.3': + optional: true + + '@nx/nx-linux-arm64-gnu@21.6.3': + optional: true + + '@nx/nx-linux-arm64-musl@21.6.3': + optional: true + + '@nx/nx-linux-x64-gnu@21.6.3': + optional: true + + '@nx/nx-linux-x64-musl@21.6.3': + optional: true + + '@nx/nx-win32-arm64-msvc@21.6.3': + optional: true + + '@nx/nx-win32-x64-msvc@21.6.3': + optional: true + '@otplib/core@12.0.1': {} '@otplib/plugin-crypto@12.0.1': @@ -17855,67 +18450,63 @@ snapshots: '@otplib/core': 12.0.1 thirty-two: 1.0.2 - '@oxc-project/runtime@0.81.0': {} - - '@oxc-project/types@0.81.0': {} - - '@oxc-resolver/binding-android-arm-eabi@11.6.2': + '@oxc-resolver/binding-android-arm-eabi@11.7.1': optional: true - '@oxc-resolver/binding-android-arm64@11.6.2': + '@oxc-resolver/binding-android-arm64@11.7.1': optional: true - '@oxc-resolver/binding-darwin-arm64@11.6.2': + '@oxc-resolver/binding-darwin-arm64@11.7.1': optional: true - '@oxc-resolver/binding-darwin-x64@11.6.2': + '@oxc-resolver/binding-darwin-x64@11.7.1': optional: true - '@oxc-resolver/binding-freebsd-x64@11.6.2': + '@oxc-resolver/binding-freebsd-x64@11.7.1': optional: true - '@oxc-resolver/binding-linux-arm-gnueabihf@11.6.2': + '@oxc-resolver/binding-linux-arm-gnueabihf@11.7.1': optional: true - '@oxc-resolver/binding-linux-arm-musleabihf@11.6.2': + '@oxc-resolver/binding-linux-arm-musleabihf@11.7.1': optional: true - '@oxc-resolver/binding-linux-arm64-gnu@11.6.2': + '@oxc-resolver/binding-linux-arm64-gnu@11.7.1': optional: true - '@oxc-resolver/binding-linux-arm64-musl@11.6.2': + '@oxc-resolver/binding-linux-arm64-musl@11.7.1': optional: true - '@oxc-resolver/binding-linux-ppc64-gnu@11.6.2': + '@oxc-resolver/binding-linux-ppc64-gnu@11.7.1': optional: true - '@oxc-resolver/binding-linux-riscv64-gnu@11.6.2': + '@oxc-resolver/binding-linux-riscv64-gnu@11.7.1': optional: true - '@oxc-resolver/binding-linux-riscv64-musl@11.6.2': + '@oxc-resolver/binding-linux-riscv64-musl@11.7.1': optional: true - '@oxc-resolver/binding-linux-s390x-gnu@11.6.2': + '@oxc-resolver/binding-linux-s390x-gnu@11.7.1': optional: true - '@oxc-resolver/binding-linux-x64-gnu@11.6.2': + '@oxc-resolver/binding-linux-x64-gnu@11.7.1': optional: true - '@oxc-resolver/binding-linux-x64-musl@11.6.2': + '@oxc-resolver/binding-linux-x64-musl@11.7.1': optional: true - '@oxc-resolver/binding-wasm32-wasi@11.6.2': + '@oxc-resolver/binding-wasm32-wasi@11.7.1': dependencies: - '@napi-rs/wasm-runtime': 1.0.3 + '@napi-rs/wasm-runtime': 1.0.4 optional: true - '@oxc-resolver/binding-win32-arm64-msvc@11.6.2': + '@oxc-resolver/binding-win32-arm64-msvc@11.7.1': optional: true - '@oxc-resolver/binding-win32-ia32-msvc@11.6.2': + '@oxc-resolver/binding-win32-ia32-msvc@11.7.1': optional: true - '@oxc-resolver/binding-win32-x64-msvc@11.6.2': + '@oxc-resolver/binding-win32-x64-msvc@11.7.1': optional: true '@parcel/watcher-android-arm64@2.5.1': @@ -18000,6 +18591,8 @@ snapshots: '@polka/url@1.0.0-next.29': {} + '@posthog/core@1.0.2': {} + '@protobufjs/aspromise@1.1.2': {} '@protobufjs/base64@1.1.2': {} @@ -18035,6 +18628,7 @@ snapshots: yargs: 17.7.2 transitivePeerDependencies: - bare-buffer + - react-native-b4a - supports-color optional: true @@ -18777,22 +19371,22 @@ snapshots: '@radix-ui/rect@1.1.1': {} - '@react-aria/focus@3.21.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@react-aria/focus@3.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@react-aria/interactions': 3.25.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@react-aria/utils': 3.30.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@react-types/shared': 3.31.0(react@19.1.0) + '@react-aria/interactions': 3.25.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@react-aria/utils': 3.30.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@react-types/shared': 3.32.0(react@19.1.0) '@swc/helpers': 0.5.17 clsx: 2.1.1 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@react-aria/interactions@3.25.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@react-aria/interactions@3.25.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@react-aria/ssr': 3.9.10(react@19.1.0) - '@react-aria/utils': 3.30.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@react-aria/utils': 3.30.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@react-stately/flags': 3.1.2 - '@react-types/shared': 3.31.0(react@19.1.0) + '@react-types/shared': 3.32.0(react@19.1.0) '@swc/helpers': 0.5.17 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -18802,12 +19396,12 @@ snapshots: '@swc/helpers': 0.5.17 react: 19.1.0 - '@react-aria/utils@3.30.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@react-aria/utils@3.30.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@react-aria/ssr': 3.9.10(react@19.1.0) '@react-stately/flags': 3.1.2 '@react-stately/utils': 3.10.8(react@19.1.0) - '@react-types/shared': 3.31.0(react@19.1.0) + '@react-types/shared': 3.32.0(react@19.1.0) '@swc/helpers': 0.5.17 clsx: 2.1.1 react: 19.1.0 @@ -18822,7 +19416,7 @@ snapshots: '@swc/helpers': 0.5.17 react: 19.1.0 - '@react-types/shared@3.31.0(react@19.1.0)': + '@react-types/shared@3.32.0(react@19.1.0)': dependencies: react: 19.1.0 @@ -18859,163 +19453,186 @@ snapshots: react: 18.3.1 react-redux: 7.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rolldown/binding-android-arm64@1.0.0-beta.32': - optional: true - - '@rolldown/binding-darwin-arm64@1.0.0-beta.32': - optional: true - - '@rolldown/binding-darwin-x64@1.0.0-beta.32': - optional: true - - '@rolldown/binding-freebsd-x64@1.0.0-beta.32': - optional: true - - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.32': - optional: true - - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.32': - optional: true - - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.32': - optional: true - - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.32': - optional: true - - '@rolldown/binding-linux-x64-musl@1.0.0-beta.32': - optional: true - - '@rolldown/binding-openharmony-arm64@1.0.0-beta.32': - optional: true - - '@rolldown/binding-wasm32-wasi@1.0.0-beta.32': - dependencies: - '@napi-rs/wasm-runtime': 1.0.3 - optional: true - - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.32': - optional: true - - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.32': - optional: true - - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.32': - optional: true - '@rolldown/pluginutils@1.0.0-beta.27': {} - '@rolldown/pluginutils@1.0.0-beta.32': {} - - '@rollup/rollup-android-arm-eabi@4.47.1': + '@rollup/rollup-android-arm-eabi@4.50.1': optional: true - '@rollup/rollup-android-arm64@4.47.1': + '@rollup/rollup-android-arm-eabi@4.52.3': optional: true - '@rollup/rollup-darwin-arm64@4.47.1': + '@rollup/rollup-android-arm64@4.50.1': optional: true - '@rollup/rollup-darwin-x64@4.47.1': + '@rollup/rollup-android-arm64@4.52.3': optional: true - '@rollup/rollup-freebsd-arm64@4.47.1': + '@rollup/rollup-darwin-arm64@4.50.1': optional: true - '@rollup/rollup-freebsd-x64@4.47.1': + '@rollup/rollup-darwin-arm64@4.52.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.47.1': + '@rollup/rollup-darwin-x64@4.50.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.47.1': + '@rollup/rollup-darwin-x64@4.52.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.47.1': + '@rollup/rollup-freebsd-arm64@4.50.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.47.1': + '@rollup/rollup-freebsd-arm64@4.52.3': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.47.1': + '@rollup/rollup-freebsd-x64@4.50.1': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.47.1': + '@rollup/rollup-freebsd-x64@4.52.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.47.1': + '@rollup/rollup-linux-arm-gnueabihf@4.50.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.47.1': + '@rollup/rollup-linux-arm-gnueabihf@4.52.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.47.1': + '@rollup/rollup-linux-arm-musleabihf@4.50.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.47.1': + '@rollup/rollup-linux-arm-musleabihf@4.52.3': optional: true - '@rollup/rollup-linux-x64-musl@4.47.1': + '@rollup/rollup-linux-arm64-gnu@4.50.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.47.1': + '@rollup/rollup-linux-arm64-gnu@4.52.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.47.1': + '@rollup/rollup-linux-arm64-musl@4.50.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.47.1': + '@rollup/rollup-linux-arm64-musl@4.52.3': optional: true - '@rspack/binding-darwin-arm64@1.4.11': + '@rollup/rollup-linux-loong64-gnu@4.52.3': optional: true - '@rspack/binding-darwin-x64@1.4.11': + '@rollup/rollup-linux-loongarch64-gnu@4.50.1': optional: true - '@rspack/binding-linux-arm64-gnu@1.4.11': + '@rollup/rollup-linux-ppc64-gnu@4.50.1': optional: true - '@rspack/binding-linux-arm64-musl@1.4.11': + '@rollup/rollup-linux-ppc64-gnu@4.52.3': optional: true - '@rspack/binding-linux-x64-gnu@1.4.11': + '@rollup/rollup-linux-riscv64-gnu@4.50.1': optional: true - '@rspack/binding-linux-x64-musl@1.4.11': + '@rollup/rollup-linux-riscv64-gnu@4.52.3': optional: true - '@rspack/binding-wasm32-wasi@1.4.11': + '@rollup/rollup-linux-riscv64-musl@4.50.1': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.52.3': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.50.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.52.3': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.50.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.52.3': + optional: true + + '@rollup/rollup-linux-x64-musl@4.50.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.52.3': + optional: true + + '@rollup/rollup-openharmony-arm64@4.50.1': + optional: true + + '@rollup/rollup-openharmony-arm64@4.52.3': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.50.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.52.3': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.50.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.52.3': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.52.3': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.50.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.52.3': + optional: true + + '@rspack/binding-darwin-arm64@1.5.3': + optional: true + + '@rspack/binding-darwin-x64@1.5.3': + optional: true + + '@rspack/binding-linux-arm64-gnu@1.5.3': + optional: true + + '@rspack/binding-linux-arm64-musl@1.5.3': + optional: true + + '@rspack/binding-linux-x64-gnu@1.5.3': + optional: true + + '@rspack/binding-linux-x64-musl@1.5.3': + optional: true + + '@rspack/binding-wasm32-wasi@1.5.3': dependencies: - '@napi-rs/wasm-runtime': 1.0.3 + '@napi-rs/wasm-runtime': 1.0.4 optional: true - '@rspack/binding-win32-arm64-msvc@1.4.11': + '@rspack/binding-win32-arm64-msvc@1.5.3': optional: true - '@rspack/binding-win32-ia32-msvc@1.4.11': + '@rspack/binding-win32-ia32-msvc@1.5.3': optional: true - '@rspack/binding-win32-x64-msvc@1.4.11': + '@rspack/binding-win32-x64-msvc@1.5.3': optional: true - '@rspack/binding@1.4.11': + '@rspack/binding@1.5.3': optionalDependencies: - '@rspack/binding-darwin-arm64': 1.4.11 - '@rspack/binding-darwin-x64': 1.4.11 - '@rspack/binding-linux-arm64-gnu': 1.4.11 - '@rspack/binding-linux-arm64-musl': 1.4.11 - '@rspack/binding-linux-x64-gnu': 1.4.11 - '@rspack/binding-linux-x64-musl': 1.4.11 - '@rspack/binding-wasm32-wasi': 1.4.11 - '@rspack/binding-win32-arm64-msvc': 1.4.11 - '@rspack/binding-win32-ia32-msvc': 1.4.11 - '@rspack/binding-win32-x64-msvc': 1.4.11 + '@rspack/binding-darwin-arm64': 1.5.3 + '@rspack/binding-darwin-x64': 1.5.3 + '@rspack/binding-linux-arm64-gnu': 1.5.3 + '@rspack/binding-linux-arm64-musl': 1.5.3 + '@rspack/binding-linux-x64-gnu': 1.5.3 + '@rspack/binding-linux-x64-musl': 1.5.3 + '@rspack/binding-wasm32-wasi': 1.5.3 + '@rspack/binding-win32-arm64-msvc': 1.5.3 + '@rspack/binding-win32-ia32-msvc': 1.5.3 + '@rspack/binding-win32-x64-msvc': 1.5.3 - '@rspack/core@1.4.11(@swc/helpers@0.5.17)': + '@rspack/core@1.5.3(@swc/helpers@0.5.17)': dependencies: - '@module-federation/runtime-tools': 0.17.1 - '@rspack/binding': 1.4.11 + '@module-federation/runtime-tools': 0.18.0 + '@rspack/binding': 1.5.3 '@rspack/lite-tapable': 1.0.1 optionalDependencies: '@swc/helpers': 0.5.17 @@ -19026,10 +19643,10 @@ snapshots: '@rushstack/eslint-patch@1.12.0': {} - '@schematics/angular@20.3.2(chokidar@4.0.3)': + '@schematics/angular@20.3.4(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.3.2(chokidar@4.0.3) - '@angular-devkit/schematics': 20.3.2(chokidar@4.0.3) + '@angular-devkit/core': 20.3.4(chokidar@4.0.3) + '@angular-devkit/schematics': 20.3.4(chokidar@4.0.3) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar @@ -19042,9 +19659,9 @@ snapshots: '@sideway/pinpoint@2.0.0': {} - '@signalwire/docusaurus-plugin-llms-txt@1.2.2(@docusaurus/core@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))': + '@signalwire/docusaurus-plugin-llms-txt@1.2.2(@docusaurus/core@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))': dependencies: - '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) fs-extra: 11.3.1 hast-util-select: 6.0.4 hast-util-to-html: 9.0.5 @@ -19094,13 +19711,15 @@ snapshots: '@sinclair/typebox@0.27.8': {} + '@sinclair/typebox@0.34.41': {} + '@sindresorhus/is@4.6.0': {} '@sindresorhus/is@5.6.0': {} '@slorber/react-helmet-async@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.28.4 invariant: 2.2.4 prop-types: 15.8.1 react: 18.3.1 @@ -19116,54 +19735,56 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.28.3)': - dependencies: - '@babel/core': 7.28.3 + '@standard-schema/spec@1.0.0': {} - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.28.3)': + '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.28.3)': + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.28.3)': + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 - '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.28.3)': + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 - '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.28.3)': + '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 - '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.28.3)': + '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 - '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.28.3)': + '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 - '@svgr/babel-preset@8.1.0(@babel/core@7.28.3)': + '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.28.3) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.28.3) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.28.3) - '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.28.3) - '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.28.3) - '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.28.3) - '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.28.3) - '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.28.3) + '@babel/core': 7.28.4 + + '@svgr/babel-preset@8.1.0(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.28.4) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.28.4) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.28.4) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.28.4) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.28.4) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.28.4) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.28.4) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.28.4) '@svgr/core@8.1.0(typescript@5.9.2)': dependencies: - '@babel/core': 7.28.3 - '@svgr/babel-preset': 8.1.0(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@svgr/babel-preset': 8.1.0(@babel/core@7.28.4) camelcase: 6.3.0 cosmiconfig: 8.3.6(typescript@5.9.2) snake-case: 3.0.4 @@ -19173,13 +19794,13 @@ snapshots: '@svgr/hast-util-to-babel-ast@8.0.0': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 entities: 4.5.0 '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.9.2))': dependencies: - '@babel/core': 7.28.3 - '@svgr/babel-preset': 8.1.0(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@svgr/babel-preset': 8.1.0(@babel/core@7.28.4) '@svgr/core': 8.1.0(typescript@5.9.2) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 @@ -19197,11 +19818,11 @@ snapshots: '@svgr/webpack@8.1.0(typescript@5.9.2)': dependencies: - '@babel/core': 7.28.3 - '@babel/plugin-transform-react-constant-elements': 7.27.1(@babel/core@7.28.3) - '@babel/preset-env': 7.28.3(@babel/core@7.28.3) - '@babel/preset-react': 7.27.1(@babel/core@7.28.3) - '@babel/preset-typescript': 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/plugin-transform-react-constant-elements': 7.27.1(@babel/core@7.28.4) + '@babel/preset-env': 7.23.8(@babel/core@7.28.4) + '@babel/preset-react': 7.27.1(@babel/core@7.28.4) + '@babel/preset-typescript': 7.23.3(@babel/core@7.28.4) '@svgr/core': 8.1.0(typescript@5.9.2) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.9.2)) '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.9.2))(typescript@5.9.2) @@ -19209,51 +19830,51 @@ snapshots: - supports-color - typescript - '@swc/core-darwin-arm64@1.13.4': + '@swc/core-darwin-arm64@1.13.5': optional: true - '@swc/core-darwin-x64@1.13.4': + '@swc/core-darwin-x64@1.13.5': optional: true - '@swc/core-linux-arm-gnueabihf@1.13.4': + '@swc/core-linux-arm-gnueabihf@1.13.5': optional: true - '@swc/core-linux-arm64-gnu@1.13.4': + '@swc/core-linux-arm64-gnu@1.13.5': optional: true - '@swc/core-linux-arm64-musl@1.13.4': + '@swc/core-linux-arm64-musl@1.13.5': optional: true - '@swc/core-linux-x64-gnu@1.13.4': + '@swc/core-linux-x64-gnu@1.13.5': optional: true - '@swc/core-linux-x64-musl@1.13.4': + '@swc/core-linux-x64-musl@1.13.5': optional: true - '@swc/core-win32-arm64-msvc@1.13.4': + '@swc/core-win32-arm64-msvc@1.13.5': optional: true - '@swc/core-win32-ia32-msvc@1.13.4': + '@swc/core-win32-ia32-msvc@1.13.5': optional: true - '@swc/core-win32-x64-msvc@1.13.4': + '@swc/core-win32-x64-msvc@1.13.5': optional: true - '@swc/core@1.13.4(@swc/helpers@0.5.17)': + '@swc/core@1.13.5(@swc/helpers@0.5.17)': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.24 + '@swc/types': 0.1.25 optionalDependencies: - '@swc/core-darwin-arm64': 1.13.4 - '@swc/core-darwin-x64': 1.13.4 - '@swc/core-linux-arm-gnueabihf': 1.13.4 - '@swc/core-linux-arm64-gnu': 1.13.4 - '@swc/core-linux-arm64-musl': 1.13.4 - '@swc/core-linux-x64-gnu': 1.13.4 - '@swc/core-linux-x64-musl': 1.13.4 - '@swc/core-win32-arm64-msvc': 1.13.4 - '@swc/core-win32-ia32-msvc': 1.13.4 - '@swc/core-win32-x64-msvc': 1.13.4 + '@swc/core-darwin-arm64': 1.13.5 + '@swc/core-darwin-x64': 1.13.5 + '@swc/core-linux-arm-gnueabihf': 1.13.5 + '@swc/core-linux-arm64-gnu': 1.13.5 + '@swc/core-linux-arm64-musl': 1.13.5 + '@swc/core-linux-x64-gnu': 1.13.5 + '@swc/core-linux-x64-musl': 1.13.5 + '@swc/core-win32-arm64-msvc': 1.13.5 + '@swc/core-win32-ia32-msvc': 1.13.5 + '@swc/core-win32-x64-msvc': 1.13.5 '@swc/helpers': 0.5.17 '@swc/counter@0.1.3': {} @@ -19266,52 +19887,52 @@ snapshots: dependencies: tslib: 2.8.1 - '@swc/html-darwin-arm64@1.13.4': + '@swc/html-darwin-arm64@1.13.5': optional: true - '@swc/html-darwin-x64@1.13.4': + '@swc/html-darwin-x64@1.13.5': optional: true - '@swc/html-linux-arm-gnueabihf@1.13.4': + '@swc/html-linux-arm-gnueabihf@1.13.5': optional: true - '@swc/html-linux-arm64-gnu@1.13.4': + '@swc/html-linux-arm64-gnu@1.13.5': optional: true - '@swc/html-linux-arm64-musl@1.13.4': + '@swc/html-linux-arm64-musl@1.13.5': optional: true - '@swc/html-linux-x64-gnu@1.13.4': + '@swc/html-linux-x64-gnu@1.13.5': optional: true - '@swc/html-linux-x64-musl@1.13.4': + '@swc/html-linux-x64-musl@1.13.5': optional: true - '@swc/html-win32-arm64-msvc@1.13.4': + '@swc/html-win32-arm64-msvc@1.13.5': optional: true - '@swc/html-win32-ia32-msvc@1.13.4': + '@swc/html-win32-ia32-msvc@1.13.5': optional: true - '@swc/html-win32-x64-msvc@1.13.4': + '@swc/html-win32-x64-msvc@1.13.5': optional: true - '@swc/html@1.13.4': + '@swc/html@1.13.5': dependencies: '@swc/counter': 0.1.3 optionalDependencies: - '@swc/html-darwin-arm64': 1.13.4 - '@swc/html-darwin-x64': 1.13.4 - '@swc/html-linux-arm-gnueabihf': 1.13.4 - '@swc/html-linux-arm64-gnu': 1.13.4 - '@swc/html-linux-arm64-musl': 1.13.4 - '@swc/html-linux-x64-gnu': 1.13.4 - '@swc/html-linux-x64-musl': 1.13.4 - '@swc/html-win32-arm64-msvc': 1.13.4 - '@swc/html-win32-ia32-msvc': 1.13.4 - '@swc/html-win32-x64-msvc': 1.13.4 + '@swc/html-darwin-arm64': 1.13.5 + '@swc/html-darwin-x64': 1.13.5 + '@swc/html-linux-arm-gnueabihf': 1.13.5 + '@swc/html-linux-arm64-gnu': 1.13.5 + '@swc/html-linux-arm64-musl': 1.13.5 + '@swc/html-linux-x64-gnu': 1.13.5 + '@swc/html-linux-x64-musl': 1.13.5 + '@swc/html-win32-arm64-msvc': 1.13.5 + '@swc/html-win32-ia32-msvc': 1.13.5 + '@swc/html-win32-x64-msvc': 1.13.5 - '@swc/types@0.1.24': + '@swc/types@0.1.25': dependencies: '@swc/counter': 0.1.3 @@ -19326,20 +19947,20 @@ snapshots: '@tanem/svg-injector@10.1.68': dependencies: - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.28.4 content-type: 1.0.5 tslib: 2.8.1 - '@tanstack/angular-query-experimental@5.85.6(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))': + '@tanstack/angular-query-experimental@5.87.4(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/common': 20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1) - '@tanstack/query-core': 5.85.6 - '@tanstack/query-devtools': 5.84.0 + '@angular/common': 20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1) + '@tanstack/query-core': 5.87.4 + '@tanstack/query-devtools': 5.87.3 - '@tanstack/query-core@5.85.6': {} + '@tanstack/query-core@5.87.4': {} - '@tanstack/query-devtools@5.84.0': {} + '@tanstack/query-devtools@5.87.3': {} '@tanstack/react-virtual@3.13.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -19358,7 +19979,7 @@ snapshots: '@testing-library/dom@10.4.1': dependencies: '@babel/code-frame': 7.27.1 - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.28.4 '@types/aria-query': 5.0.4 aria-query: 5.3.0 dom-accessibility-api: 0.5.16 @@ -19377,7 +19998,7 @@ snapshots: '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.28.4 '@testing-library/dom': 10.4.1 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -19402,6 +20023,10 @@ snapshots: tslib: 2.8.1 optional: true + '@tybys/wasm-util@0.9.0': + dependencies: + tslib: 2.8.1 + '@types/acorn@4.0.6': dependencies: '@types/estree': 1.0.8 @@ -19411,33 +20036,33 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.28.3 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.28.0 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.28.3 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.17.2 + '@types/node': 22.18.1 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 '@types/codemirror@5.60.16': dependencies: @@ -19446,15 +20071,15 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 5.0.7 - '@types/node': 22.17.2 + '@types/node': 22.18.1 '@types/connect@3.4.38': dependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 '@types/cors@2.8.19': dependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 '@types/d3-array@3.2.1': {} @@ -19577,16 +20202,6 @@ snapshots: dependencies: '@types/ms': 2.1.0 - '@types/eslint-scope@3.7.7': - dependencies: - '@types/eslint': 9.6.1 - '@types/estree': 1.0.8 - - '@types/eslint@9.6.1': - dependencies: - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - '@types/estree-jsx@1.0.5': dependencies: '@types/estree': 1.0.8 @@ -19595,14 +20210,14 @@ snapshots: '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 0.17.5 '@types/express-serve-static-core@5.0.7': dependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 0.17.5 @@ -19645,7 +20260,7 @@ snapshots: '@types/http-proxy@1.17.16': dependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 '@types/istanbul-lib-coverage@2.0.6': {} @@ -19670,7 +20285,7 @@ snapshots: '@types/jsonwebtoken@9.0.10': dependencies: '@types/ms': 2.1.0 - '@types/node': 22.17.2 + '@types/node': 22.18.1 '@types/mdast@3.0.15': dependencies: @@ -19688,26 +20303,26 @@ snapshots: '@types/node-fetch@2.6.13': dependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 form-data: 4.0.4 '@types/node-forge@1.3.14': dependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 '@types/node@12.20.55': {} '@types/node@17.0.45': {} - '@types/node@18.19.123': + '@types/node@18.19.124': dependencies: undici-types: 5.26.5 - '@types/node@22.17.2': + '@types/node@22.18.1': dependencies: undici-types: 6.21.0 - '@types/node@24.3.0': + '@types/node@24.3.1': dependencies: undici-types: 7.10.0 @@ -19717,19 +20332,13 @@ snapshots: '@types/parse5@6.0.3': {} - '@types/pg@8.15.5': - dependencies: - '@types/node': 22.17.2 - pg-protocol: 1.10.3 - pg-types: 2.2.0 - '@types/prismjs@1.26.5': {} '@types/prop-types@15.7.15': {} '@types/qrcode@1.5.5': dependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 '@types/qs@6.14.0': {} @@ -19771,14 +20380,14 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 - '@types/semver@7.7.0': {} + '@types/semver@7.7.1': {} '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.17.2 + '@types/node': 22.18.1 '@types/serve-index@1.9.4': dependencies: @@ -19787,16 +20396,16 @@ snapshots: '@types/serve-static@1.15.8': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 22.17.2 + '@types/node': 22.18.1 '@types/send': 0.17.5 '@types/sinonjs__fake-timers@8.1.1': {} - '@types/sizzle@2.3.9': {} + '@types/sizzle@2.3.10': {} '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 '@types/tern@0.23.9': dependencies: @@ -19815,7 +20424,7 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 '@types/yargs-parser@21.0.3': {} @@ -19825,13 +20434,13 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 optional: true - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@8.40.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@8.43.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.40.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/parser': 8.43.0(eslint@8.57.1)(typescript@5.9.2) '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.9.2) '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.9.2) @@ -19847,10 +20456,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@8.40.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@8.43.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.40.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/parser': 8.43.0(eslint@8.57.1)(typescript@5.9.2) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.9.2) '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.9.2) @@ -19865,14 +20474,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.40.0(@typescript-eslint/parser@8.40.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.40.0(eslint@8.57.1)(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.40.0 - '@typescript-eslint/type-utils': 8.40.0(eslint@8.57.1)(typescript@5.9.2) - '@typescript-eslint/utils': 8.40.0(eslint@8.57.1)(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.40.0 + '@typescript-eslint/parser': 8.43.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.43.0 + '@typescript-eslint/type-utils': 8.43.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/utils': 8.43.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.43.0 eslint: 8.57.1 graphemer: 1.4.0 ignore: 7.0.5 @@ -19882,22 +20491,22 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.40.0(eslint@8.57.1)(typescript@5.9.2)': + '@typescript-eslint/parser@8.43.0(eslint@8.57.1)(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 8.40.0 - '@typescript-eslint/types': 8.40.0 - '@typescript-eslint/typescript-estree': 8.40.0(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.40.0 + '@typescript-eslint/scope-manager': 8.43.0 + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.43.0 debug: 4.4.1(supports-color@5.5.0) eslint: 8.57.1 typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.40.0(typescript@5.9.2)': + '@typescript-eslint/project-service@8.43.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.40.0(typescript@5.9.2) - '@typescript-eslint/types': 8.40.0 + '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) + '@typescript-eslint/types': 8.43.0 debug: 4.4.1(supports-color@5.5.0) typescript: 5.9.2 transitivePeerDependencies: @@ -19918,12 +20527,12 @@ snapshots: '@typescript-eslint/types': 8.0.0-alpha.20 '@typescript-eslint/visitor-keys': 8.0.0-alpha.20 - '@typescript-eslint/scope-manager@8.40.0': + '@typescript-eslint/scope-manager@8.43.0': dependencies: - '@typescript-eslint/types': 8.40.0 - '@typescript-eslint/visitor-keys': 8.40.0 + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/visitor-keys': 8.43.0 - '@typescript-eslint/tsconfig-utils@8.40.0(typescript@5.9.2)': + '@typescript-eslint/tsconfig-utils@8.43.0(typescript@5.9.2)': dependencies: typescript: 5.9.2 @@ -19951,11 +20560,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.40.0(eslint@8.57.1)(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.43.0(eslint@8.57.1)(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.40.0 - '@typescript-eslint/typescript-estree': 8.40.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.40.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.43.0(eslint@8.57.1)(typescript@5.9.2) debug: 4.4.1(supports-color@5.5.0) eslint: 8.57.1 ts-api-utils: 2.1.0(typescript@5.9.2) @@ -19969,7 +20578,7 @@ snapshots: '@typescript-eslint/types@8.0.0-alpha.20': {} - '@typescript-eslint/types@8.40.0': {} + '@typescript-eslint/types@8.43.0': {} '@typescript-eslint/typescript-estree@5.62.0(typescript@5.9.2)': dependencies: @@ -20015,12 +20624,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.40.0(typescript@5.9.2)': + '@typescript-eslint/typescript-estree@8.43.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/project-service': 8.40.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.40.0(typescript@5.9.2) - '@typescript-eslint/types': 8.40.0 - '@typescript-eslint/visitor-keys': 8.40.0 + '@typescript-eslint/project-service': 8.43.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/visitor-keys': 8.43.0 debug: 4.4.1(supports-color@5.5.0) fast-glob: 3.3.3 is-glob: 4.0.3 @@ -20033,9 +20642,9 @@ snapshots: '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) '@types/json-schema': 7.0.15 - '@types/semver': 7.7.0 + '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.2) @@ -20048,7 +20657,7 @@ snapshots: '@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.2) @@ -20059,7 +20668,7 @@ snapshots: '@typescript-eslint/utils@8.0.0-alpha.20(eslint@8.57.1)(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) '@typescript-eslint/scope-manager': 8.0.0-alpha.20 '@typescript-eslint/types': 8.0.0-alpha.20 '@typescript-eslint/typescript-estree': 8.0.0-alpha.20(typescript@5.9.2) @@ -20068,12 +20677,12 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@8.40.0(eslint@8.57.1)(typescript@5.9.2)': + '@typescript-eslint/utils@8.43.0(eslint@8.57.1)(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.40.0 - '@typescript-eslint/types': 8.40.0 - '@typescript-eslint/typescript-estree': 8.40.0(typescript@5.9.2) + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@typescript-eslint/scope-manager': 8.43.0 + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) eslint: 8.57.1 typescript: 5.9.2 transitivePeerDependencies: @@ -20094,9 +20703,9 @@ snapshots: '@typescript-eslint/types': 8.0.0-alpha.20 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.40.0': + '@typescript-eslint/visitor-keys@8.43.0': dependencies: - '@typescript-eslint/types': 8.40.0 + '@typescript-eslint/types': 8.43.0 eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} @@ -20162,19 +20771,19 @@ snapshots: '@vercel/git-hooks@1.0.0': {} - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.5(@types/node@22.17.2)(jiti@2.5.1)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.5(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(yaml@2.8.1))': dependencies: - vite: 7.1.5(@types/node@22.17.2)(jiti@2.5.1)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1) + vite: 7.1.5(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(yaml@2.8.1) - '@vitejs/plugin-react@4.7.0(vite@5.4.19(@types/node@22.17.2)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1))': + '@vitejs/plugin-react@4.7.0(vite@5.4.20(@types/node@22.18.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0))': dependencies: - '@babel/core': 7.28.3 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4) '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 5.4.19(@types/node@22.17.2)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1) + vite: 5.4.20(@types/node@22.18.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0) transitivePeerDependencies: - supports-color @@ -20182,24 +20791,24 @@ snapshots: dependencies: '@vitest/spy': 2.1.9 '@vitest/utils': 2.1.9 - chai: 5.3.1 + chai: 5.3.3 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.9(vite@5.4.19(@types/node@22.17.2)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1))': + '@vitest/mocker@2.1.9(vite@5.4.20(@types/node@22.18.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0))': dependencies: '@vitest/spy': 2.1.9 estree-walker: 3.0.3 - magic-string: 0.30.17 + magic-string: 0.30.19 optionalDependencies: - vite: 5.4.19(@types/node@22.17.2)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1) + vite: 5.4.20(@types/node@22.18.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0) - '@vitest/mocker@2.1.9(vite@5.4.19(@types/node@24.3.0)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1))': + '@vitest/mocker@2.1.9(vite@5.4.20(@types/node@24.3.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0))': dependencies: '@vitest/spy': 2.1.9 estree-walker: 3.0.3 - magic-string: 0.30.17 + magic-string: 0.30.19 optionalDependencies: - vite: 5.4.19(@types/node@24.3.0)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1) + vite: 5.4.20(@types/node@24.3.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0) '@vitest/pretty-format@2.1.9': dependencies: @@ -20213,7 +20822,7 @@ snapshots: '@vitest/snapshot@2.1.9': dependencies: '@vitest/pretty-format': 2.1.9 - magic-string: 0.30.17 + magic-string: 0.30.19 pathe: 1.1.2 '@vitest/spy@2.1.9': @@ -20223,7 +20832,7 @@ snapshots: '@vitest/utils@2.1.9': dependencies: '@vitest/pretty-format': 2.1.9 - loupe: 3.2.0 + loupe: 3.2.1 tinyrainbow: 1.2.0 '@webassemblyjs/ast@1.14.1': @@ -20308,43 +20917,52 @@ snapshots: '@yarnpkg/lockfile@1.1.0': {} - '@zag-js/core@1.21.7': + '@yarnpkg/parsers@3.0.2': dependencies: - '@zag-js/dom-query': 1.21.7 - '@zag-js/utils': 1.21.7 + js-yaml: 3.14.1 + tslib: 2.8.1 - '@zag-js/dom-query@1.21.7': + '@zag-js/core@1.22.1': dependencies: - '@zag-js/types': 1.21.7 + '@zag-js/dom-query': 1.22.1 + '@zag-js/utils': 1.22.1 - '@zag-js/focus-trap@1.21.7': + '@zag-js/dom-query@1.22.1': dependencies: - '@zag-js/dom-query': 1.21.7 + '@zag-js/types': 1.22.1 - '@zag-js/presence@1.21.7': + '@zag-js/focus-trap@1.22.1': dependencies: - '@zag-js/core': 1.21.7 - '@zag-js/dom-query': 1.21.7 - '@zag-js/types': 1.21.7 + '@zag-js/dom-query': 1.22.1 - '@zag-js/react@1.21.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@zag-js/presence@1.22.1': dependencies: - '@zag-js/core': 1.21.7 - '@zag-js/store': 1.21.7 - '@zag-js/types': 1.21.7 - '@zag-js/utils': 1.21.7 + '@zag-js/core': 1.22.1 + '@zag-js/dom-query': 1.22.1 + '@zag-js/types': 1.22.1 + + '@zag-js/react@1.22.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@zag-js/core': 1.22.1 + '@zag-js/store': 1.22.1 + '@zag-js/types': 1.22.1 + '@zag-js/utils': 1.22.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@zag-js/store@1.21.7': + '@zag-js/store@1.22.1': dependencies: proxy-compare: 3.0.1 - '@zag-js/types@1.21.7': + '@zag-js/types@1.22.1': dependencies: csstype: 3.1.3 - '@zag-js/utils@1.21.7': {} + '@zag-js/utils@1.22.1': {} + + '@zkochan/js-yaml@0.0.7': + dependencies: + argparse: 2.0.1 abbrev@1.1.1: {} @@ -20366,7 +20984,7 @@ snapshots: mime-types: 3.0.1 negotiator: 1.0.0 - acorn-import-phases@1.0.4(acorn@8.15.0): + acorn-import-attributes@1.9.5(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -20441,14 +21059,14 @@ snapshots: ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.6 + fast-uri: 3.1.0 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch-helper@3.26.0(algoliasearch@5.35.0): + algoliasearch-helper@3.26.0(algoliasearch@5.37.0): dependencies: '@algolia/events': 4.0.1 - algoliasearch: 5.35.0 + algoliasearch: 5.37.0 algoliasearch@5.35.0: dependencies: @@ -20467,21 +21085,38 @@ snapshots: '@algolia/requester-fetch': 5.35.0 '@algolia/requester-node-http': 5.35.0 + algoliasearch@5.37.0: + dependencies: + '@algolia/abtesting': 1.3.0 + '@algolia/client-abtesting': 5.37.0 + '@algolia/client-analytics': 5.37.0 + '@algolia/client-common': 5.37.0 + '@algolia/client-insights': 5.37.0 + '@algolia/client-personalization': 5.37.0 + '@algolia/client-query-suggestions': 5.37.0 + '@algolia/client-search': 5.37.0 + '@algolia/ingestion': 1.37.0 + '@algolia/monitoring': 1.37.0 + '@algolia/recommend': 5.37.0 + '@algolia/requester-browser-xhr': 5.37.0 + '@algolia/requester-fetch': 5.37.0 + '@algolia/requester-node-http': 5.37.0 + allof-merge@0.6.7: dependencies: json-crawl: 0.5.3 altcha-lib@1.3.0: {} - angular-oauth2-oidc@20.0.2(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)): + angular-oauth2-oidc@20.0.2(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)): dependencies: - '@angular/common': 20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - angularx-qrcode@20.0.0(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)): + angularx-qrcode@20.0.0(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)): dependencies: - '@angular/core': 20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1) qrcode: 1.5.4 tslib: 2.8.1 @@ -20495,7 +21130,7 @@ snapshots: dependencies: type-fest: 0.21.3 - ansi-escapes@7.0.0: + ansi-escapes@7.1.0: dependencies: environment: 1.1.0 @@ -20503,7 +21138,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.2.0: {} + ansi-regex@6.2.2: {} ansi-styles@4.3.0: dependencies: @@ -20511,9 +21146,7 @@ snapshots: ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} - - ansis@4.1.0: {} + ansi-styles@6.2.3: {} any-promise@1.3.0: {} @@ -20653,8 +21286,8 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.3): dependencies: - browserslist: 4.25.3 - caniuse-lite: 1.0.30001736 + browserslist: 4.25.4 + caniuse-lite: 1.0.30001741 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -20663,8 +21296,8 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.6): dependencies: - browserslist: 4.25.3 - caniuse-lite: 1.0.30001736 + browserslist: 4.25.4 + caniuse-lite: 1.0.30001741 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -20689,47 +21322,70 @@ snapshots: transitivePeerDependencies: - debug + axios@1.12.2: + dependencies: + follow-redirects: 1.15.11(debug@4.4.1) + form-data: 4.0.4 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + axobject-query@4.0.0: dependencies: dequal: 2.0.3 axobject-query@4.1.0: {} - b4a@1.6.7: + b4a@1.7.1: optional: true - babel-loader@9.2.1(@babel/core@7.28.3)(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))): + babel-loader@9.2.1(@babel/core@7.28.4)(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))): dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 find-cache-dir: 4.0.0 schema-utils: 4.3.2 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) babel-plugin-dynamic-import-node@2.3.3: dependencies: object.assign: 4.1.7 - babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.3): + babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.4): dependencies: - '@babel/compat-data': 7.28.0 - '@babel/core': 7.28.3 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.3) + '@babel/compat-data': 7.28.4 + '@babel/core': 7.28.4 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.3): + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.4): dependencies: - '@babel/core': 7.28.3 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) core-js-compat: 3.45.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.3): + babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.28.4): dependencies: - '@babel/core': 7.28.3 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.28.4) + core-js-compat: 3.45.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.28.4): + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.28.4) + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.4): + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) transitivePeerDependencies: - supports-color @@ -20740,11 +21396,15 @@ snapshots: bare-events@2.6.1: optional: true - bare-fs@4.2.1: + bare-fs@4.3.3: dependencies: bare-events: 2.6.1 bare-path: 3.0.0 bare-stream: 2.7.0(bare-events@2.6.1) + bare-url: 2.2.2 + fast-fifo: 1.3.2 + transitivePeerDependencies: + - react-native-b4a optional: true bare-os@3.6.2: @@ -20760,6 +21420,13 @@ snapshots: streamx: 2.22.1 optionalDependencies: bare-events: 2.6.1 + transitivePeerDependencies: + - react-native-b4a + optional: true + + bare-url@2.2.2: + dependencies: + bare-path: 3.0.0 optional: true base64-js@1.5.1: {} @@ -20859,7 +21526,7 @@ snapshots: dependencies: ansi-align: 3.0.1 camelcase: 7.0.1 - chalk: 5.6.0 + chalk: 5.6.2 cli-boxes: 3.0.0 string-width: 5.1.2 type-fest: 2.19.0 @@ -20881,12 +21548,12 @@ snapshots: browser-stdout@1.3.1: {} - browserslist@4.25.3: + browserslist@4.25.4: dependencies: - caniuse-lite: 1.0.30001736 - electron-to-chromium: 1.5.207 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.3) + caniuse-lite: 1.0.30001741 + electron-to-chromium: 1.5.217 + node-releases: 2.0.20 + update-browserslist-db: 1.1.3(browserslist@4.25.4) buffer-crc32@0.2.13: {} @@ -20929,7 +21596,7 @@ snapshots: minipass-pipeline: 1.2.4 p-map: 7.0.3 ssri: 12.0.0 - tar: 7.4.3 + tar: 7.5.1 unique-filename: 4.0.0 cacheable-lookup@7.0.0: {} @@ -20941,7 +21608,7 @@ snapshots: http-cache-semantics: 4.2.0 keyv: 4.5.4 mimic-response: 4.0.0 - normalize-url: 8.0.2 + normalize-url: 8.1.0 responselike: 3.0.0 cachedir@2.4.0: {} @@ -20982,12 +21649,12 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.25.3 - caniuse-lite: 1.0.30001736 + browserslist: 4.25.4 + caniuse-lite: 1.0.30001741 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001736: {} + caniuse-lite@1.0.30001741: {} case-anything@2.1.13: {} @@ -20995,12 +21662,12 @@ snapshots: ccount@2.0.1: {} - chai@5.3.1: + chai@5.3.3: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.2.0 + loupe: 3.2.1 pathval: 2.0.1 chalk@4.1.2: @@ -21008,7 +21675,7 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.6.0: {} + chalk@5.6.2: {} char-regex@1.0.2: {} @@ -21115,6 +21782,8 @@ snapshots: dependencies: restore-cursor: 5.1.0 + cli-spinners@2.6.1: {} + cli-spinners@2.9.2: {} cli-table3@0.6.1: @@ -21164,8 +21833,8 @@ snapshots: cliui@9.0.1: dependencies: string-width: 7.2.0 - strip-ansi: 7.1.0 - wrap-ansi: 9.0.0 + strip-ansi: 7.1.2 + wrap-ansi: 9.0.2 clone-deep@4.0.1: dependencies: @@ -21272,10 +21941,9 @@ snapshots: concat-map@0.0.1: {} - concurrently@9.2.0: + concurrently@9.2.1: dependencies: chalk: 4.1.2 - lodash: 4.17.21 rxjs: 7.8.2 shell-quote: 1.8.3 supports-color: 8.1.1 @@ -21343,13 +22011,13 @@ snapshots: is-what: 3.14.1 optional: true - copy-text-to-clipboard@3.2.0: {} + copy-text-to-clipboard@3.2.1: {} copy-to-clipboard@3.3.3: dependencies: toggle-selection: 1.0.6 - copy-webpack-plugin@11.0.0(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))): + copy-webpack-plugin@11.0.0(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))): dependencies: fast-glob: 3.3.3 glob-parent: 6.0.2 @@ -21357,11 +22025,11 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.3.2 serialize-javascript: 6.0.2 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) core-js-compat@3.45.1: dependencies: - browserslist: 4.25.3 + browserslist: 4.25.4 core-js-pure@3.45.1: {} @@ -21428,14 +22096,14 @@ snapshots: dependencies: postcss: 8.5.6 - css-has-pseudo@7.0.2(postcss@8.5.6): + css-has-pseudo@7.0.3(postcss@8.5.6): dependencies: '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) postcss: 8.5.6 postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - css-loader@6.11.0(@rspack/core@1.4.11(@swc/helpers@0.5.17))(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))): + css-loader@6.11.0(@rspack/core@1.5.3(@swc/helpers@0.5.17))(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))): dependencies: icss-utils: 5.1.0(postcss@8.5.3) postcss: 8.5.3 @@ -21446,18 +22114,18 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.2 optionalDependencies: - '@rspack/core': 1.4.11(@swc/helpers@0.5.17) - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + '@rspack/core': 1.5.3(@swc/helpers@0.5.17) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) - css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))): + css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))): dependencies: - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 cssnano: 6.1.2(postcss@8.5.3) jest-worker: 29.7.0 postcss: 8.5.3 schema-utils: 4.3.2 serialize-javascript: 6.0.2 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) optionalDependencies: clean-css: 5.3.3 @@ -21514,7 +22182,7 @@ snapshots: cssnano-preset-advanced@6.1.2(postcss@8.5.6): dependencies: autoprefixer: 10.4.21(postcss@8.5.6) - browserslist: 4.25.3 + browserslist: 4.25.4 cssnano-preset-default: 6.1.2(postcss@8.5.6) postcss: 8.5.6 postcss-discard-unused: 6.0.5(postcss@8.5.6) @@ -21524,7 +22192,7 @@ snapshots: cssnano-preset-default@6.1.2(postcss@8.5.3): dependencies: - browserslist: 4.25.3 + browserslist: 4.25.4 css-declaration-sorter: 7.2.0(postcss@8.5.3) cssnano-utils: 4.0.2(postcss@8.5.3) postcss: 8.5.3 @@ -21558,7 +22226,7 @@ snapshots: cssnano-preset-default@6.1.2(postcss@8.5.6): dependencies: - browserslist: 4.25.3 + browserslist: 4.25.4 css-declaration-sorter: 7.2.0(postcss@8.5.6) cssnano-utils: 4.0.2(postcss@8.5.6) postcss: 8.5.6 @@ -21630,7 +22298,7 @@ snapshots: '@cypress/request': 3.0.9 '@cypress/xvfb': 1.2.4(supports-color@8.1.1) '@types/sinonjs__fake-timers': 8.1.1 - '@types/sizzle': 2.3.9 + '@types/sizzle': 2.3.10 arch: 2.2.0 blob-util: 2.0.2 bluebird: 3.7.2 @@ -21643,7 +22311,7 @@ snapshots: cli-table3: 0.6.1 commander: 6.2.1 common-tags: 1.8.2 - dayjs: 1.11.13 + dayjs: 1.11.18 debug: 4.4.1(supports-color@8.1.1) enquirer: 2.4.1 eventemitter2: 6.4.7 @@ -21894,7 +22562,7 @@ snapshots: dateformat@4.6.3: {} - dayjs@1.11.13: {} + dayjs@1.11.18: {} debounce@1.2.1: {} @@ -22053,18 +22721,18 @@ snapshots: dependencies: esutils: 2.0.3 - docusaurus-plugin-image-zoom@3.0.1(@docusaurus/theme-classic@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(@types/react@19.1.2)(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)): + docusaurus-plugin-image-zoom@3.0.1(@docusaurus/theme-classic@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/react@19.1.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)): dependencies: - '@docusaurus/theme-classic': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(@types/react@19.1.2)(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/theme-classic': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/react@19.1.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) medium-zoom: 1.1.0 validate-peer-dependencies: 2.2.0 - docusaurus-plugin-openapi-docs@4.4.0(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@docusaurus/utils-validation@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@docusaurus/utils@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(encoding@0.1.13)(react@18.3.1): + docusaurus-plugin-openapi-docs@4.4.0(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@docusaurus/utils-validation@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@docusaurus/utils@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(encoding@0.1.13)(react@18.3.1): dependencies: '@apidevtools/json-schema-ref-parser': 11.9.3 - '@docusaurus/plugin-content-docs': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - '@docusaurus/utils': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-docs': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + '@docusaurus/utils': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@redocly/openapi-core': 1.34.5 allof-merge: 0.6.7 chalk: 4.1.2 @@ -22084,23 +22752,22 @@ snapshots: - encoding - supports-color - docusaurus-plugin-sass@0.2.6(@docusaurus/core@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(sass@1.90.0)(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))): + docusaurus-plugin-sass@0.2.6(@docusaurus/core@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(sass@1.92.1)(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))): dependencies: - '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) - sass: 1.90.0 - sass-loader: 16.0.5(@rspack/core@1.4.11(@swc/helpers@0.5.17))(sass@1.90.0)(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + '@docusaurus/core': 3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2) + sass: 1.92.1 + sass-loader: 16.0.5(@rspack/core@1.5.3(@swc/helpers@0.5.17))(sass@1.92.1)(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) transitivePeerDependencies: - '@rspack/core' - node-sass - sass-embedded - webpack - docusaurus-theme-github-codeblock@2.0.2(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + docusaurus-theme-github-codeblock@2.0.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@docusaurus/types': 3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@swc/core' - - acorn - esbuild - react - react-dom @@ -22108,18 +22775,18 @@ snapshots: - uglify-js - webpack-cli - docusaurus-theme-openapi-docs@4.4.0(0db1e8e79e0dfe0ffb8dc7fed1e08da7): + docusaurus-theme-openapi-docs@4.4.0(54fb35cc8885270933e262a2955c84b9): dependencies: - '@docusaurus/theme-common': 3.8.1(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-common': 3.8.1(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@hookform/error-message': 2.0.1(react-dom@18.3.1(react@18.3.1))(react-hook-form@7.62.0(react@18.3.1))(react@18.3.1) '@reduxjs/toolkit': 1.9.7(react-redux@7.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) allof-merge: 0.6.7 buffer: 6.0.3 clsx: 1.2.1 - copy-text-to-clipboard: 3.2.0 + copy-text-to-clipboard: 3.2.1 crypto-js: 4.2.0 - docusaurus-plugin-openapi-docs: 4.4.0(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@docusaurus/utils-validation@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@docusaurus/utils@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(encoding@0.1.13)(react@18.3.1) - docusaurus-plugin-sass: 0.2.6(@docusaurus/core@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.0(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.13.4(@swc/helpers@0.5.17))(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@rspack/core@1.4.11(@swc/helpers@0.5.17))(sass@1.90.0)(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + docusaurus-plugin-openapi-docs: 4.4.0(@docusaurus/plugin-content-docs@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@docusaurus/utils-validation@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@docusaurus/utils@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(encoding@0.1.13)(react@18.3.1) + docusaurus-plugin-sass: 0.2.6(@docusaurus/core@3.8.1(@docusaurus/faster@3.8.1(@docusaurus/types@3.8.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.17))(@mdx-js/react@3.1.1(@types/react@19.1.2)(react@18.3.1))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@rspack/core@1.5.3(@swc/helpers@0.5.17))(sass@1.92.1)(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) file-saver: 2.0.5 lodash: 4.17.21 pako: 2.1.0 @@ -22137,8 +22804,8 @@ snapshots: react-redux: 7.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rehype-raw: 6.1.1 remark-gfm: 3.0.1 - sass: 1.90.0 - sass-loader: 16.0.5(@rspack/core@1.4.11(@swc/helpers@0.5.17))(sass@1.90.0)(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + sass: 1.92.1 + sass-loader: 16.0.5(@rspack/core@1.5.3(@swc/helpers@0.5.17))(sass@1.92.1)(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) unist-util-visit: 5.0.0 url: 0.11.4 xml-formatter: 2.6.1 @@ -22226,6 +22893,12 @@ snapshots: dotenv-expand@10.0.0: {} + dotenv-expand@11.0.7: + dependencies: + dotenv: 16.6.1 + + dotenv@16.4.7: {} + dotenv@16.6.1: {} dprint-node@1.0.8: @@ -22253,9 +22926,9 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.207: {} + electron-to-chromium@1.5.217: {} - emoji-regex@10.4.0: {} + emoji-regex@10.5.0: {} emoji-regex@8.0.0: {} @@ -22285,7 +22958,7 @@ snapshots: engine.io@6.6.4: dependencies: '@types/cors': 2.8.19 - '@types/node': 22.17.2 + '@types/node': 22.18.1 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -22301,7 +22974,11 @@ snapshots: enhanced-resolve@5.18.3: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.2 + tapable: 2.2.3 + + enquirer@2.3.6: + dependencies: + ansi-colors: 4.1.3 enquirer@2.4.1: dependencies: @@ -22544,12 +23221,12 @@ snapshots: dependencies: '@next/eslint-plugin-next': 15.4.0-canary.86 '@rushstack/eslint-patch': 1.12.0 - '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@8.40.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) - '@typescript-eslint/parser': 8.40.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.43.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/parser': 8.43.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.40.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) eslint-plugin-react: 7.37.5(eslint@8.57.1) eslint-plugin-react-hooks: 5.2.0(eslint@8.57.1) @@ -22580,25 +23257,25 @@ snapshots: get-tsconfig: 4.10.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.40.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.40.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.43.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): dependencies: debug: 3.2.7(supports-color@8.1.1) optionalDependencies: - '@typescript-eslint/parser': 8.40.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/parser': 8.43.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.40.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -22609,7 +23286,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.40.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.43.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -22621,7 +23298,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.40.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/parser': 8.43.0(eslint@8.57.1)(typescript@5.9.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -22695,7 +23372,7 @@ snapshots: eslint@8.57.1: dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) '@eslint-community/regexpp': 4.12.1 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.1 @@ -22822,7 +23499,7 @@ snapshots: eval@0.1.8: dependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 require-like: 0.1.2 event-stream@3.3.4: @@ -23029,7 +23706,7 @@ snapshots: fast-safe-stringify@2.1.1: {} - fast-uri@3.0.6: {} + fast-uri@3.1.0: {} fastq@1.19.1: dependencies: @@ -23076,11 +23753,11 @@ snapshots: dependencies: flat-cache: 3.2.0 - file-loader@6.2.0(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))): + file-loader@6.2.0(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) file-saver@2.0.5: {} @@ -23153,9 +23830,9 @@ snapshots: fix-dts-default-cjs-exports@1.0.1: dependencies: - magic-string: 0.30.17 - mlly: 1.7.4 - rollup: 4.47.1 + magic-string: 0.30.19 + mlly: 1.8.0 + rollup: 4.50.1 flag-icons@7.5.0: {} @@ -23223,6 +23900,12 @@ snapshots: from@0.1.7: {} + front-matter@4.0.2: + dependencies: + js-yaml: 3.14.1 + + fs-constants@1.0.0: {} + fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 @@ -23311,7 +23994,7 @@ snapshots: get-caller-file@2.0.5: {} - get-east-asian-width@1.3.0: {} + get-east-asian-width@1.4.0: {} get-intrinsic@1.3.0: dependencies: @@ -23805,7 +24488,7 @@ snapshots: history@4.10.1: dependencies: - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.28.4 loose-envify: 1.4.0 resolve-pathname: 3.0.0 tiny-invariant: 1.3.3 @@ -23824,9 +24507,9 @@ snapshots: dependencies: lru-cache: 10.4.3 - hosted-git-info@9.0.0: + hosted-git-info@9.0.1: dependencies: - lru-cache: 11.1.0 + lru-cache: 11.2.1 hpack.js@2.1.6: dependencies: @@ -23851,7 +24534,7 @@ snapshots: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.43.1 + terser: 5.44.0 html-minifier-terser@7.2.0: dependencies: @@ -23861,7 +24544,7 @@ snapshots: entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.43.1 + terser: 5.44.0 html-tags@3.3.1: {} @@ -23871,16 +24554,16 @@ snapshots: html-void-elements@3.0.0: {} - html-webpack-plugin@5.6.4(@rspack/core@1.4.11(@swc/helpers@0.5.17))(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))): + html-webpack-plugin@5.6.4(@rspack/core@1.5.3(@swc/helpers@0.5.17))(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 lodash: 4.17.21 pretty-error: 4.0.0 - tapable: 2.2.2 + tapable: 2.2.3 optionalDependencies: - '@rspack/core': 1.4.11(@swc/helpers@0.5.17) - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + '@rspack/core': 1.5.3(@swc/helpers@0.5.17) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) htmlparser2@10.0.0: dependencies: @@ -24046,7 +24729,7 @@ snapshots: indent-string@4.0.0: {} - index-to-position@1.1.0: {} + index-to-position@1.2.0: {} infima@0.2.0-alpha.45: {} @@ -24180,9 +24863,9 @@ snapshots: is-fullwidth-code-point@4.0.0: {} - is-fullwidth-code-point@5.0.0: + is-fullwidth-code-point@5.1.0: dependencies: - get-east-asian-width: 1.3.0 + get-east-asian-width: 1.4.0 is-generator-function@1.1.0: dependencies: @@ -24210,7 +24893,7 @@ snapshots: is-negative-zero@2.0.3: {} - is-npm@6.0.0: {} + is-npm@6.1.0: {} is-number-object@1.1.1: dependencies: @@ -24333,8 +25016,8 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.28.3 - '@babel/parser': 7.28.3 + '@babel/core': 7.23.7 + '@babel/parser': 7.28.4 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -24343,8 +25026,8 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - '@babel/core': 7.28.3 - '@babel/parser': 7.28.3 + '@babel/core': 7.28.4 + '@babel/parser': 7.28.4 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.7.2 @@ -24407,10 +25090,17 @@ snapshots: dependencies: colors: 1.4.0 + jest-diff@30.1.2: + dependencies: + '@jest/diff-sequences': 30.0.1 + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + pretty-format: 30.0.5 + jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.17.2 + '@types/node': 22.18.1 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -24418,13 +25108,13 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -24441,6 +25131,16 @@ snapshots: '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 + joi@18.0.1: + dependencies: + '@hapi/address': 5.1.1 + '@hapi/formula': 3.0.2 + '@hapi/hoek': 11.0.7 + '@hapi/pinpoint': 2.0.1 + '@hapi/tlds': 1.1.3 + '@hapi/topo': 6.0.2 + '@standard-schema/spec': 1.0.0 + jose@5.10.0: {} joycon@3.1.1: {} @@ -24469,7 +25169,7 @@ snapshots: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.21 + nwsapi: 2.2.22 parse5: 7.3.0 rrweb-cssom: 0.8.0 saxes: 6.0.0 @@ -24529,6 +25229,8 @@ snapshots: json5@2.2.3: {} + jsonc-parser@3.2.0: {} + jsonc-parser@3.3.1: {} jsonfile@4.0.0: @@ -24665,16 +25367,16 @@ snapshots: kleur@4.1.5: {} - knip@5.63.0(@types/node@24.3.0)(typescript@5.9.2): + knip@5.63.1(@types/node@24.3.1)(typescript@5.9.2): dependencies: '@nodelib/fs.walk': 1.2.8 - '@types/node': 24.3.0 + '@types/node': 24.3.1 fast-glob: 3.3.3 formatly: 0.3.0 jiti: 2.5.1 js-yaml: 4.1.0 minimist: 1.2.8 - oxc-resolver: 11.6.2 + oxc-resolver: 11.7.1 picocolors: 1.1.1 picomatch: 4.0.3 smol-toml: 1.4.2 @@ -24714,7 +25416,7 @@ snapshots: lazy-ass@1.6.0: {} - less@4.4.0: + less@4.1.3: dependencies: copy-anything: 2.0.6 parse-node-version: 1.0.1 @@ -24736,7 +25438,7 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - libphonenumber-js@1.12.13: {} + libphonenumber-js@1.12.15: {} lightningcss-darwin-arm64@1.30.1: optional: true @@ -24789,9 +25491,11 @@ snapshots: lines-and-columns@1.2.4: {} + lines-and-columns@2.0.3: {} + lint-staged@15.5.1: dependencies: - chalk: 5.6.0 + chalk: 5.6.2 commander: 13.1.0 debug: 4.4.1(supports-color@5.5.0) execa: 8.0.1 @@ -24826,7 +25530,7 @@ snapshots: eventemitter3: 5.0.1 log-update: 6.1.0 rfdc: 1.4.1 - wrap-ansi: 9.0.0 + wrap-ansi: 9.0.2 listr2@9.0.1: dependencies: @@ -24835,7 +25539,7 @@ snapshots: eventemitter3: 5.0.1 log-update: 6.1.0 rfdc: 1.4.1 - wrap-ansi: 9.0.0 + wrap-ansi: 9.0.2 lmdb@3.4.2: dependencies: @@ -24868,7 +25572,7 @@ snapshots: local-pkg@1.1.2: dependencies: - mlly: 1.7.4 + mlly: 1.8.0 pkg-types: 2.3.0 quansync: 0.2.11 @@ -24929,7 +25633,7 @@ snapshots: log-symbols@6.0.0: dependencies: - chalk: 5.6.0 + chalk: 5.6.2 is-unicode-supported: 1.3.0 log-update@4.0.0: @@ -24941,11 +25645,11 @@ snapshots: log-update@6.1.0: dependencies: - ansi-escapes: 7.0.0 + ansi-escapes: 7.1.0 cli-cursor: 5.0.0 - slice-ansi: 7.1.0 - strip-ansi: 7.1.0 - wrap-ansi: 9.0.0 + slice-ansi: 7.1.2 + strip-ansi: 7.1.2 + wrap-ansi: 9.0.2 log4js@6.9.1: dependencies: @@ -24965,7 +25669,7 @@ snapshots: dependencies: js-tokens: 4.0.0 - loupe@3.2.0: {} + loupe@3.2.1: {} lower-case@2.0.2: dependencies: @@ -24975,7 +25679,7 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.1.0: {} + lru-cache@11.2.1: {} lru-cache@5.1.1: dependencies: @@ -24998,9 +25702,13 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + magic-string@0.30.19: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + make-dir-cli@4.0.0: dependencies: - make-dir: 5.0.0 + make-dir: 5.1.0 meow: 13.2.0 make-dir@2.1.0: @@ -25016,7 +25724,7 @@ snapshots: dependencies: semver: 7.7.2 - make-dir@5.0.0: {} + make-dir@5.1.0: {} make-fetch-happen@14.0.3: dependencies: @@ -25046,8 +25754,6 @@ snapshots: marked@15.0.12: {} - marked@16.2.0: {} - material-colors@1.2.6: {} material-design-icons-iconfont@6.7.0: {} @@ -25402,9 +26108,9 @@ snapshots: mdn-data@2.0.30: {} - mdx-mermaid@2.0.3(mermaid@11.10.0)(react@18.3.1)(typescript@5.9.2)(unist-util-visit@5.0.0): + mdx-mermaid@2.0.3(mermaid@11.11.0)(react@18.3.1)(typescript@5.9.2)(unist-util-visit@5.0.0): dependencies: - mermaid: 11.10.0 + mermaid: 11.11.0 react: 18.3.1 unist-util-visit: 5.0.0 optionalDependencies: @@ -25419,6 +26125,7 @@ snapshots: transitivePeerDependencies: - bare-buffer - bufferutil + - react-native-b4a - supports-color - typescript - utf-8-validate @@ -25449,10 +26156,10 @@ snapshots: merge2@1.4.1: {} - mermaid@11.10.0: + mermaid@11.11.0: dependencies: '@braintree/sanitize-url': 7.1.1 - '@iconify/utils': 2.3.0 + '@iconify/utils': 3.0.1 '@mermaid-js/parser': 0.6.2 '@types/d3': 7.4.3 cytoscape: 3.33.1 @@ -25461,12 +26168,12 @@ snapshots: d3: 7.9.0 d3-sankey: 0.12.3 dagre-d3-es: 7.0.11 - dayjs: 1.11.13 + dayjs: 1.11.18 dompurify: 3.2.6 katex: 0.16.22 khroma: 2.1.0 lodash-es: 4.17.21 - marked: 16.2.0 + marked: 15.0.12 roughjs: 4.6.6 stylis: 4.3.6 ts-dedent: 2.2.0 @@ -26071,11 +26778,11 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.9.4(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))): + mini-css-extract-plugin@2.9.4(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))): dependencies: schema-utils: 4.3.2 - tapable: 2.2.2 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + tapable: 2.2.3 + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) mini-svg-data-uri@1.4.4: {} @@ -26093,6 +26800,10 @@ snapshots: dependencies: brace-expansion: 2.0.2 + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.2 + minimatch@9.0.5: dependencies: brace-expansion: 2.0.2 @@ -26107,7 +26818,7 @@ snapshots: dependencies: minipass: 7.1.2 minipass-sized: 1.0.3 - minizlib: 3.0.2 + minizlib: 3.1.0 optionalDependencies: encoding: 0.1.13 @@ -26136,7 +26847,7 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 - minizlib@3.0.2: + minizlib@3.1.0: dependencies: minipass: 7.1.2 @@ -26149,16 +26860,14 @@ snapshots: mkdirp@1.0.4: {} - mkdirp@3.0.1: {} - - mlly@1.7.4: + mlly@1.8.0: dependencies: acorn: 8.15.0 pathe: 2.0.3 pkg-types: 1.3.1 ufo: 1.6.1 - mocha@11.7.1: + mocha@11.7.2: dependencies: browser-stdout: 1.3.1 chokidar: 4.0.3 @@ -26176,7 +26885,7 @@ snapshots: serialize-javascript: 6.0.2 strip-json-comments: 3.1.1 supports-color: 8.1.1 - workerpool: 9.3.3 + workerpool: 9.3.4 yargs: 17.7.2 yargs-parser: 21.1.1 yargs-unparser: 2.0.0 @@ -26196,7 +26905,7 @@ snapshots: validator: 13.15.15 yargs: 17.7.2 - mochawesome@7.1.3(mocha@11.7.1): + mochawesome@7.1.3(mocha@11.7.2): dependencies: chalk: 4.1.2 diff: 5.2.0 @@ -26205,7 +26914,7 @@ snapshots: lodash.isfunction: 3.0.9 lodash.isobject: 3.0.2 lodash.isstring: 4.0.1 - mocha: 11.7.1 + mocha: 11.7.2 mochawesome-report-generator: 6.2.0 strip-ansi: 6.0.1 uuid: 8.3.2 @@ -26279,29 +26988,29 @@ snapshots: netmask@2.0.2: optional: true - next-intl@3.26.5(next@15.4.0-canary.86(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.90.0))(react@19.1.0): + next-intl@3.26.5(next@15.4.0-canary.86(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.92.1))(react@19.1.0): dependencies: '@formatjs/intl-localematcher': 0.5.10 negotiator: 1.0.0 - next: 15.4.0-canary.86(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.90.0) + next: 15.4.0-canary.86(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.92.1) react: 19.1.0 use-intl: 3.26.5(react@19.1.0) - next-themes@0.2.1(next@15.4.0-canary.86(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.90.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next-themes@0.2.1(next@15.4.0-canary.86(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.92.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - next: 15.4.0-canary.86(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.90.0) + next: 15.4.0-canary.86(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.92.1) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - next@15.4.0-canary.86(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.90.0): + next@15.4.0-canary.86(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.92.1): dependencies: '@next/env': 15.4.0-canary.86 '@swc/helpers': 0.5.15 - caniuse-lite: 1.0.30001736 + caniuse-lite: 1.0.30001741 postcss: 8.4.31 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - styled-jsx: 5.1.6(@babel/core@7.28.3)(react@19.1.0) + styled-jsx: 5.1.6(@babel/core@7.28.4)(react@19.1.0) optionalDependencies: '@next/swc-darwin-arm64': 15.4.0-canary.86 '@next/swc-darwin-x64': 15.4.0-canary.86 @@ -26312,16 +27021,16 @@ snapshots: '@next/swc-win32-arm64-msvc': 15.4.0-canary.86 '@next/swc-win32-x64-msvc': 15.4.0-canary.86 '@playwright/test': 1.55.0 - sass: 1.90.0 + sass: 1.92.1 sharp: 0.34.3 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - ngx-color@9.0.0(@angular/common@20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1)): + ngx-color@9.0.0(@angular/common@20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1)): dependencies: - '@angular/common': 20.3.1(@angular/core@20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.3.1(@angular/compiler@20.3.1)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 20.3.3(@angular/core@20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.3.3(@angular/compiler@20.3.3)(rxjs@7.8.2)(zone.js@0.15.1) '@ctrl/tinycolor': 3.6.1 material-colors: 1.2.6 tslib: 2.8.1 @@ -26388,17 +27097,19 @@ snapshots: nopt: 8.1.0 proc-log: 5.0.0 semver: 7.7.2 - tar: 7.4.3 + tar: 7.5.1 tinyglobby: 0.2.15 which: 5.0.0 transitivePeerDependencies: - supports-color + node-machine-id@1.1.12: {} + node-readfiles@0.2.0: dependencies: es6-promise: 3.3.1 - node-releases@2.0.19: {} + node-releases@2.0.20: {} nodemon@3.1.10: dependencies: @@ -26431,7 +27142,7 @@ snapshots: normalize-range@0.1.2: {} - normalize-url@8.0.2: {} + normalize-url@8.1.0: {} npm-bundled@4.0.0: dependencies: @@ -26452,14 +27163,15 @@ snapshots: npm-package-arg@13.0.0: dependencies: - hosted-git-info: 9.0.0 + hosted-git-info: 9.0.1 proc-log: 5.0.0 semver: 7.7.2 validate-npm-package-name: 6.0.2 - npm-packlist@10.0.1: + npm-packlist@10.0.2: dependencies: ignore-walk: 8.0.0 + proc-log: 5.0.0 npm-pick-manifest@10.0.0: dependencies: @@ -26475,7 +27187,7 @@ snapshots: make-fetch-happen: 14.0.3 minipass: 7.1.2 minipass-fetch: 4.0.1 - minizlib: 3.0.2 + minizlib: 3.1.0 npm-package-arg: 12.0.2 proc-log: 5.0.0 transitivePeerDependencies: @@ -26502,13 +27214,65 @@ snapshots: dependencies: boolbase: 1.0.0 - null-loader@4.0.1(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))): + null-loader@4.0.1(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) - nwsapi@2.2.21: {} + nwsapi@2.2.22: {} + + nx@21.6.1(@swc/core@1.13.5(@swc/helpers@0.5.17)): + dependencies: + '@napi-rs/wasm-runtime': 0.2.4 + '@yarnpkg/lockfile': 1.1.0 + '@yarnpkg/parsers': 3.0.2 + '@zkochan/js-yaml': 0.0.7 + axios: 1.12.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + cliui: 8.0.1 + dotenv: 16.4.7 + dotenv-expand: 11.0.7 + enquirer: 2.3.6 + figures: 3.2.0 + flat: 5.0.2 + front-matter: 4.0.2 + ignore: 5.3.2 + jest-diff: 30.1.2 + jsonc-parser: 3.2.0 + lines-and-columns: 2.0.3 + minimatch: 9.0.3 + node-machine-id: 1.1.12 + npm-run-path: 4.0.1 + open: 8.4.2 + ora: 5.3.0 + resolve.exports: 2.0.3 + semver: 7.7.2 + string-width: 4.2.3 + tar-stream: 2.2.0 + tmp: 0.2.5 + tree-kill: 1.2.2 + tsconfig-paths: 4.2.0 + tslib: 2.8.1 + yaml: 2.8.1 + yargs: 17.7.2 + yargs-parser: 21.1.1 + optionalDependencies: + '@nx/nx-darwin-arm64': 21.6.3 + '@nx/nx-darwin-x64': 21.6.3 + '@nx/nx-freebsd-x64': 21.6.3 + '@nx/nx-linux-arm-gnueabihf': 21.6.3 + '@nx/nx-linux-arm64-gnu': 21.6.3 + '@nx/nx-linux-arm64-musl': 21.6.3 + '@nx/nx-linux-x64-gnu': 21.6.3 + '@nx/nx-linux-x64-musl': 21.6.3 + '@nx/nx-win32-arm64-msvc': 21.6.3 + '@nx/nx-win32-x64-msvc': 21.6.3 + '@swc/core': 1.13.5(@swc/helpers@0.5.17) + transitivePeerDependencies: + - debug oas-kit-common@1.0.8: dependencies: @@ -26630,7 +27394,7 @@ snapshots: openai@4.78.1(encoding@0.1.13)(zod@3.25.76): dependencies: - '@types/node': 18.19.123 + '@types/node': 18.19.124 '@types/node-fetch': 2.6.13 abort-controller: 3.0.0 agentkeepalive: 4.6.0 @@ -26680,6 +27444,17 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + ora@5.3.0: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + ora@5.4.1: dependencies: bl: 4.1.0 @@ -26694,7 +27469,7 @@ snapshots: ora@8.2.0: dependencies: - chalk: 5.6.0 + chalk: 5.6.2 cli-cursor: 5.0.0 cli-spinners: 2.9.2 is-interactive: 2.0.0 @@ -26702,7 +27477,7 @@ snapshots: log-symbols: 6.0.0 stdin-discarder: 0.2.2 string-width: 7.2.0 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 ordered-binary@1.6.0: optional: true @@ -26717,29 +27492,29 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 - oxc-resolver@11.6.2: + oxc-resolver@11.7.1: dependencies: napi-postinstall: 0.3.3 optionalDependencies: - '@oxc-resolver/binding-android-arm-eabi': 11.6.2 - '@oxc-resolver/binding-android-arm64': 11.6.2 - '@oxc-resolver/binding-darwin-arm64': 11.6.2 - '@oxc-resolver/binding-darwin-x64': 11.6.2 - '@oxc-resolver/binding-freebsd-x64': 11.6.2 - '@oxc-resolver/binding-linux-arm-gnueabihf': 11.6.2 - '@oxc-resolver/binding-linux-arm-musleabihf': 11.6.2 - '@oxc-resolver/binding-linux-arm64-gnu': 11.6.2 - '@oxc-resolver/binding-linux-arm64-musl': 11.6.2 - '@oxc-resolver/binding-linux-ppc64-gnu': 11.6.2 - '@oxc-resolver/binding-linux-riscv64-gnu': 11.6.2 - '@oxc-resolver/binding-linux-riscv64-musl': 11.6.2 - '@oxc-resolver/binding-linux-s390x-gnu': 11.6.2 - '@oxc-resolver/binding-linux-x64-gnu': 11.6.2 - '@oxc-resolver/binding-linux-x64-musl': 11.6.2 - '@oxc-resolver/binding-wasm32-wasi': 11.6.2 - '@oxc-resolver/binding-win32-arm64-msvc': 11.6.2 - '@oxc-resolver/binding-win32-ia32-msvc': 11.6.2 - '@oxc-resolver/binding-win32-x64-msvc': 11.6.2 + '@oxc-resolver/binding-android-arm-eabi': 11.7.1 + '@oxc-resolver/binding-android-arm64': 11.7.1 + '@oxc-resolver/binding-darwin-arm64': 11.7.1 + '@oxc-resolver/binding-darwin-x64': 11.7.1 + '@oxc-resolver/binding-freebsd-x64': 11.7.1 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.7.1 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.7.1 + '@oxc-resolver/binding-linux-arm64-gnu': 11.7.1 + '@oxc-resolver/binding-linux-arm64-musl': 11.7.1 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.7.1 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.7.1 + '@oxc-resolver/binding-linux-riscv64-musl': 11.7.1 + '@oxc-resolver/binding-linux-s390x-gnu': 11.7.1 + '@oxc-resolver/binding-linux-x64-gnu': 11.7.1 + '@oxc-resolver/binding-linux-x64-musl': 11.7.1 + '@oxc-resolver/binding-wasm32-wasi': 11.7.1 + '@oxc-resolver/binding-win32-arm64-msvc': 11.7.1 + '@oxc-resolver/binding-win32-ia32-msvc': 11.7.1 + '@oxc-resolver/binding-win32-x64-msvc': 11.7.1 p-cancelable@3.0.0: {} @@ -26843,7 +27618,7 @@ snapshots: fs-minipass: 3.0.3 minipass: 7.1.2 npm-package-arg: 12.0.2 - npm-packlist: 10.0.1 + npm-packlist: 10.0.2 npm-pick-manifest: 10.0.0 npm-registry-fetch: 18.0.2 proc-log: 5.0.0 @@ -26885,7 +27660,7 @@ snapshots: parse-json@8.3.0: dependencies: '@babel/code-frame': 7.27.1 - index-to-position: 1.1.0 + index-to-position: 1.2.0 type-fest: 4.41.0 parse-node-version@1.0.1: @@ -26956,7 +27731,7 @@ snapshots: path-scurry@2.0.0: dependencies: - lru-cache: 11.1.0 + lru-cache: 11.2.1 minipass: 7.1.2 path-to-regexp@0.1.12: {} @@ -26990,41 +27765,6 @@ snapshots: performance-now@2.1.0: {} - pg-cloudflare@1.2.7: - optional: true - - pg-connection-string@2.9.1: {} - - pg-int8@1.0.1: {} - - pg-pool@3.10.1(pg@8.16.3): - dependencies: - pg: 8.16.3 - - pg-protocol@1.10.3: {} - - pg-types@2.2.0: - dependencies: - pg-int8: 1.0.1 - postgres-array: 2.0.0 - postgres-bytea: 1.0.0 - postgres-date: 1.0.7 - postgres-interval: 1.2.0 - - pg@8.16.3: - dependencies: - pg-connection-string: 2.9.1 - pg-pool: 3.10.1(pg@8.16.3) - pg-protocol: 1.10.3 - pg-types: 2.2.0 - pgpass: 1.0.5 - optionalDependencies: - pg-cloudflare: 1.2.7 - - pgpass@1.0.5: - dependencies: - split2: 4.2.0 - picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -27054,7 +27794,7 @@ snapshots: pkg-types@1.3.1: dependencies: confbox: 0.1.8 - mlly: 1.7.4 + mlly: 1.8.0 pathe: 2.0.3 pkg-types@2.3.0: @@ -27106,12 +27846,12 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-color-functional-notation@7.0.10(postcss@8.5.6): + postcss-color-functional-notation@7.0.11(postcss@8.5.6): dependencies: - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.6) + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) '@csstools/utilities': 2.0.0(postcss@8.5.6) postcss: 8.5.6 @@ -27129,7 +27869,7 @@ snapshots: postcss-colormin@6.1.0(postcss@8.5.3): dependencies: - browserslist: 4.25.3 + browserslist: 4.25.4 caniuse-api: 3.0.0 colord: 2.9.3 postcss: 8.5.3 @@ -27137,7 +27877,7 @@ snapshots: postcss-colormin@6.1.0(postcss@8.5.6): dependencies: - browserslist: 4.25.3 + browserslist: 4.25.4 caniuse-api: 3.0.0 colord: 2.9.3 postcss: 8.5.6 @@ -27145,13 +27885,13 @@ snapshots: postcss-convert-values@6.1.0(postcss@8.5.3): dependencies: - browserslist: 4.25.3 + browserslist: 4.25.4 postcss: 8.5.3 postcss-value-parser: 4.2.0 postcss-convert-values@6.1.0(postcss@8.5.6): dependencies: - browserslist: 4.25.3 + browserslist: 4.25.4 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -27222,9 +27962,9 @@ snapshots: postcss: 8.5.6 postcss-selector-parser: 6.1.2 - postcss-double-position-gradients@6.0.2(postcss@8.5.6): + postcss-double-position-gradients@6.0.3(postcss@8.5.6): dependencies: - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.6) + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) '@csstools/utilities': 2.0.0(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -27265,12 +28005,12 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.5.3 - postcss-lab-function@7.0.10(postcss@8.5.6): + postcss-lab-function@7.0.11(postcss@8.5.6): dependencies: - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.6) + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) '@csstools/utilities': 2.0.0(postcss@8.5.6) postcss: 8.5.6 @@ -27289,13 +28029,13 @@ snapshots: postcss: 8.5.6 yaml: 2.8.1 - postcss-loader@7.3.4(postcss@8.5.6)(typescript@5.9.2)(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))): + postcss-loader@7.3.4(postcss@8.5.6)(typescript@5.9.2)(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))): dependencies: cosmiconfig: 8.3.6(typescript@5.9.2) jiti: 1.21.7 postcss: 8.5.6 semver: 7.7.2 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) transitivePeerDependencies: - typescript @@ -27326,7 +28066,7 @@ snapshots: postcss-merge-rules@6.1.1(postcss@8.5.3): dependencies: - browserslist: 4.25.3 + browserslist: 4.25.4 caniuse-api: 3.0.0 cssnano-utils: 4.0.2(postcss@8.5.3) postcss: 8.5.3 @@ -27334,7 +28074,7 @@ snapshots: postcss-merge-rules@6.1.1(postcss@8.5.6): dependencies: - browserslist: 4.25.3 + browserslist: 4.25.4 caniuse-api: 3.0.0 cssnano-utils: 4.0.2(postcss@8.5.6) postcss: 8.5.6 @@ -27366,14 +28106,14 @@ snapshots: postcss-minify-params@6.1.0(postcss@8.5.3): dependencies: - browserslist: 4.25.3 + browserslist: 4.25.4 cssnano-utils: 4.0.2(postcss@8.5.3) postcss: 8.5.3 postcss-value-parser: 4.2.0 postcss-minify-params@6.1.0(postcss@8.5.6): dependencies: - browserslist: 4.25.3 + browserslist: 4.25.4 cssnano-utils: 4.0.2(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -27481,13 +28221,13 @@ snapshots: postcss-normalize-unicode@6.1.0(postcss@8.5.3): dependencies: - browserslist: 4.25.3 + browserslist: 4.25.4 postcss: 8.5.3 postcss-value-parser: 4.2.0 postcss-normalize-unicode@6.1.0(postcss@8.5.6): dependencies: - browserslist: 4.25.3 + browserslist: 4.25.4 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -27541,22 +28281,24 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-preset-env@10.2.4(postcss@8.5.6): + postcss-preset-env@10.3.1(postcss@8.5.6): dependencies: + '@csstools/postcss-alpha-function': 1.0.0(postcss@8.5.6) '@csstools/postcss-cascade-layers': 5.0.2(postcss@8.5.6) - '@csstools/postcss-color-function': 4.0.10(postcss@8.5.6) - '@csstools/postcss-color-mix-function': 3.0.10(postcss@8.5.6) - '@csstools/postcss-color-mix-variadic-function-arguments': 1.0.0(postcss@8.5.6) - '@csstools/postcss-content-alt-text': 2.0.6(postcss@8.5.6) + '@csstools/postcss-color-function': 4.0.11(postcss@8.5.6) + '@csstools/postcss-color-function-display-p3-linear': 1.0.0(postcss@8.5.6) + '@csstools/postcss-color-mix-function': 3.0.11(postcss@8.5.6) + '@csstools/postcss-color-mix-variadic-function-arguments': 1.0.1(postcss@8.5.6) + '@csstools/postcss-content-alt-text': 2.0.7(postcss@8.5.6) '@csstools/postcss-exponential-functions': 2.0.9(postcss@8.5.6) '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.5.6) - '@csstools/postcss-gamut-mapping': 2.0.10(postcss@8.5.6) - '@csstools/postcss-gradients-interpolation-method': 5.0.10(postcss@8.5.6) - '@csstools/postcss-hwb-function': 4.0.10(postcss@8.5.6) - '@csstools/postcss-ic-unit': 4.0.2(postcss@8.5.6) + '@csstools/postcss-gamut-mapping': 2.0.11(postcss@8.5.6) + '@csstools/postcss-gradients-interpolation-method': 5.0.11(postcss@8.5.6) + '@csstools/postcss-hwb-function': 4.0.11(postcss@8.5.6) + '@csstools/postcss-ic-unit': 4.0.3(postcss@8.5.6) '@csstools/postcss-initial': 2.0.1(postcss@8.5.6) '@csstools/postcss-is-pseudo-class': 5.0.3(postcss@8.5.6) - '@csstools/postcss-light-dark-function': 2.0.9(postcss@8.5.6) + '@csstools/postcss-light-dark-function': 2.0.10(postcss@8.5.6) '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.5.6) '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.5.6) '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.5.6) @@ -27566,39 +28308,39 @@ snapshots: '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.5(postcss@8.5.6) '@csstools/postcss-nested-calc': 4.0.0(postcss@8.5.6) '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.5.6) - '@csstools/postcss-oklab-function': 4.0.10(postcss@8.5.6) - '@csstools/postcss-progressive-custom-properties': 4.1.0(postcss@8.5.6) + '@csstools/postcss-oklab-function': 4.0.11(postcss@8.5.6) + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) '@csstools/postcss-random-function': 2.0.1(postcss@8.5.6) - '@csstools/postcss-relative-color-syntax': 3.0.10(postcss@8.5.6) + '@csstools/postcss-relative-color-syntax': 3.0.11(postcss@8.5.6) '@csstools/postcss-scope-pseudo-class': 4.0.1(postcss@8.5.6) '@csstools/postcss-sign-functions': 1.1.4(postcss@8.5.6) '@csstools/postcss-stepped-value-functions': 4.0.9(postcss@8.5.6) - '@csstools/postcss-text-decoration-shorthand': 4.0.2(postcss@8.5.6) + '@csstools/postcss-text-decoration-shorthand': 4.0.3(postcss@8.5.6) '@csstools/postcss-trigonometric-functions': 4.0.9(postcss@8.5.6) '@csstools/postcss-unset-value': 4.0.0(postcss@8.5.6) autoprefixer: 10.4.21(postcss@8.5.6) - browserslist: 4.25.3 + browserslist: 4.25.4 css-blank-pseudo: 7.0.1(postcss@8.5.6) - css-has-pseudo: 7.0.2(postcss@8.5.6) + css-has-pseudo: 7.0.3(postcss@8.5.6) css-prefers-color-scheme: 10.0.0(postcss@8.5.6) cssdb: 8.4.0 postcss: 8.5.6 postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.6) postcss-clamp: 4.1.0(postcss@8.5.6) - postcss-color-functional-notation: 7.0.10(postcss@8.5.6) + postcss-color-functional-notation: 7.0.11(postcss@8.5.6) postcss-color-hex-alpha: 10.0.0(postcss@8.5.6) postcss-color-rebeccapurple: 10.0.0(postcss@8.5.6) postcss-custom-media: 11.0.6(postcss@8.5.6) postcss-custom-properties: 14.0.6(postcss@8.5.6) postcss-custom-selectors: 8.0.5(postcss@8.5.6) postcss-dir-pseudo-class: 9.0.1(postcss@8.5.6) - postcss-double-position-gradients: 6.0.2(postcss@8.5.6) + postcss-double-position-gradients: 6.0.3(postcss@8.5.6) postcss-focus-visible: 10.0.1(postcss@8.5.6) postcss-focus-within: 9.0.1(postcss@8.5.6) postcss-font-variant: 5.0.0(postcss@8.5.6) postcss-gap-properties: 6.0.0(postcss@8.5.6) postcss-image-set-function: 7.0.0(postcss@8.5.6) - postcss-lab-function: 7.0.10(postcss@8.5.6) + postcss-lab-function: 7.0.11(postcss@8.5.6) postcss-logical: 8.1.0(postcss@8.5.6) postcss-nesting: 13.0.2(postcss@8.5.6) postcss-opacity-percentage: 3.0.0(postcss@8.5.6) @@ -27621,13 +28363,13 @@ snapshots: postcss-reduce-initial@6.1.0(postcss@8.5.3): dependencies: - browserslist: 4.25.3 + browserslist: 4.25.4 caniuse-api: 3.0.0 postcss: 8.5.3 postcss-reduce-initial@6.1.0(postcss@8.5.6): dependencies: - browserslist: 4.25.3 + browserslist: 4.25.4 caniuse-api: 3.0.0 postcss: 8.5.6 @@ -27711,18 +28453,9 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - postgres-array@2.0.0: {} - - postgres-bytea@1.0.0: {} - - postgres-date@1.0.7: {} - - postgres-interval@1.2.0: - dependencies: - xtend: 4.0.2 - - posthog-js@1.260.1: + posthog-js@1.262.0: dependencies: + '@posthog/core': 1.0.2 core-js: 3.45.1 fflate: 0.4.8 preact: 10.27.1 @@ -27792,6 +28525,12 @@ snapshots: ansi-styles: 5.2.0 react-is: 17.0.2 + pretty-format@30.0.5: + dependencies: + '@jest/schemas': 30.0.5 + ansi-styles: 5.2.0 + react-is: 18.3.1 + pretty-time@1.1.0: {} prism-react-renderer@2.4.1(react@18.3.1): @@ -27845,7 +28584,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.17.2 + '@types/node': 22.18.1 long: 5.3.2 proxy-addr@2.0.7: @@ -27905,6 +28644,7 @@ snapshots: transitivePeerDependencies: - bare-buffer - bufferutil + - react-native-b4a - supports-color - utf-8-validate optional: true @@ -27918,6 +28658,7 @@ snapshots: transitivePeerDependencies: - bare-buffer - bufferutil + - react-native-b4a - supports-color - typescript - utf-8-validate @@ -27971,11 +28712,11 @@ snapshots: iconv-lite: 0.7.0 unpipe: 1.0.0 - raw-loader@4.0.2(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))): + raw-loader@4.0.2(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) rc@1.2.8: dependencies: @@ -28003,7 +28744,7 @@ snapshots: react-error-boundary@6.0.0(react@18.3.1): dependencies: - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.28.4 react: 18.3.1 react-fast-compare@3.2.2: {} @@ -28031,7 +28772,7 @@ snapshots: react-is@18.3.1: {} - react-json-view-lite@2.4.2(react@18.3.1): + react-json-view-lite@2.5.0(react@18.3.1): dependencies: react: 18.3.1 @@ -28045,11 +28786,11 @@ snapshots: sucrase: 3.35.0 use-editable: 2.3.3(react@18.3.1) - react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))): + react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))): dependencies: - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.28.4 react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) react-magic-dropzone@1.0.1: {} @@ -28112,7 +28853,7 @@ snapshots: react-redux@7.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.28.4 '@types/react-redux': 7.1.34 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 @@ -28145,13 +28886,13 @@ snapshots: react-router-config@5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1): dependencies: - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.28.4 react: 18.3.1 react-router: 5.3.4(react@18.3.1) react-router-dom@5.3.4(react@18.3.1): dependencies: - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.28.4 history: 4.10.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -28162,7 +28903,7 @@ snapshots: react-router@5.3.4(react@18.3.1): dependencies: - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.28.4 history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 @@ -28183,7 +28924,7 @@ snapshots: react-svg@16.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.28.4 '@tanem/svg-injector': 10.1.68 '@types/prop-types': 15.7.15 prop-types: 15.8.1 @@ -28192,7 +28933,7 @@ snapshots: react-textarea-autosize@8.5.7(@types/react@19.1.2)(react@18.3.1): dependencies: - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.28.4 react: 18.3.1 use-composed-ref: 1.4.0(@types/react@19.1.2)(react@18.3.1) use-latest: 1.3.0(@types/react@19.1.2)(react@18.3.1) @@ -28290,7 +29031,7 @@ snapshots: redux@4.2.1: dependencies: - '@babel/runtime': 7.28.3 + '@babel/runtime': 7.28.4 reflect-metadata@0.2.2: {} @@ -28307,7 +29048,7 @@ snapshots: reftools@1.1.9: {} - regenerate-unicode-properties@10.2.0: + regenerate-unicode-properties@10.2.2: dependencies: regenerate: 1.4.2 @@ -28322,14 +29063,14 @@ snapshots: gopd: 1.2.0 set-function-name: 2.0.2 - regexpu-core@6.2.0: + regexpu-core@6.3.1: dependencies: regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.0 + regenerate-unicode-properties: 10.2.2 regjsgen: 0.8.0 regjsparser: 0.12.0 unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.0 + unicode-match-property-value-ecmascript: 2.2.1 registry-auth-token@5.1.0: dependencies: @@ -28432,7 +29173,7 @@ snapshots: transitivePeerDependencies: - supports-color - remark-mdx@3.1.0: + remark-mdx@3.1.1: dependencies: mdast-util-mdx: 3.0.0 micromark-extension-mdxjs: 3.0.0 @@ -28517,6 +29258,8 @@ snapshots: resolve-pkg-maps@1.0.0: {} + resolve.exports@2.0.3: {} + resolve@1.22.10: dependencies: is-core-module: 2.16.1 @@ -28561,52 +29304,59 @@ snapshots: robust-predicates@3.0.2: {} - rolldown@1.0.0-beta.32: - dependencies: - '@oxc-project/runtime': 0.81.0 - '@oxc-project/types': 0.81.0 - '@rolldown/pluginutils': 1.0.0-beta.32 - ansis: 4.1.0 - optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.32 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.32 - '@rolldown/binding-darwin-x64': 1.0.0-beta.32 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.32 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.32 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.32 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.32 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.32 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.32 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.32 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.32 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.32 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.32 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.32 - - rollup@4.47.1: + rollup@4.50.1: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.47.1 - '@rollup/rollup-android-arm64': 4.47.1 - '@rollup/rollup-darwin-arm64': 4.47.1 - '@rollup/rollup-darwin-x64': 4.47.1 - '@rollup/rollup-freebsd-arm64': 4.47.1 - '@rollup/rollup-freebsd-x64': 4.47.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.47.1 - '@rollup/rollup-linux-arm-musleabihf': 4.47.1 - '@rollup/rollup-linux-arm64-gnu': 4.47.1 - '@rollup/rollup-linux-arm64-musl': 4.47.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.47.1 - '@rollup/rollup-linux-ppc64-gnu': 4.47.1 - '@rollup/rollup-linux-riscv64-gnu': 4.47.1 - '@rollup/rollup-linux-riscv64-musl': 4.47.1 - '@rollup/rollup-linux-s390x-gnu': 4.47.1 - '@rollup/rollup-linux-x64-gnu': 4.47.1 - '@rollup/rollup-linux-x64-musl': 4.47.1 - '@rollup/rollup-win32-arm64-msvc': 4.47.1 - '@rollup/rollup-win32-ia32-msvc': 4.47.1 - '@rollup/rollup-win32-x64-msvc': 4.47.1 + '@rollup/rollup-android-arm-eabi': 4.50.1 + '@rollup/rollup-android-arm64': 4.50.1 + '@rollup/rollup-darwin-arm64': 4.50.1 + '@rollup/rollup-darwin-x64': 4.50.1 + '@rollup/rollup-freebsd-arm64': 4.50.1 + '@rollup/rollup-freebsd-x64': 4.50.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.50.1 + '@rollup/rollup-linux-arm-musleabihf': 4.50.1 + '@rollup/rollup-linux-arm64-gnu': 4.50.1 + '@rollup/rollup-linux-arm64-musl': 4.50.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.50.1 + '@rollup/rollup-linux-ppc64-gnu': 4.50.1 + '@rollup/rollup-linux-riscv64-gnu': 4.50.1 + '@rollup/rollup-linux-riscv64-musl': 4.50.1 + '@rollup/rollup-linux-s390x-gnu': 4.50.1 + '@rollup/rollup-linux-x64-gnu': 4.50.1 + '@rollup/rollup-linux-x64-musl': 4.50.1 + '@rollup/rollup-openharmony-arm64': 4.50.1 + '@rollup/rollup-win32-arm64-msvc': 4.50.1 + '@rollup/rollup-win32-ia32-msvc': 4.50.1 + '@rollup/rollup-win32-x64-msvc': 4.50.1 + fsevents: 2.3.3 + + rollup@4.52.3: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.52.3 + '@rollup/rollup-android-arm64': 4.52.3 + '@rollup/rollup-darwin-arm64': 4.52.3 + '@rollup/rollup-darwin-x64': 4.52.3 + '@rollup/rollup-freebsd-arm64': 4.52.3 + '@rollup/rollup-freebsd-x64': 4.52.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.52.3 + '@rollup/rollup-linux-arm-musleabihf': 4.52.3 + '@rollup/rollup-linux-arm64-gnu': 4.52.3 + '@rollup/rollup-linux-arm64-musl': 4.52.3 + '@rollup/rollup-linux-loong64-gnu': 4.52.3 + '@rollup/rollup-linux-ppc64-gnu': 4.52.3 + '@rollup/rollup-linux-riscv64-gnu': 4.52.3 + '@rollup/rollup-linux-riscv64-musl': 4.52.3 + '@rollup/rollup-linux-s390x-gnu': 4.52.3 + '@rollup/rollup-linux-x64-gnu': 4.52.3 + '@rollup/rollup-linux-x64-musl': 4.52.3 + '@rollup/rollup-openharmony-arm64': 4.52.3 + '@rollup/rollup-win32-arm64-msvc': 4.52.3 + '@rollup/rollup-win32-ia32-msvc': 4.52.3 + '@rollup/rollup-win32-x64-gnu': 4.52.3 + '@rollup/rollup-win32-x64-msvc': 4.52.3 fsevents: 2.3.3 roughjs@4.6.6: @@ -28678,13 +29428,13 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.5(@rspack/core@1.4.11(@swc/helpers@0.5.17))(sass@1.90.0)(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))): + sass-loader@16.0.5(@rspack/core@1.5.3(@swc/helpers@0.5.17))(sass@1.92.1)(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))): dependencies: neo-async: 2.6.2 optionalDependencies: - '@rspack/core': 1.4.11(@swc/helpers@0.5.17) - sass: 1.90.0 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + '@rspack/core': 1.5.3(@swc/helpers@0.5.17) + sass: 1.92.1 + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) sass@1.90.0: dependencies: @@ -28694,6 +29444,14 @@ snapshots: optionalDependencies: '@parcel/watcher': 2.5.1 + sass@1.92.1: + dependencies: + chokidar: 4.0.3 + immutable: 5.1.3 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.1 + sax@1.4.1: {} saxes@6.0.0: @@ -29020,13 +29778,13 @@ snapshots: slice-ansi@5.0.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 is-fullwidth-code-point: 4.0.0 - slice-ansi@7.1.0: + slice-ansi@7.1.2: dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 5.0.0 + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 slugify@1.6.6: {} @@ -29149,8 +29907,6 @@ snapshots: transitivePeerDependencies: - supports-color - split2@4.2.0: {} - split@0.3.3: dependencies: through: 2.3.8 @@ -29185,7 +29941,7 @@ snapshots: stackframe@1.3.4: {} - start-server-and-test@2.0.13: + start-server-and-test@2.1.0: dependencies: arg: 5.0.2 bluebird: 3.7.2 @@ -29229,6 +29985,8 @@ snapshots: text-decoder: 1.2.3 optionalDependencies: bare-events: 2.6.1 + transitivePeerDependencies: + - react-native-b4a optional: true string-argv@0.3.2: {} @@ -29243,13 +30001,13 @@ snapshots: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 string-width@7.2.0: dependencies: - emoji-regex: 10.4.0 - get-east-asian-width: 1.3.0 - strip-ansi: 7.1.0 + emoji-regex: 10.5.0 + get-east-asian-width: 1.4.0 + strip-ansi: 7.1.2 string.prototype.codepointat@0.2.1: {} @@ -29326,9 +30084,9 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + strip-ansi@7.1.2: dependencies: - ansi-regex: 6.2.0 + ansi-regex: 6.2.2 strip-bom-string@1.0.0: {} @@ -29360,22 +30118,22 @@ snapshots: dependencies: inline-style-parser: 0.2.4 - styled-jsx@5.1.6(@babel/core@7.28.3)(react@19.1.0): + styled-jsx@5.1.6(@babel/core@7.28.4)(react@19.1.0): dependencies: client-only: 0.0.1 react: 19.1.0 optionalDependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 stylehacks@6.1.1(postcss@8.5.3): dependencies: - browserslist: 4.25.3 + browserslist: 4.25.4 postcss: 8.5.3 postcss-selector-parser: 6.1.2 stylehacks@6.1.1(postcss@8.5.6): dependencies: - browserslist: 4.25.3 + browserslist: 4.25.4 postcss: 8.5.6 postcss-selector-parser: 6.1.2 @@ -29433,11 +30191,11 @@ snapshots: transitivePeerDependencies: - encoding - swc-loader@0.2.6(@swc/core@1.13.4(@swc/helpers@0.5.17))(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))): + swc-loader@0.2.6(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))): dependencies: - '@swc/core': 1.13.4(@swc/helpers@0.5.17) + '@swc/core': 1.13.5(@swc/helpers@0.5.17) '@swc/counter': 0.1.3 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) symbol-tree@3.2.4: {} @@ -29472,24 +30230,35 @@ snapshots: transitivePeerDependencies: - ts-node - tapable@2.2.2: {} + tapable@2.2.3: {} tar-fs@3.1.0: dependencies: pump: 3.0.3 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.2.1 + bare-fs: 4.3.3 bare-path: 3.0.0 transitivePeerDependencies: - bare-buffer + - react-native-b4a optional: true + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.5 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + tar-stream@3.1.7: dependencies: - b4a: 1.6.7 + b4a: 1.7.1 fast-fifo: 1.3.2 streamx: 2.22.1 + transitivePeerDependencies: + - react-native-b4a optional: true tar@6.2.1: @@ -29501,13 +30270,12 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 - tar@7.4.3: + tar@7.5.1: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 minipass: 7.1.2 - minizlib: 3.0.2 - mkdirp: 3.0.1 + minizlib: 3.1.0 yallist: 5.0.0 tcomb-validation@3.4.1: @@ -29518,18 +30286,18 @@ snapshots: term-size@2.2.1: {} - terser-webpack-plugin@5.3.14(@swc/core@1.13.4(@swc/helpers@0.5.17))(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))): + terser-webpack-plugin@5.3.14(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))): dependencies: - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 - terser: 5.43.1 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + terser: 5.44.0 + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) optionalDependencies: - '@swc/core': 1.13.4(@swc/helpers@0.5.17) + '@swc/core': 1.13.5(@swc/helpers@0.5.17) - terser@5.43.1: + terser@5.44.0: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 @@ -29538,7 +30306,9 @@ snapshots: text-decoder@1.2.3: dependencies: - b4a: 1.6.7 + b4a: 1.7.1 + transitivePeerDependencies: + - react-native-b4a optional: true text-table@0.2.0: {} @@ -29673,11 +30443,17 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + tslib@1.14.1: {} tslib@2.8.1: {} - tsup@8.5.0(@swc/core@1.13.4(@swc/helpers@0.5.17))(jiti@2.5.1)(postcss@8.5.6)(typescript@5.9.2)(yaml@2.8.1): + tsup@8.5.0(@swc/core@1.13.5(@swc/helpers@0.5.17))(jiti@2.5.1)(postcss@8.5.6)(typescript@5.9.2)(yaml@2.8.1): dependencies: bundle-require: 5.1.0(esbuild@0.25.9) cac: 6.7.14 @@ -29690,14 +30466,14 @@ snapshots: picocolors: 1.1.1 postcss-load-config: 6.0.1(jiti@2.5.1)(postcss@8.5.6)(yaml@2.8.1) resolve-from: 5.0.0 - rollup: 4.47.1 + rollup: 4.50.1 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tinyexec: 0.3.2 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 tree-kill: 1.2.2 optionalDependencies: - '@swc/core': 1.13.4(@swc/helpers@0.5.17) + '@swc/core': 1.13.5(@swc/helpers@0.5.17) postcss: 8.5.6 typescript: 5.9.2 transitivePeerDependencies: @@ -29723,33 +30499,6 @@ snapshots: dependencies: safe-buffer: 5.2.1 - turbo-darwin-64@2.5.5: - optional: true - - turbo-darwin-arm64@2.5.5: - optional: true - - turbo-linux-64@2.5.5: - optional: true - - turbo-linux-arm64@2.5.5: - optional: true - - turbo-windows-64@2.5.5: - optional: true - - turbo-windows-arm64@2.5.5: - optional: true - - turbo@2.5.5: - optionalDependencies: - turbo-darwin-64: 2.5.5 - turbo-darwin-arm64: 2.5.5 - turbo-linux-64: 2.5.5 - turbo-linux-arm64: 2.5.5 - turbo-windows-64: 2.5.5 - turbo-windows-arm64: 2.5.5 - tweetnacl@0.14.5: {} type-check@0.4.0: @@ -29852,7 +30601,7 @@ snapshots: unicode-canonical-property-names-ecmascript: 2.0.1 unicode-property-aliases-ecmascript: 2.1.0 - unicode-match-property-value-ecmascript@2.2.0: {} + unicode-match-property-value-ecmascript@2.2.1: {} unicode-property-aliases-ecmascript@2.1.0: {} @@ -29990,22 +30739,22 @@ snapshots: untildify@4.0.0: {} - update-browserslist-db@1.1.3(browserslist@4.25.3): + update-browserslist-db@1.1.3(browserslist@4.25.4): dependencies: - browserslist: 4.25.3 + browserslist: 4.25.4 escalade: 3.2.0 picocolors: 1.1.1 update-notifier@6.0.2: dependencies: boxen: 7.1.1 - chalk: 5.6.0 + chalk: 5.6.2 configstore: 6.0.0 has-yarn: 3.0.0 import-lazy: 4.0.0 is-ci: 3.0.1 is-installed-globally: 0.4.0 - is-npm: 6.0.0 + is-npm: 6.1.0 is-yarn-global: 0.4.1 latest-version: 7.0.0 pupa: 3.1.0 @@ -30019,14 +30768,14 @@ snapshots: dependencies: punycode: 2.3.1 - url-loader@4.1.1(file-loader@6.2.0(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))))(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))): + url-loader@4.1.1(file-loader@6.2.0(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))))(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))): dependencies: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) optionalDependencies: - file-loader: 6.2.0(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + file-loader: 6.2.0(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) url@0.11.4: dependencies: @@ -30184,13 +30933,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-node@2.1.9(@types/node@22.17.2)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1): + vite-node@2.1.9(@types/node@22.18.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0): dependencies: cac: 6.7.14 debug: 4.4.1(supports-color@5.5.0) es-module-lexer: 1.7.0 pathe: 1.1.2 - vite: 5.4.19(@types/node@22.17.2)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1) + vite: 5.4.20(@types/node@22.18.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0) transitivePeerDependencies: - '@types/node' - less @@ -30202,13 +30951,13 @@ snapshots: - supports-color - terser - vite-node@2.1.9(@types/node@24.3.0)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1): + vite-node@2.1.9(@types/node@24.3.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0): dependencies: cac: 6.7.14 debug: 4.4.1(supports-color@5.5.0) es-module-lexer: 1.7.0 pathe: 1.1.2 - vite: 5.4.19(@types/node@24.3.0)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1) + vite: 5.4.20(@types/node@24.3.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0) transitivePeerDependencies: - '@types/node' - less @@ -30220,85 +30969,84 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@5.4.19(@types/node@22.17.2)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)): + vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@5.4.20(@types/node@22.18.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0)): dependencies: debug: 4.4.1(supports-color@5.5.0) globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.2) optionalDependencies: - vite: 5.4.19(@types/node@22.17.2)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1) + vite: 5.4.20(@types/node@22.18.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.19(@types/node@22.17.2)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1): + vite@5.4.20(@types/node@22.18.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0): dependencies: esbuild: 0.21.5 postcss: 8.5.3 - rollup: 4.47.1 + rollup: 4.50.1 optionalDependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 fsevents: 2.3.3 - less: 4.4.0 + less: 4.1.3 lightningcss: 1.30.1 - sass: 1.90.0 - terser: 5.43.1 + sass: 1.92.1 + terser: 5.44.0 - vite@5.4.19(@types/node@24.3.0)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1): + vite@5.4.20(@types/node@24.3.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0): dependencies: esbuild: 0.21.5 postcss: 8.5.3 - rollup: 4.47.1 + rollup: 4.50.1 optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 24.3.1 fsevents: 2.3.3 - less: 4.4.0 + less: 4.1.3 lightningcss: 1.30.1 - sass: 1.90.0 - terser: 5.43.1 + sass: 1.92.1 + terser: 5.44.0 - vite@7.1.5(@types/node@22.17.2)(jiti@2.5.1)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.1): + vite@7.1.5(@types/node@22.18.1)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(yaml@2.8.1): dependencies: esbuild: 0.25.9 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.47.1 + rollup: 4.52.3 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 fsevents: 2.3.3 jiti: 2.5.1 - less: 4.4.0 lightningcss: 1.30.1 sass: 1.90.0 - terser: 5.43.1 + terser: 5.44.0 yaml: 2.8.1 - vitest@2.1.9(@types/node@22.17.2)(jsdom@26.1.0)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1): + vitest@2.1.9(@types/node@22.18.1)(jsdom@26.1.0)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0): dependencies: '@vitest/expect': 2.1.9 - '@vitest/mocker': 2.1.9(vite@5.4.19(@types/node@22.17.2)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)) + '@vitest/mocker': 2.1.9(vite@5.4.20(@types/node@22.18.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0)) '@vitest/pretty-format': 2.1.9 '@vitest/runner': 2.1.9 '@vitest/snapshot': 2.1.9 '@vitest/spy': 2.1.9 '@vitest/utils': 2.1.9 - chai: 5.3.1 + chai: 5.3.3 debug: 4.4.1(supports-color@5.5.0) expect-type: 1.2.2 - magic-string: 0.30.17 + magic-string: 0.30.19 pathe: 1.1.2 std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 tinypool: 1.1.1 tinyrainbow: 1.2.0 - vite: 5.4.19(@types/node@22.17.2)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1) - vite-node: 2.1.9(@types/node@22.17.2)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1) + vite: 5.4.20(@types/node@22.18.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0) + vite-node: 2.1.9(@types/node@22.18.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.17.2 + '@types/node': 22.18.1 jsdom: 26.1.0 transitivePeerDependencies: - less @@ -30311,30 +31059,30 @@ snapshots: - supports-color - terser - vitest@2.1.9(@types/node@24.3.0)(jsdom@26.1.0)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1): + vitest@2.1.9(@types/node@24.3.1)(jsdom@26.1.0)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0): dependencies: '@vitest/expect': 2.1.9 - '@vitest/mocker': 2.1.9(vite@5.4.19(@types/node@24.3.0)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)) + '@vitest/mocker': 2.1.9(vite@5.4.20(@types/node@24.3.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0)) '@vitest/pretty-format': 2.1.9 '@vitest/runner': 2.1.9 '@vitest/snapshot': 2.1.9 '@vitest/spy': 2.1.9 '@vitest/utils': 2.1.9 - chai: 5.3.1 + chai: 5.3.3 debug: 4.4.1(supports-color@5.5.0) expect-type: 1.2.2 - magic-string: 0.30.17 + magic-string: 0.30.19 pathe: 1.1.2 std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 tinypool: 1.1.1 tinyrainbow: 1.2.0 - vite: 5.4.19(@types/node@24.3.0)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1) - vite-node: 2.1.9(@types/node@24.3.0)(less@4.4.0)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1) + vite: 5.4.20(@types/node@24.3.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0) + vite-node: 2.1.9(@types/node@24.3.1)(less@4.1.3)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.44.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 24.3.1 jsdom: 26.1.0 transitivePeerDependencies: - less @@ -30370,7 +31118,7 @@ snapshots: dependencies: xml-name-validator: 5.0.0 - wait-on@7.2.0: + wait-on@8.0.4(debug@4.4.1): dependencies: axios: 1.11.0(debug@4.4.1) joi: 17.13.3 @@ -30380,10 +31128,10 @@ snapshots: transitivePeerDependencies: - debug - wait-on@8.0.4(debug@4.4.1): + wait-on@9.0.1: dependencies: - axios: 1.11.0(debug@4.4.1) - joi: 17.13.3 + axios: 1.12.2 + joi: 18.0.1 lodash: 4.17.21 minimist: 1.2.8 rxjs: 7.8.2 @@ -30444,16 +31192,16 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@5.3.4(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))): + webpack-dev-middleware@5.3.4(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))): dependencies: colorette: 2.0.20 memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.3.2 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) - webpack-dev-server@4.15.2(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))): + webpack-dev-server@4.15.2(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -30483,10 +31231,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 5.3.4(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + webpack-dev-middleware: 5.3.4(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) ws: 8.18.3 optionalDependencies: - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) transitivePeerDependencies: - bufferutil - debug @@ -30507,17 +31255,15 @@ snapshots: webpack-sources@3.3.3: {} - webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)): + webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)): dependencies: - '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 - acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.25.3 + acorn-import-attributes: 1.9.5(acorn@8.15.0) + browserslist: 4.25.4 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.3 es-module-lexer: 1.7.0 @@ -30529,9 +31275,9 @@ snapshots: loader-runner: 4.3.0 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 4.3.2 - tapable: 2.2.2 - terser-webpack-plugin: 5.3.14(@swc/core@1.13.4(@swc/helpers@0.5.17))(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))) + schema-utils: 3.3.0 + tapable: 2.2.3 + terser-webpack-plugin: 5.3.14(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: @@ -30539,7 +31285,7 @@ snapshots: - esbuild - uglify-js - webpackbar@6.0.1(webpack@5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17))): + webpackbar@6.0.1(webpack@5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17))): dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -30548,7 +31294,7 @@ snapshots: markdown-table: 2.0.0 pretty-time: 1.1.0 std-env: 3.9.0 - webpack: 5.101.3(@swc/core@1.13.4(@swc/helpers@0.5.17)) + webpack: 5.95.0(@swc/core@1.13.5(@swc/helpers@0.5.17)) wrap-ansi: 7.0.0 websocket-driver@0.7.4: @@ -30653,7 +31399,7 @@ snapshots: word-wrap@1.2.5: {} - workerpool@9.3.3: {} + workerpool@9.3.4: {} wrap-ansi@6.2.0: dependencies: @@ -30669,15 +31415,15 @@ snapshots: wrap-ansi@8.1.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 5.1.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 - wrap-ansi@9.0.0: + wrap-ansi@9.0.2: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 7.2.0 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 wrappy@1.0.2: {} @@ -30710,8 +31456,6 @@ snapshots: xmlchars@2.2.0: {} - xtend@4.0.2: {} - y18n@4.0.3: {} y18n@5.0.8: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 1b11d31ef08..9bf14588ced 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,11 +1,12 @@ packages: - - "console" - - "docs" - - "e2e" - - "packages/*" - - "apps/*" + - docs + - console + - tests/* + - packages/* + - apps/* + +exclude: + - benchmark # because of the node 18 or 20 dependency overrides: - "@typescript-eslint/parser": "^8.35.1" - "@zitadel/client": "workspace:*" - "@zitadel/proto": "workspace:*" + '@typescript-eslint/parser': '^8.35.1' diff --git a/project.json b/project.json new file mode 100644 index 00000000000..c50a5ba3ab3 --- /dev/null +++ b/project.json @@ -0,0 +1,42 @@ +{ + "$schema": "./node_modules/nx/schemas/project-schema.json", + "projectType": "application", + "targets": { + "db": { + "continuous": true, + "description": "Runs a local Postgres database for development", + "command": "nx run @zitadel/devcontainer:compose up db" + }, + "clean": { + "description": "Cleans all local-only files relating to the Zitadel platform (API, Login and Console)", + "dependsOn": [ + "@zitadel/api:clean", + "@zitadel/login:clean", + "@zitadel/console:clean" + ] + }, + "pack": { + "description": "Creates package archives for the API across all platforms and for the Login component, then generates a checksums.txt file containing the SHA256 checksums for all created archives.", + "dependsOn": [ + "@zitadel/api:pack-linux-*", + "@zitadel/api:pack-darwin-*", + "@zitadel/api:pack-windows-*", + "@zitadel/login:pack" + ], + "executor": "nx:run-commands", + "options": { + "parallel": false, + "commands": [ + "sha256sum .artifacts/pack/zitadel-*-*.tar.gz > .artifacts/pack/checksums.txt" + ] + }, + "cache": true, + "inputs": [ + "{workspaceRoot}/.artifacts/pack/zitadel-*-*.tar.gz" + ], + "outputs": [ + "{workspaceRoot}/.artifacts/pack/checksums.txt" + ] + } + } +} diff --git a/tests/functional-ui/.env b/tests/functional-ui/.env new file mode 100644 index 00000000000..561ceace93c --- /dev/null +++ b/tests/functional-ui/.env @@ -0,0 +1,4 @@ +CYPRESS_BASE_URL=http://localhost:8083/ui/console +CYPRESS_BACKEND_URL=http://localhost:8083 +CYPRESS_WEBHOOK_HANDLER_PORT=8900 +CYPRESS_ORGANIZATION=zitadel diff --git a/tests/functional-ui/.env.open b/tests/functional-ui/.env.open new file mode 100644 index 00000000000..be9396bce53 --- /dev/null +++ b/tests/functional-ui/.env.open @@ -0,0 +1 @@ +CYPRESS_BASE_URL=http://localhost:4200 diff --git a/e2e/.gitignore b/tests/functional-ui/.gitignore similarity index 100% rename from e2e/.gitignore rename to tests/functional-ui/.gitignore diff --git a/e2e/.prettierignore b/tests/functional-ui/.prettierignore similarity index 92% rename from e2e/.prettierignore rename to tests/functional-ui/.prettierignore index 8b33bc629ce..d7a83f647ae 100644 --- a/e2e/.prettierignore +++ b/tests/functional-ui/.prettierignore @@ -7,6 +7,7 @@ node_modules cypress/screenshots/ cypress/videos/ cypress/results/ +cypress/downloads/ # not compiling code cypress/e2e/actions/e2eSetMetadata.js \ No newline at end of file diff --git a/e2e/.prettierrc.json b/tests/functional-ui/.prettierrc.json similarity index 100% rename from e2e/.prettierrc.json rename to tests/functional-ui/.prettierrc.json diff --git a/e2e/cypress.config.ts b/tests/functional-ui/cypress.config.ts similarity index 89% rename from e2e/cypress.config.ts rename to tests/functional-ui/cypress.config.ts index 16d017c872b..85c283a3beb 100644 --- a/e2e/cypress.config.ts +++ b/tests/functional-ui/cypress.config.ts @@ -1,7 +1,7 @@ import { defineConfig } from 'cypress'; -import { Client } from "pg"; import { createServer } from 'http' import { ZITADELWebhookEvent } from 'cypress/support/types'; +import { report } from 'process'; const jwt = require('jsonwebtoken'); @@ -39,14 +39,16 @@ let failWebhookEventsCount = 0 export default defineConfig({ reporter: 'mochawesome', - + video: true, reporterOptions: { - reportDir: 'cypress/results', overwrite: false, html: true, json: true, + reportDir: 'cypress/results', }, - + videosFolder: 'cypress/videos', + screenshotsFolder: 'cypress/screenshots', + downloadsFolder: 'cypress/downloads', trashAssetsBeforeRuns: false, defaultCommandTimeout: 10000, @@ -56,14 +58,12 @@ export default defineConfig({ WEBHOOK_HANDLER_PORT: webhookHandlerPort(), WEBHOOK_HANDLER_HOST: process.env.CYPRESS_WEBHOOK_HANDLER_HOST || 'localhost', }, - e2e: { baseUrl: baseUrl(), experimentalRunAllSpecs: true, experimentalOriginDependencies: true, pageLoadTimeout: 180000, setupNodeEvents(on, config) { - startWebhookEventHandler() on('task', { @@ -85,19 +85,6 @@ export default defineConfig({ "exp": exp }, Buffer.from(privateKey, 'ascii').toString('ascii'), { algorithm: 'RS256' }) }, - async runSQL(statement: string) { - const client = new Client({ - connectionString: process.env.CYPRESS_DATABASE_CONNECTION_URL || 'postgresql://root@localhost:26257/zitadel' - }); - - return client.connect().then(() => { - return client.query(statement).then((result) => { - return client.end().then(() => { - return result - }) - }) - }) - }, resetWebhookEvents() { webhookEvents = [] failWebhookEventsCount = 0 @@ -116,7 +103,7 @@ export default defineConfig({ }); function baseUrl(){ - return process.env.CYPRESS_BASE_URL || 'http://localhost:8080/ui/console' + return process.env.CYPRESS_BASE_URL || 'http://localhost:8083/ui/console' } function backendUrl(){ diff --git a/e2e/cypress/.gitignore b/tests/functional-ui/cypress/.gitignore similarity index 100% rename from e2e/cypress/.gitignore rename to tests/functional-ui/cypress/.gitignore diff --git a/e2e/cypress/e2e/applications/applications.cy.ts b/tests/functional-ui/cypress/e2e/applications/applications.cy.ts similarity index 100% rename from e2e/cypress/e2e/applications/applications.cy.ts rename to tests/functional-ui/cypress/e2e/applications/applications.cy.ts diff --git a/e2e/cypress/e2e/events/events.cy.ts b/tests/functional-ui/cypress/e2e/events/events.cy.ts similarity index 100% rename from e2e/cypress/e2e/events/events.cy.ts rename to tests/functional-ui/cypress/e2e/events/events.cy.ts diff --git a/e2e/cypress/e2e/humans/humans.cy.ts b/tests/functional-ui/cypress/e2e/humans/humans.cy.ts similarity index 100% rename from e2e/cypress/e2e/humans/humans.cy.ts rename to tests/functional-ui/cypress/e2e/humans/humans.cy.ts diff --git a/e2e/cypress/e2e/i18n/api.cy.ts b/tests/functional-ui/cypress/e2e/i18n/api.cy.ts similarity index 100% rename from e2e/cypress/e2e/i18n/api.cy.ts rename to tests/functional-ui/cypress/e2e/i18n/api.cy.ts diff --git a/e2e/cypress/e2e/instance/settings/notifications.cy.ts b/tests/functional-ui/cypress/e2e/instance/settings/notifications.cy.ts similarity index 100% rename from e2e/cypress/e2e/instance/settings/notifications.cy.ts rename to tests/functional-ui/cypress/e2e/instance/settings/notifications.cy.ts diff --git a/e2e/cypress/e2e/instance/settings/secret-generator.cy.ts b/tests/functional-ui/cypress/e2e/instance/settings/secret-generator.cy.ts similarity index 100% rename from e2e/cypress/e2e/instance/settings/secret-generator.cy.ts rename to tests/functional-ui/cypress/e2e/instance/settings/secret-generator.cy.ts diff --git a/e2e/cypress/e2e/machines/machines.cy.ts b/tests/functional-ui/cypress/e2e/machines/machines.cy.ts similarity index 100% rename from e2e/cypress/e2e/machines/machines.cy.ts rename to tests/functional-ui/cypress/e2e/machines/machines.cy.ts diff --git a/e2e/cypress/e2e/organization/organizations.cy.ts b/tests/functional-ui/cypress/e2e/organization/organizations.cy.ts similarity index 100% rename from e2e/cypress/e2e/organization/organizations.cy.ts rename to tests/functional-ui/cypress/e2e/organization/organizations.cy.ts diff --git a/e2e/cypress/e2e/permissions/permissions.cy.ts b/tests/functional-ui/cypress/e2e/permissions/permissions.cy.ts similarity index 100% rename from e2e/cypress/e2e/permissions/permissions.cy.ts rename to tests/functional-ui/cypress/e2e/permissions/permissions.cy.ts diff --git a/e2e/cypress/e2e/projects/projects.cy.ts b/tests/functional-ui/cypress/e2e/projects/projects.cy.ts similarity index 100% rename from e2e/cypress/e2e/projects/projects.cy.ts rename to tests/functional-ui/cypress/e2e/projects/projects.cy.ts diff --git a/e2e/cypress/e2e/settings/external-links-settings.cy.ts b/tests/functional-ui/cypress/e2e/settings/external-links-settings.cy.ts similarity index 100% rename from e2e/cypress/e2e/settings/external-links-settings.cy.ts rename to tests/functional-ui/cypress/e2e/settings/external-links-settings.cy.ts diff --git a/e2e/cypress/e2e/settings/features.cy.ts b/tests/functional-ui/cypress/e2e/settings/features.cy.ts similarity index 100% rename from e2e/cypress/e2e/settings/features.cy.ts rename to tests/functional-ui/cypress/e2e/settings/features.cy.ts diff --git a/e2e/cypress/e2e/settings/login-policy.cy.ts b/tests/functional-ui/cypress/e2e/settings/login-policy.cy.ts similarity index 100% rename from e2e/cypress/e2e/settings/login-policy.cy.ts rename to tests/functional-ui/cypress/e2e/settings/login-policy.cy.ts diff --git a/e2e/cypress/e2e/settings/oidc-settings.cy.ts b/tests/functional-ui/cypress/e2e/settings/oidc-settings.cy.ts similarity index 100% rename from e2e/cypress/e2e/settings/oidc-settings.cy.ts rename to tests/functional-ui/cypress/e2e/settings/oidc-settings.cy.ts diff --git a/e2e/cypress/e2e/settings/password-complexity.cy.ts b/tests/functional-ui/cypress/e2e/settings/password-complexity.cy.ts similarity index 100% rename from e2e/cypress/e2e/settings/password-complexity.cy.ts rename to tests/functional-ui/cypress/e2e/settings/password-complexity.cy.ts diff --git a/e2e/cypress/e2e/settings/private-labeling.cy.ts b/tests/functional-ui/cypress/e2e/settings/private-labeling.cy.ts similarity index 100% rename from e2e/cypress/e2e/settings/private-labeling.cy.ts rename to tests/functional-ui/cypress/e2e/settings/private-labeling.cy.ts diff --git a/e2e/cypress/fixtures/example.json b/tests/functional-ui/cypress/fixtures/example.json similarity index 100% rename from e2e/cypress/fixtures/example.json rename to tests/functional-ui/cypress/fixtures/example.json diff --git a/e2e/cypress/fixtures/logo.png b/tests/functional-ui/cypress/fixtures/logo.png similarity index 100% rename from e2e/cypress/fixtures/logo.png rename to tests/functional-ui/cypress/fixtures/logo.png diff --git a/e2e/cypress/support/api/apiauth.ts b/tests/functional-ui/cypress/support/api/apiauth.ts similarity index 100% rename from e2e/cypress/support/api/apiauth.ts rename to tests/functional-ui/cypress/support/api/apiauth.ts diff --git a/e2e/cypress/support/api/ensure.ts b/tests/functional-ui/cypress/support/api/ensure.ts similarity index 100% rename from e2e/cypress/support/api/ensure.ts rename to tests/functional-ui/cypress/support/api/ensure.ts diff --git a/e2e/cypress/support/api/external-links-settings.ts b/tests/functional-ui/cypress/support/api/external-links-settings.ts similarity index 100% rename from e2e/cypress/support/api/external-links-settings.ts rename to tests/functional-ui/cypress/support/api/external-links-settings.ts diff --git a/e2e/cypress/support/api/features.ts b/tests/functional-ui/cypress/support/api/features.ts similarity index 100% rename from e2e/cypress/support/api/features.ts rename to tests/functional-ui/cypress/support/api/features.ts diff --git a/e2e/cypress/support/api/grants.ts b/tests/functional-ui/cypress/support/api/grants.ts similarity index 100% rename from e2e/cypress/support/api/grants.ts rename to tests/functional-ui/cypress/support/api/grants.ts diff --git a/e2e/cypress/support/api/instances.ts b/tests/functional-ui/cypress/support/api/instances.ts similarity index 100% rename from e2e/cypress/support/api/instances.ts rename to tests/functional-ui/cypress/support/api/instances.ts diff --git a/e2e/cypress/support/api/members.ts b/tests/functional-ui/cypress/support/api/members.ts similarity index 100% rename from e2e/cypress/support/api/members.ts rename to tests/functional-ui/cypress/support/api/members.ts diff --git a/e2e/cypress/support/api/oidc-settings.ts b/tests/functional-ui/cypress/support/api/oidc-settings.ts similarity index 100% rename from e2e/cypress/support/api/oidc-settings.ts rename to tests/functional-ui/cypress/support/api/oidc-settings.ts diff --git a/e2e/cypress/support/api/orgs.ts b/tests/functional-ui/cypress/support/api/orgs.ts similarity index 100% rename from e2e/cypress/support/api/orgs.ts rename to tests/functional-ui/cypress/support/api/orgs.ts diff --git a/e2e/cypress/support/api/policies.ts b/tests/functional-ui/cypress/support/api/policies.ts similarity index 100% rename from e2e/cypress/support/api/policies.ts rename to tests/functional-ui/cypress/support/api/policies.ts diff --git a/e2e/cypress/support/api/projects.ts b/tests/functional-ui/cypress/support/api/projects.ts similarity index 100% rename from e2e/cypress/support/api/projects.ts rename to tests/functional-ui/cypress/support/api/projects.ts diff --git a/e2e/cypress/support/api/quota.ts b/tests/functional-ui/cypress/support/api/quota.ts similarity index 100% rename from e2e/cypress/support/api/quota.ts rename to tests/functional-ui/cypress/support/api/quota.ts diff --git a/e2e/cypress/support/api/search.ts b/tests/functional-ui/cypress/support/api/search.ts similarity index 100% rename from e2e/cypress/support/api/search.ts rename to tests/functional-ui/cypress/support/api/search.ts diff --git a/e2e/cypress/support/api/sms.ts b/tests/functional-ui/cypress/support/api/sms.ts similarity index 100% rename from e2e/cypress/support/api/sms.ts rename to tests/functional-ui/cypress/support/api/sms.ts diff --git a/e2e/cypress/support/api/smtp.ts b/tests/functional-ui/cypress/support/api/smtp.ts similarity index 100% rename from e2e/cypress/support/api/smtp.ts rename to tests/functional-ui/cypress/support/api/smtp.ts diff --git a/e2e/cypress/support/api/types.ts b/tests/functional-ui/cypress/support/api/types.ts similarity index 100% rename from e2e/cypress/support/api/types.ts rename to tests/functional-ui/cypress/support/api/types.ts diff --git a/e2e/cypress/support/api/users.ts b/tests/functional-ui/cypress/support/api/users.ts similarity index 100% rename from e2e/cypress/support/api/users.ts rename to tests/functional-ui/cypress/support/api/users.ts diff --git a/e2e/cypress/support/commands.ts b/tests/functional-ui/cypress/support/commands.ts similarity index 100% rename from e2e/cypress/support/commands.ts rename to tests/functional-ui/cypress/support/commands.ts diff --git a/e2e/cypress/support/e2e.ts b/tests/functional-ui/cypress/support/e2e.ts similarity index 100% rename from e2e/cypress/support/e2e.ts rename to tests/functional-ui/cypress/support/e2e.ts diff --git a/e2e/cypress/support/login/authenticate.ts b/tests/functional-ui/cypress/support/login/authenticate.ts similarity index 100% rename from e2e/cypress/support/login/authenticate.ts rename to tests/functional-ui/cypress/support/login/authenticate.ts diff --git a/e2e/cypress/support/login/users.ts b/tests/functional-ui/cypress/support/login/users.ts similarity index 100% rename from e2e/cypress/support/login/users.ts rename to tests/functional-ui/cypress/support/login/users.ts diff --git a/e2e/cypress/support/types.ts b/tests/functional-ui/cypress/support/types.ts similarity index 100% rename from e2e/cypress/support/types.ts rename to tests/functional-ui/cypress/support/types.ts diff --git a/e2e/cypress/tsconfig.json b/tests/functional-ui/cypress/tsconfig.json similarity index 100% rename from e2e/cypress/tsconfig.json rename to tests/functional-ui/cypress/tsconfig.json diff --git a/tests/functional-ui/package.json b/tests/functional-ui/package.json new file mode 100644 index 00000000000..6f77fa434b9 --- /dev/null +++ b/tests/functional-ui/package.json @@ -0,0 +1,20 @@ +{ + "name": "@zitadel/functional-ui", + "scripts": { + "open": "cypress open", + "lint": "prettier --check cypress", + "lint-fix": "prettier --write cypress", + "clean": "rm -rf node_modules cypress/videos cypress/screenshots cypress/results cypress/downloads" + }, + "private": true, + "devDependencies": { + "@types/node": "^22.3.0", + "cypress": "^14.5.3", + "cypress-wait-until": "^3.0.2", + "jsonwebtoken": "^9.0.2", + "mochawesome": "^7.1.3", + "prettier": "^3.3.3", + "typescript": "^5.5.4", + "uuid": "^10.0.0" + } +} diff --git a/tests/functional-ui/project.json b/tests/functional-ui/project.json new file mode 100644 index 00000000000..0cfc52626e8 --- /dev/null +++ b/tests/functional-ui/project.json @@ -0,0 +1,56 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "targets": { + "run-db": { + "continuous": true, + "description": "Runs a local ephemeral Postgres database for functional UI (Console) tests.", + "command": "nx run @zitadel/devcontainer:compose up --force-recreate --renew-anon-volumes db-functional-ui" + }, + "run-api": { + "description": "Sets up and runs the Zitadel API with the embedded Console against which the functional UI tests are run.", + "continuous": true, + "dependsOn": [ + "@zitadel/api:build" + ], + "executor": "nx:run-commands", + "options": { + "command": "nx run @zitadel/api:prod:test-functional-ui --excludeTaskDependencies" + } + }, + "open": { + "description": "Opens the Cypress Test Runner for interactive testing.", + "continuous": true, + "dependsOn": [ + "@zitadel/console:dev", + "run-db", + "run-api" + ] + }, + "test": { + "description": "Runs the functional UI (Console) tests against a Zitadel API and a specified browser. Pass an installed browser as an argument, like --browser electron. The 'electron' browser should always be available.", + "dependsOn": [ + "run-db", + "run-api" + ], + "executor": "nx:run-commands", + "options": { + "parallel": false, + "cwd": "{projectRoot}", + "commands": [ + "cypress install", + "wait-on --verbose --interval 2000 --simultaneous 1 --timeout 30m \"${CYPRESS_BACKEND_URL}/debug/ready\"", + "DISPLAY='' cypress run", + "nx run @zitadel/functional-ui:stop" + ] + }, + "cache": true, + "inputs": [ + "default" + ] + }, + "stop": { + "description": "Stops the local Postgres database used for functional UI (Console) tests.", + "command": "nx run @zitadel/devcontainer:compose down --volumes db-functional-ui" + } + } +} \ No newline at end of file diff --git a/e2e/tsconfig.json b/tests/functional-ui/tsconfig.json similarity index 100% rename from e2e/tsconfig.json rename to tests/functional-ui/tsconfig.json diff --git a/turbo.json b/turbo.json deleted file mode 100644 index d4f6062e894..00000000000 --- a/turbo.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "$schema": "https://turbo.build/schema.json", - "ui": "tui", - "globalDependencies": [ - "**/.env.*local" - ], - "globalEnv": [ - "DEBUG", - "VERCEL_URL", - "EMAIL_VERIFICATION", - "AUDIENCE", - "SYSTEM_USER_ID", - "SYSTEM_USER_PRIVATE_KEY", - "ZITADEL_API_URL", - "ZITADEL_SERVICE_USER_TOKEN", - "NEXT_PUBLIC_BASE_PATH", - "CUSTOM_REQUEST_HEADERS", - "NODE_ENV", - "PORT", - "INKEEP_API_KEY", - "DISPLAY", - "CYPRESS_DISPLAY" - ], - "tasks": { - "generate": { - "cache": true - }, - "build": {}, - "build:login:standalone": {}, - "quality": { - "with": [ - "lint", - "test:unit", - "test:integration:login", - "test:acceptance", - "test:e2e" - ] - }, - "start": {}, - "test:unit": {}, - "test:integration:login": {}, - "test:acceptance": {}, - "test:e2e": {}, - "lint": {}, - "lint:fix": {}, - "dev": { - "cache": false, - "persistent": true - }, - "clean": { - "cache": false - } - } -} \ No newline at end of file