From c1be72765c551c72740907430b4bbd5b194f19f7 Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Tue, 17 Mar 2026 15:16:39 +0100 Subject: [PATCH] chore(login): remove integration tests (#11608) # Which Problems Are Solved Removes the Cypress integration tests and associated configuration from the apps/login project to streamline the build process. # How the Problems Are Solved - Removed cypress directory, integration directory, and cypress.config.ts from apps/login. - Updated project.json to remove test-integration targets and dependencies. - Updated package.json to remove the cypress dev dependency and clean script reference. - Updated tsconfig.json to remove the now-redundant integration exclusion. - Ensured acceptance tests are preserved and correctly excluded from build inputs. --------- Co-authored-by: Florian Forster Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: conblem --- .github/workflows/lint_test_build.yml | 11 +- apps/login/.env.test-integration | 2 - apps/login/.env.test-integration-run-login | 4 - apps/login/cypress.config.ts | 17 - apps/login/integration/.gitignore | 2 - apps/login/integration/.npmrc | 1 - apps/login/integration/api-mock/Dockerfile | 16 - .../zitadel.settings.v2.SettingsService.json | 66 --- .../integration/api-mock/mocked-services.cfg | 7 - apps/login/integration/api-mock/project.json | 19 - apps/login/integration/eslint.config.mjs | 32 -- .../integration/integration/invite.cy.ts | 112 ----- .../login/integration/integration/login.cy.ts | 172 -------- .../integration/register-idp.cy.ts | 21 - .../integration/integration/register.cy.ts | 73 --- .../integration/integration/verify.cy.ts | 96 ---- apps/login/integration/support/e2e.ts | 49 --- apps/login/integration/tsconfig.json | 8 - apps/login/package.json | 3 +- apps/login/project.json | 150 ++----- apps/login/src/app/(login)/accounts/page.tsx | 8 +- apps/login/tsconfig.json | 26 +- pnpm-lock.yaml | 416 +++++++++--------- 23 files changed, 247 insertions(+), 1064 deletions(-) delete mode 100644 apps/login/.env.test-integration delete mode 100644 apps/login/.env.test-integration-run-login delete mode 100644 apps/login/cypress.config.ts delete mode 100644 apps/login/integration/.gitignore delete mode 100644 apps/login/integration/.npmrc delete mode 100644 apps/login/integration/api-mock/Dockerfile delete mode 100644 apps/login/integration/api-mock/initial-stubs/zitadel.settings.v2.SettingsService.json delete mode 100644 apps/login/integration/api-mock/mocked-services.cfg delete mode 100644 apps/login/integration/api-mock/project.json delete mode 100644 apps/login/integration/eslint.config.mjs delete mode 100644 apps/login/integration/integration/invite.cy.ts delete mode 100644 apps/login/integration/integration/login.cy.ts delete mode 100644 apps/login/integration/integration/register-idp.cy.ts delete mode 100644 apps/login/integration/integration/register.cy.ts delete mode 100644 apps/login/integration/integration/verify.cy.ts delete mode 100644 apps/login/integration/support/e2e.ts delete mode 100644 apps/login/integration/tsconfig.json diff --git a/.github/workflows/lint_test_build.yml b/.github/workflows/lint_test_build.yml index 2f72fa01e..242717ac7 100644 --- a/.github/workflows/lint_test_build.yml +++ b/.github/workflows/lint_test_build.yml @@ -1,7 +1,7 @@ name: Lint Test Build -on: - workflow_call: +on: + workflow_call: inputs: go_version: required: true @@ -56,15 +56,12 @@ jobs: 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 }} -# NX_NATIVE_LOGGING: "nx::native::cache,nx::native::db" + # NX_NATIVE_LOGGING: "nx::native::cache,nx::native::db" NX_DAEMON: "false" NX_DISABLE_DB: "true" run: pnpm nx affected --nxBail --targets lint test build --exclude @zitadel/docs @@ -95,7 +92,7 @@ jobs: with: name: api-integration-test-race-logs path: | - .artifacts/api-test-integration/race.log.* + .artifacts/api-test-integration/race.log.* - name: Upload Functional UI Test Artifacts uses: actions/upload-artifact@v4 if: failure() || cancelled() diff --git a/apps/login/.env.test-integration b/apps/login/.env.test-integration deleted file mode 100644 index 136bf21f2..000000000 --- a/apps/login/.env.test-integration +++ /dev/null @@ -1,2 +0,0 @@ -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 deleted file mode 100644 index 8eb5c685d..000000000 --- a/apps/login/.env.test-integration-run-login +++ /dev/null @@ -1,4 +0,0 @@ -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/cypress.config.ts b/apps/login/cypress.config.ts deleted file mode 100644 index ca01336fb..000000000 --- a/apps/login/cypress.config.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { defineConfig } from "cypress"; -export default defineConfig({ - reporter: "list", - video: true, - retries: { - runMode: 2 - }, - e2e: { - 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}", - pageLoadTimeout: 120_0000, - env: { - API_MOCK_STUBS_URL: process.env.API_MOCK_STUBS_URL || "http://localhost:22220/v1/stubs" - } - }, -}); diff --git a/apps/login/integration/.gitignore b/apps/login/integration/.gitignore deleted file mode 100644 index 2ca81ab13..000000000 --- a/apps/login/integration/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -screenshots -videos \ No newline at end of file diff --git a/apps/login/integration/.npmrc b/apps/login/integration/.npmrc deleted file mode 100644 index bc63bba6e..000000000 --- a/apps/login/integration/.npmrc +++ /dev/null @@ -1 +0,0 @@ -side-effects-cache=false diff --git a/apps/login/integration/api-mock/Dockerfile b/apps/login/integration/api-mock/Dockerfile deleted file mode 100644 index 6e3d2a28b..000000000 --- a/apps/login/integration/api-mock/Dockerfile +++ /dev/null @@ -1,16 +0,0 @@ -FROM bufbuild/buf:1.64.0 AS dependencies -RUN buf export https://github.com/envoyproxy/protoc-gen-validate.git --path validate --output /proto && \ - 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 golang:1.20.5-alpine3.18 AS mock-zitadel - -RUN go install github.com/eliobischof/grpc-mock/cmd/grpc-mock@01b09f60db1b501178af59bed03b2c22661df48c - -COPY mocked-services.cfg . -COPY initial-stubs initial-stubs -COPY --from=dependencies /proto/ ./ -COPY --from=zitadel-protos /zitadel/ ./zitadel/ - -ENTRYPOINT [ "sh", "-c", "grpc-mock -v 1 -proto $(tr '\n' ',' < ./mocked-services.cfg) -stub-dir ./initial-stubs -mock-addr :22222" ] diff --git a/apps/login/integration/api-mock/initial-stubs/zitadel.settings.v2.SettingsService.json b/apps/login/integration/api-mock/initial-stubs/zitadel.settings.v2.SettingsService.json deleted file mode 100644 index ebfaaadb8..000000000 --- a/apps/login/integration/api-mock/initial-stubs/zitadel.settings.v2.SettingsService.json +++ /dev/null @@ -1,66 +0,0 @@ -[ - { - "service": "zitadel.settings.v2.SettingsService", - "method": "GetBrandingSettings", - "out": { - "data": {} - } - }, - { - "service": "zitadel.settings.v2.SettingsService", - "method": "GetSecuritySettings", - "out": { - "data": {} - } - }, - { - "service": "zitadel.settings.v2.SettingsService", - "method": "GetLegalAndSupportSettings", - "out": { - "data": { - "settings": { - "tosLink": "http://whatever.com/help", - "privacyPolicyLink": "http://whatever.com/help", - "helpLink": "http://whatever.com/help" - } - } - } - }, - { - "service": "zitadel.settings.v2.SettingsService", - "method": "GetActiveIdentityProviders", - "out": { - "data": { - "identityProviders": [ - { - "id": "123", - "name": "Hubba bubba", - "type": 10 - } - ] - } - } - }, - { - "service": "zitadel.settings.v2.SettingsService", - "method": "GetPasswordComplexitySettings", - "out": { - "data": { - "settings": { - "minLength": 8, - "requiresUppercase": true, - "requiresLowercase": true, - "requiresNumber": true, - "requiresSymbol": true - } - } - } - }, - { - "service": "zitadel.settings.v2.SettingsService", - "method": "GetHostedLoginTranslation", - "out": { - "data": {} - } - } -] diff --git a/apps/login/integration/api-mock/mocked-services.cfg b/apps/login/integration/api-mock/mocked-services.cfg deleted file mode 100644 index 6a758ab8c..000000000 --- a/apps/login/integration/api-mock/mocked-services.cfg +++ /dev/null @@ -1,7 +0,0 @@ -zitadel/user/v2/user_service.proto -zitadel/org/v2/org_service.proto -zitadel/session/v2/session_service.proto -zitadel/settings/v2/settings_service.proto -zitadel/management.proto -zitadel/auth.proto -zitadel/admin.proto \ No newline at end of file diff --git a/apps/login/integration/api-mock/project.json b/apps/login/integration/api-mock/project.json deleted file mode 100644 index 0a5d92ff3..000000000 --- a/apps/login/integration/api-mock/project.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$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/eslint.config.mjs b/apps/login/integration/eslint.config.mjs deleted file mode 100644 index 7f020bdc4..000000000 --- a/apps/login/integration/eslint.config.mjs +++ /dev/null @@ -1,32 +0,0 @@ -import js from "@eslint/js"; -import tsPlugin from "@typescript-eslint/eslint-plugin"; -import tsParser from "@typescript-eslint/parser"; -import prettierConfig from "eslint-config-prettier/flat"; -import pluginCypress from "eslint-plugin-cypress"; - -export default [ - { ignores: ["node_modules/**"] }, - js.configs.recommended, - { - files: ["**/*.ts"], - plugins: { - "@typescript-eslint": tsPlugin, - }, - languageOptions: { - parser: tsParser, - ecmaVersion: "latest", - sourceType: "module", - }, - rules: { - ...tsPlugin.configs.recommended.rules, - "no-unused-vars": "off", - "no-undef": "off", - "@typescript-eslint/no-unused-vars": [ - "error", - { argsIgnorePattern: "^_" }, - ], - }, - }, - pluginCypress.configs.recommended, - prettierConfig, -]; diff --git a/apps/login/integration/integration/invite.cy.ts b/apps/login/integration/integration/invite.cy.ts deleted file mode 100644 index a68bb5469..000000000 --- a/apps/login/integration/integration/invite.cy.ts +++ /dev/null @@ -1,112 +0,0 @@ -import { stub } from "../support/e2e"; - -describe("verify invite", () => { - beforeEach(() => { - stub("zitadel.org.v2.OrganizationService", "ListOrganizations", { - data: { - details: { - totalResult: 1, - }, - result: [{ id: "256088834543534543" }], - }, - }); - - stub("zitadel.user.v2.UserService", "ListAuthenticationMethodTypes", { - data: { - authMethodTypes: [], // user with no auth methods was invited - }, - }); - - stub("zitadel.user.v2.UserService", "GetUserByID", { - data: { - user: { - userId: "221394658884845598", - state: 1, - username: "john@example.com", - loginNames: ["john@example.com"], - preferredLoginName: "john@example.com", - human: { - userId: "221394658884845598", - state: 1, - username: "john@example.com", - loginNames: ["john@example.com"], - preferredLoginName: "john@example.com", - profile: { - givenName: "John", - familyName: "Doe", - avatarUrl: "https://example.com/avatar.jpg", - }, - email: { - email: "john@example.com", - isVerified: false, - }, - }, - }, - }, - }); - - stub("zitadel.session.v2.SessionService", "CreateSession", { - data: { - details: { - sequence: 859, - changeDate: new Date("2024-04-04T09:40:55.577Z"), - resourceOwner: "220516472055706145", - }, - sessionId: "221394658884845598", - sessionToken: "SDMc7DlYXPgwRJ-Tb5NlLqynysHjEae3csWsKzoZWLplRji0AYY3HgAkrUEBqtLCvOayLJPMd0ax4Q", - challenges: undefined, - }, - }); - - stub("zitadel.session.v2.SessionService", "GetSession", { - data: { - session: { - id: "221394658884845598", - creationDate: new Date("2024-04-04T09:40:55.577Z"), - changeDate: new Date("2024-04-04T09:40:55.577Z"), - sequence: 859, - factors: { - user: { - id: "221394658884845598", - loginName: "john@example.com", - }, - password: undefined, - webAuthN: undefined, - intent: undefined, - }, - metadata: {}, - }, - }, - }); - - stub("zitadel.settings.v2.SettingsService", "GetLoginSettings", { - data: { - settings: { - passkeysType: 1, - allowLocalAuthentication: true, - }, - }, - }); - }); - - it("shows authenticators after successful invite verification", () => { - stub("zitadel.user.v2.UserService", "VerifyInviteCode"); - - cy.visit("/verify?userId=221394658884845598&code=abc&invite=true"); - cy.get("[data-testid=submit-button]").click(); - cy.url().should("include", Cypress.config().baseUrl + "/authenticator/set"); - }); - - it("shows an error if invite code validation failed", () => { - stub("zitadel.user.v2.UserService", "VerifyInviteCode", { - code: 3, - error: "error validating code", - }); - - // TODO: Avoid uncaught exception in application - cy.once("uncaught:exception", () => false); - cy.visit("/verify?userId=221394658884845598&code=abc&invite=true"); - cy.get("[data-testid=submit-button]").click(); - cy.contains("Could not verify invite", { timeout: 10_000 }); - }); -}); diff --git a/apps/login/integration/integration/login.cy.ts b/apps/login/integration/integration/login.cy.ts deleted file mode 100644 index 1cd18abc6..000000000 --- a/apps/login/integration/integration/login.cy.ts +++ /dev/null @@ -1,172 +0,0 @@ -import { stub } from "../support/e2e"; - -describe("login", () => { - beforeEach(() => { - stub("zitadel.org.v2.OrganizationService", "ListOrganizations", { - data: { - details: { - totalResult: 1, - }, - result: [{ id: "256088834543534543" }], - }, - }); - stub("zitadel.session.v2.SessionService", "CreateSession", { - data: { - details: { - sequence: 859, - changeDate: new Date("2024-04-04T09:40:55.577Z"), - resourceOwner: "220516472055706145", - }, - sessionId: "221394658884845598", - sessionToken: "SDMc7DlYXPgwRJ-Tb5NlLqynysHjEae3csWsKzoZWLplRji0AYY3HgAkrUEBqtLCvOayLJPMd0ax4Q", - challenges: undefined, - }, - }); - - stub("zitadel.session.v2.SessionService", "GetSession", { - data: { - session: { - id: "221394658884845598", - creationDate: new Date("2024-04-04T09:40:55.577Z"), - changeDate: new Date("2024-04-04T09:40:55.577Z"), - sequence: 859, - factors: { - user: { - id: "221394658884845598", - loginName: "john@example.com", - }, - password: undefined, - webAuthN: undefined, - intent: undefined, - }, - metadata: {}, - }, - }, - }); - - stub("zitadel.settings.v2.SettingsService", "GetLoginSettings", { - data: { - settings: { - passkeysType: 1, - allowLocalAuthentication: true, - }, - }, - }); - }); - describe("password login", () => { - beforeEach(() => { - stub("zitadel.user.v2.UserService", "ListUsers", { - data: { - details: { - totalResult: 1, - }, - result: [ - { - userId: "221394658884845598", - state: 1, - username: "john@example.com", - loginNames: ["john@example.com"], - preferredLoginName: "john@example.com", - human: { - userId: "221394658884845598", - state: 1, - username: "john@example.com", - loginNames: ["john@example.com"], - preferredLoginName: "john@example.com", - profile: { - givenName: "John", - familyName: "Doe", - avatarUrl: "https://example.com/avatar.jpg", - }, - email: { - email: "john@example.com", - isVerified: true, - }, - }, - }, - ], - }, - }); - stub("zitadel.user.v2.UserService", "ListAuthenticationMethodTypes", { - data: { - authMethodTypes: [1], // 1 for password authentication - }, - }); - }); - it("should redirect a user with password authentication to /password", () => { - cy.visit("/loginname?loginName=john%40example.com&submit=true"); - cy.url({ timeout: 5 * 60_000 }).should("include", Cypress.config().baseUrl + "/password"); - }); - describe("with passkey prompt", () => { - beforeEach(() => { - stub("zitadel.session.v2.SessionService", "SetSession", { - data: { - details: { - sequence: 859, - changeDate: "2023-07-04T07:58:20.126Z", - resourceOwner: "220516472055706145", - }, - sessionToken: "SDMc7DlYXPgwRJ-Tb5NlLqynysHjEae3csWsKzoZWLplRji0AYY3HgAkrUEBqtLCvOayLJPMd0ax4Q", - challenges: undefined, - }, - }); - }); - // it("should prompt a user to setup passkey authentication if passkey is allowed in the login settings", () => { - // cy.visit("/loginname?loginName=john%40example.com&submit=true"); - // cy.location("pathname", { timeout: 5 * 60_000 }).should("eq", "/password"); - // cy.get('input[type="password"]').focus().type("MyStrongPassword!1"); - // cy.get('button[type="submit"]').click(); - // cy.location("pathname", { timeout: 10_000 }).should( - // "eq", - // "/passkey/set", - // ); - // }); - }); - }); - describe("passkey login", () => { - beforeEach(() => { - stub("zitadel.user.v2.UserService", "ListUsers", { - data: { - details: { - totalResult: 1, - }, - result: [ - { - userId: "221394658884845598", - state: 1, - username: "john@example.com", - loginNames: ["john@example.com"], - preferredLoginName: "john@example.com", - human: { - userId: "221394658884845598", - state: 1, - username: "john@example.com", - loginNames: ["john@example.com"], - preferredLoginName: "john@example.com", - profile: { - givenName: "John", - familyName: "Doe", - avatarUrl: "https://example.com/avatar.jpg", - }, - email: { - email: "john@example.com", - isVerified: true, - }, - }, - }, - ], - }, - }); - stub("zitadel.user.v2.UserService", "ListAuthenticationMethodTypes", { - data: { - authMethodTypes: [2], // 2 for passkey authentication - }, - }); - }); - - it("should redirect a user with passkey authentication to /passkey", () => { - cy.visit("/loginname?loginName=john%40example.com&submit=true"); - cy.url().should("include", Cypress.config().baseUrl + "/passkey"); - }); - }); -}); diff --git a/apps/login/integration/integration/register-idp.cy.ts b/apps/login/integration/integration/register-idp.cy.ts deleted file mode 100644 index d51e0bb96..000000000 --- a/apps/login/integration/integration/register-idp.cy.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { stub } from "../support/e2e"; - -const IDP_URL = "https://example.com/idp/url"; - -describe("register idps", () => { - beforeEach(() => { - stub("zitadel.user.v2.UserService", "StartIdentityProviderIntent", { - data: { - authUrl: IDP_URL, - }, - }); - }); - - it("should redirect the user to the correct url", () => { - cy.visit("/idp"); - cy.get('button[e2e="google"]').click(); - cy.origin(IDP_URL, { args: IDP_URL }, (url) => { - cy.location("href").should("eq", url); - }); - }); -}); diff --git a/apps/login/integration/integration/register.cy.ts b/apps/login/integration/integration/register.cy.ts deleted file mode 100644 index a8029d410..000000000 --- a/apps/login/integration/integration/register.cy.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { stub } from "../support/e2e"; - -describe("register", () => { - beforeEach(() => { - stub("zitadel.org.v2.OrganizationService", "ListOrganizations", { - data: { - details: { - totalResult: 1, - }, - result: [{ id: "256088834543534543" }], - }, - }); - stub("zitadel.settings.v2.SettingsService", "GetLoginSettings", { - data: { - settings: { - passkeysType: 1, - allowRegister: true, - allowLocalAuthentication: true, - defaultRedirectUri: "", - }, - }, - }); - stub("zitadel.user.v2.UserService", "AddHumanUser", { - data: { - userId: "221394658884845598", - }, - }); - stub("zitadel.session.v2.SessionService", "CreateSession", { - data: { - details: { - sequence: 859, - changeDate: new Date("2024-04-04T09:40:55.577Z"), - resourceOwner: "220516472055706145", - }, - sessionId: "221394658884845598", - sessionToken: "SDMc7DlYXPgwRJ-Tb5NlLqynysHjEae3csWsKzoZWLplRji0AYY3HgAkrUEBqtLCvOayLJPMd0ax4Q", - challenges: undefined, - }, - }); - - stub("zitadel.session.v2.SessionService", "GetSession", { - data: { - session: { - id: "221394658884845598", - creationDate: new Date("2024-04-04T09:40:55.577Z"), - changeDate: new Date("2024-04-04T09:40:55.577Z"), - sequence: 859, - factors: { - user: { - id: "221394658884845598", - loginName: "john@example.com", - }, - password: undefined, - webAuthN: undefined, - intent: undefined, - }, - metadata: {}, - }, - }, - }); - }); - - it("should redirect a user who selects passkey on register to /passkey/set", () => { - cy.visit("/register"); - cy.get('input[data-testid="firstname-text-input"]').focus().type("John"); - cy.get('input[data-testid="lastname-text-input"]').focus().type("Doe"); - cy.get('input[data-testid="email-text-input"]').focus().type("john@example.com"); - cy.get('input[type="checkbox"][value="privacypolicy"]').check(); - cy.get('input[type="checkbox"][value="tos"]').check(); - cy.get('button[type="submit"]').click(); - cy.url().should("include", Cypress.config().baseUrl + "/passkey/set"); - }); -}); diff --git a/apps/login/integration/integration/verify.cy.ts b/apps/login/integration/integration/verify.cy.ts deleted file mode 100644 index ed3182819..000000000 --- a/apps/login/integration/integration/verify.cy.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { stub } from "../support/e2e"; - -describe("verify email", () => { - beforeEach(() => { - stub("zitadel.org.v2.OrganizationService", "ListOrganizations", { - data: { - details: { - totalResult: 1, - }, - result: [{ id: "256088834543534543" }], - }, - }); - - stub("zitadel.user.v2.UserService", "ListAuthenticationMethodTypes", { - data: { - authMethodTypes: [1], // set one method such that we know that the user was not invited - }, - }); - - stub("zitadel.user.v2.UserService", "SendEmailCode"); - - stub("zitadel.user.v2.UserService", "GetUserByID", { - data: { - user: { - userId: "221394658884845598", - state: 1, - username: "john@example.com", - loginNames: ["john@example.com"], - preferredLoginName: "john@example.com", - human: { - userId: "221394658884845598", - state: 1, - username: "john@example.com", - loginNames: ["john@example.com"], - preferredLoginName: "john@example.com", - profile: { - givenName: "John", - familyName: "Doe", - avatarUrl: "https://example.com/avatar.jpg", - }, - email: { - email: "john@example.com", - isVerified: false, // email is not verified yet - }, - }, - }, - }, - }); - - stub("zitadel.session.v2.SessionService", "CreateSession", { - data: { - details: { - sequence: 859, - changeDate: new Date("2024-04-04T09:40:55.577Z"), - resourceOwner: "220516472055706145", - }, - sessionId: "221394658884845598", - sessionToken: "SDMc7DlYXPgwRJ-Tb5NlLqynysHjEae3csWsKzoZWLplRji0AYY3HgAkrUEBqtLCvOayLJPMd0ax4Q", - challenges: undefined, - }, - }); - - stub("zitadel.session.v2.SessionService", "GetSession", { - data: { - session: { - id: "221394658884845598", - creationDate: new Date("2024-04-04T09:40:55.577Z"), - changeDate: new Date("2024-04-04T09:40:55.577Z"), - sequence: 859, - factors: { - user: { - id: "221394658884845598", - loginName: "john@example.com", - }, - password: undefined, - webAuthN: undefined, - intent: undefined, - }, - metadata: {}, - }, - }, - }); - }); - - it("shows an error if email code validation failed", () => { - stub("zitadel.user.v2.UserService", "VerifyEmail", { - code: 3, - error: "error validating code", - }); - // TODO: Avoid uncaught exception in application - cy.once("uncaught:exception", () => false); - cy.visit("/verify?userId=221394658884845598&code=abc"); - cy.get("[data-testid=submit-button]").click(); - cy.contains("Could not verify email"); - }); -}); diff --git a/apps/login/integration/support/e2e.ts b/apps/login/integration/support/e2e.ts deleted file mode 100644 index 75641d023..000000000 --- a/apps/login/integration/support/e2e.ts +++ /dev/null @@ -1,49 +0,0 @@ -// Handle React 19 SSR hydration errors that don't affect functionality -Cypress.on('uncaught:exception', (err, runnable) => { - // React error #419 is specifically about SSR Suspense boundary issues - // This doesn't affect the actual functionality, just the SSR/CSR transition - if (err.message.includes('Minified React error #419')) { - console.warn('Cypress: Suppressed React SSR error #419 (Suspense boundary issue):', err.message); - return false; - } - // Other hydration mismatches that are common with React 19 + Next.js 15 - if (err.message.includes('server could not finish this Suspense boundary') || - err.message.includes('Switched to client rendering') || - err.message.includes('Hydration failed') || - err.message.includes('Text content does not match server-rendered HTML')) { - console.warn('Cypress: Suppressed React hydration error (non-functional):', err.message); - return false; - } - // Let other errors fail the test as they should - return true; -}); - -const url = Cypress.env("API_MOCK_STUBS_URL"); - -function removeStub(service: string, method: string) { - return cy.request({ - url, - method: "DELETE", - qs: { - service, - method, - }, - }); -} - -export function stub(service: string, method: string, out?: any) { - removeStub(service, method); - return cy.request({ - url, - method: "POST", - body: { - stubs: [ - { - service, - method, - out, - }, - ], - }, - }); -} diff --git a/apps/login/integration/tsconfig.json b/apps/login/integration/tsconfig.json deleted file mode 100644 index 48c3e14e4..000000000 --- a/apps/login/integration/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "lib": ["es5", "dom"], - "types": ["cypress", "node"] - }, - "include": ["**/*.ts", "../cypress.config.ts"] -} diff --git a/apps/login/package.json b/apps/login/package.json index 8a453f6d3..93fbb4381 100644 --- a/apps/login/package.json +++ b/apps/login/package.json @@ -14,7 +14,7 @@ "test-unit": "vitest --run", "test-dockerized": "vitest --run --config vitest.config.dockerized.ts", "lint-staged": "lint-staged", - "clean": "rm -rf node_modules .next cypress" + "clean": "rm -rf node_modules .next" }, "git": { "pre-commit": "lint-staged" @@ -81,7 +81,6 @@ "@zitadel/proto": "workspace:*", "autoprefixer": "^10.4.23", "concurrently": "^9.2.1", - "cypress": "^14.5.4", "dotenv-cli": "^8.0.0", "env-cmd": "^10.1.0", "esbuild": "^0.27.3", diff --git a/apps/login/project.json b/apps/login/project.json index 6216cde52..df070979e 100644 --- a/apps/login/project.json +++ b/apps/login/project.json @@ -4,47 +4,34 @@ "prod": { "description": "Runs the Next.js Login application in production mode from the standalone build", "continuous": true, - "dependsOn": [ - "build" - ], + "dependsOn": ["build"], "defaultConfiguration": "default", "configurations": { - "default": {}, - "test-login-integration": {} + "default": {} } }, "dev": { "description": "Runs the Next.js Login application in development mode with hot-reloading", "continuous": true, - "dependsOn": [ - "^build" - ] + "dependsOn": ["^build"] }, "build": { "description": "Builds the Next.js Login application in standalone mode for production", "cache": true, - "dependsOn": [ - "^build" - ], + "dependsOn": ["^build"], "inputs": [ "default", "{workspaceRoot}/pnpm-lock.yaml", "!{projectRoot}/.env.*", "!{projectRoot}/.local.env", - "!{projectRoot}/integration/**/*", "!{projectRoot}/acceptance/**/*", - "!{projectRoot}/dockerized/**/*", - "!{projectRoot}/cypress.config.ts" + "!{projectRoot}/dockerized/**/*" ], - "outputs": [ - "{projectRoot}/.next/standalone" - ] + "outputs": ["{projectRoot}/.next/standalone"] }, "pack": { "description": "Builds a local Docker image for the ZITADEL Login UI (zitadel/zitadel-login:local). Requires Docker daemon.", - "dependsOn": [ - "build" - ], + "dependsOn": ["build"], "command": "docker build -f apps/login/Dockerfile -t zitadel/zitadel-login:local apps/login", "cache": false, "inputs": [ @@ -52,144 +39,68 @@ "{workspaceRoot}/pnpm-lock.yaml", "{projectRoot}/Dockerfile", "!{projectRoot}/.env.*", - "!{projectRoot}/integration/**/*", "!{projectRoot}/acceptance/**/*" ] }, "build-vercel": { "description": "Builds the Next.js Login application for Vercel deployment", "cache": true, - "dependsOn": [ - "^build" - ], + "dependsOn": ["^build"], "inputs": [ "default", "{workspaceRoot}/pnpm-lock.yaml", "!{projectRoot}/.env.*", "!{projectRoot}/.local.env", - "!{projectRoot}/integration/**/*", "!{projectRoot}/acceptance/**/*", - "!{projectRoot}/dockerized/**/*", - "!{projectRoot}/cypress.config.ts" + "!{projectRoot}/dockerized/**/*" ], - "outputs": [ - "{projectRoot}/.next", - "!{projectRoot}/.next/cache", - "!{projectRoot}/.next/standalone" - ] + "outputs": ["{projectRoot}/.next", "!{projectRoot}/.next/cache", "!{projectRoot}/.next/standalone"] }, "lint": { "description": "Runs all linters", - "dependsOn": [ - "lint-check-*" - ] + "dependsOn": ["lint-check-*"] }, "lint-check-prettier": { "description": "Checks code formatting with Prettier", "cache": true, - "inputs": [ - "default" - ] + "inputs": ["default"] }, "lint-check-next": { "description": "Runs Next.js specific lint checks", "cache": true, - "inputs": [ - "default" - ] + "inputs": ["default"], + "dependsOn": ["^build"] }, "test": { - "description": "Runs all tests (unit, integration, and dockerized)", - "dependsOn": [ - "test-unit", - "test-integration", - "test-dockerized" - ] + "description": "Runs all tests (unit, and dockerized)", + "dependsOn": ["test-unit", "test-dockerized"] }, "test-unit": { "description": "Runs unit tests using Vitest", - "dependsOn": [ - "^build" - ] + "dependsOn": ["^build"] }, "test-dockerized": { "description": "Runs dockerized integration tests (OpenTelemetry and custom CA certificate tests)", - "dependsOn": [ - "build", - "test-integration" - ], + "dependsOn": ["build"], "executor": "nx:run-commands", "cache": true, - "inputs": [ - "default", - "!{projectRoot}/integration/**/*", - "!{projectRoot}/acceptance/**/*", - "!{projectRoot}/dockerized/**/output/**/*" - ], + "inputs": ["default", "!{projectRoot}/acceptance/**/*", "!{projectRoot}/dockerized/**/output/**/*"], "options": { "cwd": "{projectRoot}", - "commands": [ - "pnpm vitest --run --config vitest.config.dockerized.ts" - ] + "commands": ["pnpm vitest --run --config vitest.config.dockerized.ts"] } }, "test-ssl": { "description": "Runs TLS integration tests using testcontainers", - "dependsOn": [ - "build" - ], + "dependsOn": ["build"], "executor": "nx:run-commands", "cache": true, - "inputs": [ - "default", - "!{projectRoot}/integration/**/*", - "!{projectRoot}/acceptance/**/*", - "!{projectRoot}/dockerized/**/output/**/*" - ], + "inputs": ["default", "!{projectRoot}/acceptance/**/*", "!{projectRoot}/dockerized/**/output/**/*"], "options": { "cwd": "{projectRoot}", - "commands": [ - "pnpm vitest --run --config vitest.config.dockerized.ts dockerized/ssl" - ] + "commands": ["pnpm vitest --run --config vitest.config.dockerized.ts dockerized/ssl"] } }, - "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" - }, "test-acceptance": { "description": "Runs the Playwright acceptance test suite in apps/login/acceptance/ against a running ZITADEL stack. Requires LOGIN_BASE_URL, ZITADEL_API_URL, and ZITADEL_ADMIN_TOKEN to be set (or apps/login/.env.test.local to exist). Run the setup script at acceptance/setup/setup.sh first to seed config.", "executor": "nx:run-commands", @@ -206,9 +117,7 @@ }, "pack-archive": { "description": "Packages the standalone Login application build into an archive", - "dependsOn": [ - "build" - ], + "dependsOn": ["build"], "executor": "nx:run-commands", "options": { "parallel": false, @@ -216,15 +125,10 @@ "STANDALONE_DIR": "{projectRoot}/.next/standalone", "PACK_DIR": "{workspaceRoot}/.artifacts/pack" }, - "commands": [ - "mkdir -p ${PACK_DIR}", - "tar -czf ${PACK_DIR}/zitadel-login.tar.gz -C ${STANDALONE_DIR} ." - ] + "commands": ["mkdir -p ${PACK_DIR}", "tar -czf ${PACK_DIR}/zitadel-login.tar.gz -C ${STANDALONE_DIR} ."] }, "cache": true, - "outputs": [ - "{workspaceRoot}/.artifacts/pack/zitadel-login.tar.gz" - ] + "outputs": ["{workspaceRoot}/.artifacts/pack/zitadel-login.tar.gz"] } } -} \ No newline at end of file +} diff --git a/apps/login/src/app/(login)/accounts/page.tsx b/apps/login/src/app/(login)/accounts/page.tsx index 3ecc7c4f4..edae804e0 100644 --- a/apps/login/src/app/(login)/accounts/page.tsx +++ b/apps/login/src/app/(login)/accounts/page.tsx @@ -17,13 +17,7 @@ export async function generateMetadata(): Promise { return { title: t("title") }; } -async function loadSessions({ - serviceConfig, - organization, -}: { - serviceConfig: ServiceConfig; - organization?: string; -}) { +async function loadSessions({ serviceConfig, organization }: { serviceConfig: ServiceConfig; organization?: string }) { const cookieIds = await getAllSessionCookieIds(); if (cookieIds && cookieIds.length) { diff --git a/apps/login/tsconfig.json b/apps/login/tsconfig.json index d109ec052..14a81335e 100644 --- a/apps/login/tsconfig.json +++ b/apps/login/tsconfig.json @@ -1,11 +1,7 @@ { "compilerOptions": { "target": "es5", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -23,23 +19,9 @@ } ], "paths": { - "@/*": [ - "./src/*" - ] + "@/*": ["./src/*"] } }, - "include": [ - "next-env.d.ts", - "**/*.ts", - "**/*.tsx", - ".next/types/**/*.ts", - ".next/dev/types/**/*.ts" - ], - "exclude": [ - "node_modules", - "integration", - "acceptance", - "dockerized", - "vitest.config*.ts" - ] + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", ".next/dev/types/**/*.ts"], + "exclude": ["node_modules", "acceptance", "dockerized", "vitest.config*.ts"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 518cdbc2c..a68fc113a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,7 +14,7 @@ importers: devDependencies: '@bufbuild/buf': specifier: ^1.65.0 - version: 1.66.1 + version: 1.65.0 '@changesets/cli': specifier: ^2.29.8 version: 2.29.8(@types/node@25.2.3) @@ -132,10 +132,10 @@ importers: version: 19.2.3(@types/react@19.2.14) '@typescript-eslint/eslint-plugin': specifier: ^8.57.0 - version: 8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.57.1(@typescript-eslint/parser@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': specifier: ^8.57.0 - version: 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) eslint: specifier: ^10.0.0 version: 10.0.0(jiti@2.6.1) @@ -147,7 +147,7 @@ importers: version: 4.4.4(eslint-plugin-import@2.32.0)(eslint@10.0.0(jiti@2.6.1)) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) eslint-plugin-mdx: specifier: ^3.7.0 version: 3.7.0(eslint@10.0.0(jiti@2.6.1)) @@ -337,10 +337,10 @@ importers: version: 10.0.0 '@typescript-eslint/eslint-plugin': specifier: ^8.57.0 - version: 8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.57.1(@typescript-eslint/parser@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': specifier: ^8.57.0 - version: 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@vercel/git-hooks': specifier: 1.0.0 version: 1.0.0 @@ -359,9 +359,6 @@ importers: concurrently: specifier: ^9.2.1 version: 9.2.1 - cypress: - specifier: ^14.5.4 - version: 14.5.4 dotenv-cli: specifier: ^8.0.0 version: 8.0.0 @@ -385,7 +382,7 @@ importers: version: 4.3.0(eslint@10.0.0(jiti@2.6.1)) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) eslint-plugin-react-hooks: specifier: ^7.0.1 version: 7.0.1(eslint@10.0.0(jiti@2.6.1)) @@ -584,10 +581,10 @@ importers: devDependencies: '@angular-eslint/eslint-plugin': specifier: 21.3.0 - version: 21.3.0(@typescript-eslint/utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + version: 21.3.0(@typescript-eslint/utils@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) '@angular-eslint/eslint-plugin-template': specifier: 21.3.0 - version: 21.3.0(@angular-eslint/template-parser@21.3.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(@typescript-eslint/types@8.57.0)(@typescript-eslint/utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + version: 21.3.0(@angular-eslint/template-parser@21.3.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(@typescript-eslint/types@8.57.1)(@typescript-eslint/utils@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) '@angular-eslint/template-parser': specifier: 21.3.0 version: 21.3.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) @@ -635,10 +632,10 @@ importers: version: 10.0.0 '@typescript-eslint/eslint-plugin': specifier: ^8.57.0 - version: 8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + version: 8.57.1(@typescript-eslint/parser@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) '@typescript-eslint/parser': specifier: ^8.57.0 - version: 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + version: 8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) '@zitadel/client': specifier: workspace:* version: link:../packages/zitadel-client @@ -656,7 +653,7 @@ importers: version: 4.4.4(eslint-plugin-import@2.32.0)(eslint@10.0.0(jiti@2.6.1)) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) globals: specifier: ^17.0.0 version: 17.3.0 @@ -726,7 +723,7 @@ importers: devDependencies: '@bufbuild/protocompile': specifier: ^0.0.1 - version: 0.0.1(@bufbuild/buf@1.66.1) + version: 0.0.1(@bufbuild/buf@1.65.0) '@eslint/js': specifier: ^10.0.0 version: 10.0.1(eslint@10.0.0(jiti@2.6.1)) @@ -735,10 +732,10 @@ importers: version: 24.10.9 '@typescript-eslint/eslint-plugin': specifier: ^8.57.0 - version: 8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.57.1(@typescript-eslint/parser@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': specifier: ^8.57.0 - version: 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) eslint: specifier: ^10.0.0 version: 10.0.0(jiti@2.6.1) @@ -750,7 +747,7 @@ importers: version: 4.4.4(eslint-plugin-import@2.32.0)(eslint@10.0.0(jiti@2.6.1)) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) globals: specifier: ^17.0.0 version: 17.3.0 @@ -1296,50 +1293,50 @@ packages: '@balena/dockerignore@1.0.2': resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==} - '@bufbuild/buf-darwin-arm64@1.66.1': - resolution: {integrity: sha512-Yl7vvFhKrA87ctsIiwN2XWbJq34VxWoEzNBe9dhrutKLpy7hM7l/ylDCuctqPh+CGdSUijQfmHiA4bQgK8s2yQ==} + '@bufbuild/buf-darwin-arm64@1.65.0': + resolution: {integrity: sha512-2U8CHjW1ysINYKwIPcc4WAiQPxe91RIjNtjpg+RC9rP0aZ7TpGm5MTMY5l3sN4drtmKdb9rBs3bMQsMNhSc90A==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - '@bufbuild/buf-darwin-x64@1.66.1': - resolution: {integrity: sha512-pRbu0l7jtbXBBCq/7wrs2ZUFzCkDBDGuT3xlQt04k1SgIoW1lznpDnUZ6vbQj1rIU94dCbnsuL7M6k+rCFafOA==} + '@bufbuild/buf-darwin-x64@1.65.0': + resolution: {integrity: sha512-aMqfc6pQC4L9dZpSD61XCEpPWKEtb1rXDPkK0/tzrfTWodnbaJ/elNoxsCGzbZVSMFeAdomUpXmSMrk8ALfWWw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - '@bufbuild/buf-linux-aarch64@1.66.1': - resolution: {integrity: sha512-V/dwOAcQ9r5B6BUEtUeVPvkpNxYhmHLILrJZmIqNdjpInVQWknpGm1Mmpy2xANuOhRh7O/Huq7kaoQvNjSdnWQ==} + '@bufbuild/buf-linux-aarch64@1.65.0': + resolution: {integrity: sha512-gzqvY4PLRQ7g0+RlE9g+OL/6yPd5szG7e3Wd5bgjJzfKaQerNiQWaGyPLdcRsIM/WxJhT5e5lG8OrrWHwgQ9Ig==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - '@bufbuild/buf-linux-armv7@1.66.1': - resolution: {integrity: sha512-WDmspvGLq/lNVj4jAb2TDWVKLzG9l5nwhNsZOo1I5UKrE0PD2LdbM7YdnMne15AIg3qlUxHqq2Eg8pVyxHqCqw==} + '@bufbuild/buf-linux-armv7@1.65.0': + resolution: {integrity: sha512-RpYFuPr9MKniD+WNfDgCclyvMu+/w9kK41OWr9sNnbS2BorujskwPiY0iTf5j+8+n/MeAnLIGlyC36+vUB/wIw==} engines: {node: '>=12'} cpu: [arm] os: [linux] - '@bufbuild/buf-linux-x64@1.66.1': - resolution: {integrity: sha512-at0JeAlc+pquaNB/80R5F6bQs1gtdSuJRj+naei+lH2L2M1yQTiYU3f9dJnY4hVbq4/JbxSdxqJx2VOLPt1ztw==} + '@bufbuild/buf-linux-x64@1.65.0': + resolution: {integrity: sha512-0j06h1uKCXlOtrlNcTBkURazT+AwMNvuVxgJsYeUDnSliN05QS7LnBzPOwKg76ariSqlLo+QXk9eNtdhgVjYOg==} engines: {node: '>=12'} cpu: [x64] os: [linux] - '@bufbuild/buf-win32-arm64@1.66.1': - resolution: {integrity: sha512-gb2LDuqkY1RSFIOMYJQTimTLIsW2/pqOvcPWBDApUZBOQS5CJdrAtuoBqRzpqrI02OF45uinKmqq+9dun/X92A==} + '@bufbuild/buf-win32-arm64@1.65.0': + resolution: {integrity: sha512-KBFsQ3iEityUuLTUCoXAO6ZTGUXWljSjK4upqofsYCb4OJeSeVguD7b09efkQt9ymKsXBt5wQicsRdkMJy/VEA==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - '@bufbuild/buf-win32-x64@1.66.1': - resolution: {integrity: sha512-QzDiv9dAUr89HjHsKOrC5EQB+2aWVwKmhZFYzAGgHTt+ONAgz9RgLhwIm6LTtrLigB0LIHk/nLMIXB3sXUhyrg==} + '@bufbuild/buf-win32-x64@1.65.0': + resolution: {integrity: sha512-vJYzHjncSLdy4sPDW8kLqUldHh6Vucg6KabAflm7CDj29lU/HydV8T+nOVsXkoRMUf4+H/qy8WjnSMEtRkaogA==} engines: {node: '>=12'} cpu: [x64] os: [win32] - '@bufbuild/buf@1.66.1': - resolution: {integrity: sha512-TelMLptEDfdcl8D+WjKQLzGGYKAwOSVjCPJ21L9X9xT7KZHigTAhHP5idrTCtXKHHPPQB6Sq12wVnhWgFQ9s7w==} + '@bufbuild/buf@1.65.0': + resolution: {integrity: sha512-IQmIBB2CGbJAwx1NkuAWMuj4QGPnZ8mujbf4ckx9t6KI9EzfUzql1OyKi9qPrxlLAciI+kBIyPDQ2MIvXTxWUg==} engines: {node: '>=12'} hasBin: true @@ -5104,8 +5101,8 @@ packages: resolution: {integrity: sha512-hMHXejGFVOS4HwCo7C2qddChuvMJs3sEOALo7gNOvwLS4dGLrW8flbSglDki4ttyremlKQstP5WJuPxmHQU3sA==} engines: {node: '>=20'} - '@scalar/helpers@0.4.0': - resolution: {integrity: sha512-1XOdy0jZp0Yu+lOmvDlPfG8+oLJK9MUhx7Q7OFggSS+zKG3n01xJKnTpgm9uhETgJrGy2yxG9y0cz4KPexXHng==} + '@scalar/helpers@0.4.1': + resolution: {integrity: sha512-XfyYqSUA597wfzS8lmMY1xvYv4si2WytuoBWj7JDpx3E/lVq7YEsticXF/Q30ttFVRBfgQErg8MQI6b6IkZr2Q==} engines: {node: '>=22'} '@scalar/icons@0.5.3': @@ -5120,8 +5117,8 @@ packages: resolution: {integrity: sha512-F40E18vp6GIcJU5kV9UOKGhIrzN2IYdEMCcG3vw3INvvkXqJGqVPnCjcnSWFk27MByaD5Dzjlc3TvkgTiqNGYw==} engines: {node: '>=20'} - '@scalar/json-magic@0.12.2': - resolution: {integrity: sha512-rIVDiXK+SeB/SgXVk5EelPmRTdDzN7nfezw6yq+TeHnEuJWXqP2xo24J6/pqIcZV1HDR0q/x4JKWGXsm8+pozg==} + '@scalar/json-magic@0.12.3': + resolution: {integrity: sha512-SX4LbdCk/0JLP4t4oz1nzqfMzHsG9gY1jSgKB7Q2BsQHJ4V1zapQ+aFrMmbjaCrz8hueGG/3UCtgyWBNuGmT9g==} engines: {node: '>=22'} '@scalar/oas-utils@0.6.46': @@ -5783,63 +5780,67 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.57.0': - resolution: {integrity: sha512-qeu4rTHR3/IaFORbD16gmjq9+rEs9fGKdX0kF6BKSfi+gCuG3RCKLlSBYzn/bGsY9Tj7KE/DAQStbp8AHJGHEQ==} + '@typescript-eslint/eslint-plugin@8.57.1': + resolution: {integrity: sha512-Gn3aqnvNl4NGc6x3/Bqk1AOn0thyTU9bqDRhiRnUWezgvr2OnhYCWCgC8zXXRVqBsIL1pSDt7T9nJUe0oM0kDQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.57.0 + '@typescript-eslint/parser': ^8.57.1 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.57.0': - resolution: {integrity: sha512-XZzOmihLIr8AD1b9hL9ccNMzEMWt/dE2u7NyTY9jJG6YNiNthaD5XtUHVF2uCXZ15ng+z2hT3MVuxnUYhq6k1g==} + '@typescript-eslint/parser@8.57.1': + resolution: {integrity: sha512-k4eNDan0EIMTT/dUKc/g+rsJ6wcHYhNPdY19VoX/EOtaAG8DLtKCykhrUnuHPYvinn5jhAPgD2Qw9hXBwrahsw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.57.0': - resolution: {integrity: sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w==} + '@typescript-eslint/project-service@8.57.1': + resolution: {integrity: sha512-vx1F37BRO1OftsYlmG9xay1TqnjNVlqALymwWVuYTdo18XuKxtBpCj1QlzNIEHlvlB27osvXFWptYiEWsVdYsg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.57.0': - resolution: {integrity: sha512-nvExQqAHF01lUM66MskSaZulpPL5pgy5hI5RfrxviLgzZVffB5yYzw27uK/ft8QnKXI2X0LBrHJFr1TaZtAibw==} + '@typescript-eslint/scope-manager@8.57.1': + resolution: {integrity: sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.57.0': - resolution: {integrity: sha512-LtXRihc5ytjJIQEH+xqjB0+YgsV4/tW35XKX3GTZHpWtcC8SPkT/d4tqdf1cKtesryHm2bgp6l555NYcT2NLvA==} + '@typescript-eslint/tsconfig-utils@8.57.1': + resolution: {integrity: sha512-0lgOZB8cl19fHO4eI46YUx2EceQqhgkPSuCGLlGi79L2jwYY1cxeYc1Nae8Aw1xjgW3PKVDLlr3YJ6Bxx8HkWg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.57.0': - resolution: {integrity: sha512-yjgh7gmDcJ1+TcEg8x3uWQmn8ifvSupnPfjP21twPKrDP/pTHlEQgmKcitzF/rzPSmv7QjJ90vRpN4U+zoUjwQ==} + '@typescript-eslint/type-utils@8.57.1': + resolution: {integrity: sha512-+Bwwm0ScukFdyoJsh2u6pp4S9ktegF98pYUU0hkphOOqdMB+1sNQhIz8y5E9+4pOioZijrkfNO/HUJVAFFfPKA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.57.0': - resolution: {integrity: sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==} + '@typescript-eslint/types@8.56.0': + resolution: {integrity: sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.57.0': - resolution: {integrity: sha512-m7faHcyVg0BT3VdYTlX8GdJEM7COexXxS6KqGopxdtkQRvBanK377QDHr4W/vIPAR+ah9+B/RclSW5ldVniO1Q==} + '@typescript-eslint/types@8.57.1': + resolution: {integrity: sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.57.1': + resolution: {integrity: sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.57.0': - resolution: {integrity: sha512-5iIHvpD3CZe06riAsbNxxreP+MuYgVUsV0n4bwLH//VJmgtt54sQeY2GszntJ4BjYCpMzrfVh2SBnUQTtys2lQ==} + '@typescript-eslint/utils@8.57.1': + resolution: {integrity: sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.57.0': - resolution: {integrity: sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg==} + '@typescript-eslint/visitor-keys@8.57.1': + resolution: {integrity: sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript/vfs@1.6.4': @@ -7649,8 +7650,8 @@ packages: resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} - esrap@2.2.3: - resolution: {integrity: sha512-8fOS+GIGCQZl/ZIlhl59htOlms6U8NvX6ZYgYHpRU/b6tVSh3uHkOHZikl3D4cMbYM0JlpBe+p/BkZEi8J9XIQ==} + esrap@2.2.4: + resolution: {integrity: sha512-suICpxAmZ9A8bzJjEl/+rLJiDKC0X4gYWUxT6URAWBLvlXmtbZd5ySMu/N2ZGEtMCAmflUDPSehrP9BQcsGcSg==} esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} @@ -7805,11 +7806,11 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - fast-xml-builder@1.1.2: - resolution: {integrity: sha512-NJAmiuVaJEjVa7TjLZKlYd7RqmzOC91EtPFXHvlTcqBVo50Qh7XV5IwvXi1c7NRz2Q/majGX9YLcwJtWgHjtkA==} + fast-xml-builder@1.1.4: + resolution: {integrity: sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==} - fast-xml-parser@5.5.3: - resolution: {integrity: sha512-Ymnuefk6VzAhT3SxLzVUw+nMio/wB1NGypHkgetwtXcK1JfryaHk4DWQFGVwQ9XgzyS5iRZ7C2ZGI4AMsdMZ6A==} + fast-xml-parser@5.5.6: + resolution: {integrity: sha512-3+fdZyBRVg29n4rXP0joHthhcHdPUHaIC16cuyyd1iLsuaO6Vea36MPrxgAzbZna8lhvZeRL8Bc9GP56/J9xEw==} hasBin: true fastq@1.19.1: @@ -7954,8 +7955,8 @@ packages: fraction.js@5.3.4: resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} - framer-motion@12.35.2: - resolution: {integrity: sha512-dhfuEMaNo0hc+AEqyHiIfiJRNb9U9UQutE9FoKm5pjf7CMitp9xPEF1iWZihR1q86LBmo6EJ7S8cN8QXEy49AA==} + framer-motion@12.38.0: + resolution: {integrity: sha512-rFYkY/pigbcswl1XQSb7q424kSTQ8q6eAC+YUsSKooHQYuLdzdHjrt6uxUC+PRAO++q5IS7+TamgIw1AphxR+g==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -9783,14 +9784,14 @@ packages: moment@2.30.1: resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} - motion-dom@12.35.2: - resolution: {integrity: sha512-pWXFMTwvGDbx1Fe9YL5HZebv2NhvGBzRtiNUv58aoK7+XrsuaydQ0JGRKK2r+bTKlwgSWwWxHbP5249Qr/BNpg==} + motion-dom@12.38.0: + resolution: {integrity: sha512-pdkHLD8QYRp8VfiNLb8xIBJis1byQ9gPT3Jnh2jqfFtAsWUA3dEepDlsWe/xMpO8McV+VdpKVcp+E+TGJEtOoA==} - motion-utils@12.29.2: - resolution: {integrity: sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A==} + motion-utils@12.36.0: + resolution: {integrity: sha512-eHWisygbiwVvf6PZ1vhaHCLamvkSbPIeAYxWUuL3a2PD/TROgE7FvfHWTIH4vMl798QLfMw15nRqIaRDXTlYRg==} - motion@12.35.2: - resolution: {integrity: sha512-8zCi1DkNyU6a/tgEHn/GnnXZDcaMpDHbDOGORY1Rg/6lcNMSOuvwDB3i4hMSOvxqMWArc/vrGaw/Xek1OP69/A==} + motion@12.38.0: + resolution: {integrity: sha512-uYfXzeHlgThchzwz5Te47dlv5JOUC7OB4rjJ/7XTUgtBZD8CchMN8qEJ4ZVsUmTyYA44zjV0fBwsiktRuFnn+w==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -12869,23 +12870,23 @@ snapshots: '@angular-eslint/bundled-angular-compiler@21.3.0': {} - '@angular-eslint/eslint-plugin-template@21.3.0(@angular-eslint/template-parser@21.3.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(@typescript-eslint/types@8.57.0)(@typescript-eslint/utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': + '@angular-eslint/eslint-plugin-template@21.3.0(@angular-eslint/template-parser@21.3.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(@typescript-eslint/types@8.57.1)(@typescript-eslint/utils@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': dependencies: '@angular-eslint/bundled-angular-compiler': 21.3.0 '@angular-eslint/template-parser': 21.3.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) - '@angular-eslint/utils': 21.3.0(@typescript-eslint/utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/utils': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + '@angular-eslint/utils': 21.3.0(@typescript-eslint/utils@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/utils': 8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) aria-query: 5.3.2 axobject-query: 4.1.0 eslint: 10.0.0(jiti@2.6.1) typescript: 5.9.2 - '@angular-eslint/eslint-plugin@21.3.0(@typescript-eslint/utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': + '@angular-eslint/eslint-plugin@21.3.0(@typescript-eslint/utils@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': dependencies: '@angular-eslint/bundled-angular-compiler': 21.3.0 - '@angular-eslint/utils': 21.3.0(@typescript-eslint/utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) - '@typescript-eslint/utils': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + '@angular-eslint/utils': 21.3.0(@typescript-eslint/utils@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) eslint: 10.0.0(jiti@2.6.1) ts-api-utils: 2.4.0(typescript@5.9.2) typescript: 5.9.2 @@ -12897,10 +12898,10 @@ snapshots: eslint-scope: 9.1.2 typescript: 5.9.2 - '@angular-eslint/utils@21.3.0(@typescript-eslint/utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': + '@angular-eslint/utils@21.3.0(@typescript-eslint/utils@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': dependencies: '@angular-eslint/bundled-angular-compiler': 21.3.0 - '@typescript-eslint/utils': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) eslint: 10.0.0(jiti@2.6.1) typescript: 5.9.2 @@ -13146,7 +13147,7 @@ snapshots: '@babel/generator@7.28.3': dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.28.5 '@babel/types': 7.28.4 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 @@ -13169,7 +13170,7 @@ snapshots: '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.28.4 - '@babel/types': 7.29.0 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color @@ -13237,7 +13238,7 @@ snapshots: '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.29.0 + '@babel/parser': 7.28.5 '@babel/types': 7.28.4 '@babel/traverse@7.28.4': @@ -13245,7 +13246,7 @@ snapshots: '@babel/code-frame': 7.27.1 '@babel/generator': 7.28.3 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.0 + '@babel/parser': 7.28.5 '@babel/template': 7.27.2 '@babel/types': 7.28.4 debug: 4.4.3(supports-color@8.1.1) @@ -13269,36 +13270,36 @@ snapshots: '@balena/dockerignore@1.0.2': {} - '@bufbuild/buf-darwin-arm64@1.66.1': + '@bufbuild/buf-darwin-arm64@1.65.0': optional: true - '@bufbuild/buf-darwin-x64@1.66.1': + '@bufbuild/buf-darwin-x64@1.65.0': optional: true - '@bufbuild/buf-linux-aarch64@1.66.1': + '@bufbuild/buf-linux-aarch64@1.65.0': optional: true - '@bufbuild/buf-linux-armv7@1.66.1': + '@bufbuild/buf-linux-armv7@1.65.0': optional: true - '@bufbuild/buf-linux-x64@1.66.1': + '@bufbuild/buf-linux-x64@1.65.0': optional: true - '@bufbuild/buf-win32-arm64@1.66.1': + '@bufbuild/buf-win32-arm64@1.65.0': optional: true - '@bufbuild/buf-win32-x64@1.66.1': + '@bufbuild/buf-win32-x64@1.65.0': optional: true - '@bufbuild/buf@1.66.1': + '@bufbuild/buf@1.65.0': optionalDependencies: - '@bufbuild/buf-darwin-arm64': 1.66.1 - '@bufbuild/buf-darwin-x64': 1.66.1 - '@bufbuild/buf-linux-aarch64': 1.66.1 - '@bufbuild/buf-linux-armv7': 1.66.1 - '@bufbuild/buf-linux-x64': 1.66.1 - '@bufbuild/buf-win32-arm64': 1.66.1 - '@bufbuild/buf-win32-x64': 1.66.1 + '@bufbuild/buf-darwin-arm64': 1.65.0 + '@bufbuild/buf-darwin-x64': 1.65.0 + '@bufbuild/buf-linux-aarch64': 1.65.0 + '@bufbuild/buf-linux-armv7': 1.65.0 + '@bufbuild/buf-linux-x64': 1.65.0 + '@bufbuild/buf-win32-arm64': 1.65.0 + '@bufbuild/buf-win32-x64': 1.65.0 '@bufbuild/protobuf@2.11.0': {} @@ -13310,9 +13311,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@bufbuild/protocompile@0.0.1(@bufbuild/buf@1.66.1)': + '@bufbuild/protocompile@0.0.1(@bufbuild/buf@1.65.0)': dependencies: - '@bufbuild/buf': 1.66.1 + '@bufbuild/buf': 1.65.0 '@bufbuild/protobuf': 2.11.0 fflate: 0.8.2 @@ -14147,7 +14148,7 @@ snapshots: '@fumari/json-schema-ts@0.0.2(json-schema-typed@8.0.2)': dependencies: - esrap: 2.2.3 + esrap: 2.2.4 optionalDependencies: json-schema-typed: 8.0.2 @@ -17347,7 +17348,7 @@ snapshots: '@scalar/helpers@0.2.15': {} - '@scalar/helpers@0.4.0': {} + '@scalar/helpers@0.4.1': {} '@scalar/icons@0.5.3(typescript@5.9.3)': dependencies: @@ -17369,9 +17370,9 @@ snapshots: pathe: 2.0.3 yaml: 2.8.1 - '@scalar/json-magic@0.12.2': + '@scalar/json-magic@0.12.3': dependencies: - '@scalar/helpers': 0.4.0 + '@scalar/helpers': 0.4.1 pathe: 2.0.3 yaml: 2.8.1 @@ -17939,16 +17940,16 @@ snapshots: '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.29.0 + '@babel/types': 7.28.5 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.29.0 - '@babel/types': 7.29.0 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.29.0 + '@babel/types': 7.28.5 '@types/bunyan@1.8.11': dependencies: @@ -18170,14 +18171,14 @@ snapshots: '@types/node': 24.10.9 optional: true - '@typescript-eslint/eslint-plugin@8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.57.1(@typescript-eslint/parser@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.57.0 - '@typescript-eslint/type-utils': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) - '@typescript-eslint/utils': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.57.0 + '@typescript-eslint/parser': 8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/type-utils': 8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.57.1 eslint: 10.0.0(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 @@ -18186,14 +18187,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.57.1(@typescript-eslint/parser@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.57.0 - '@typescript-eslint/type-utils': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.57.0 + '@typescript-eslint/parser': 8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/type-utils': 8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.1 eslint: 10.0.0(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 @@ -18202,66 +18203,66 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': + '@typescript-eslint/parser@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 8.57.0 - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.57.0 + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.57.1 debug: 4.4.3(supports-color@8.1.1) eslint: 10.0.0(jiti@2.6.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.57.0 - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.57.0 + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.1 debug: 4.4.3(supports-color@8.1.1) eslint: 10.0.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.57.0(typescript@5.9.2)': + '@typescript-eslint/project-service@8.57.1(typescript@5.9.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.2) - '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.2) + '@typescript-eslint/types': 8.57.1 debug: 4.4.3(supports-color@8.1.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.57.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.57.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) - '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.3) + '@typescript-eslint/types': 8.57.1 debug: 4.4.3(supports-color@8.1.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.57.0': + '@typescript-eslint/scope-manager@8.57.1': dependencies: - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/visitor-keys': 8.57.0 + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/visitor-keys': 8.57.1 - '@typescript-eslint/tsconfig-utils@8.57.0(typescript@5.9.2)': + '@typescript-eslint/tsconfig-utils@8.57.1(typescript@5.9.2)': dependencies: typescript: 5.9.2 - '@typescript-eslint/tsconfig-utils@8.57.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.57.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.2) + '@typescript-eslint/utils': 8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) debug: 4.4.3(supports-color@8.1.1) eslint: 10.0.0(jiti@2.6.1) ts-api-utils: 2.4.0(typescript@5.9.2) @@ -18269,11 +18270,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@8.1.1) eslint: 10.0.0(jiti@2.6.1) ts-api-utils: 2.4.0(typescript@5.9.3) @@ -18281,14 +18282,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.57.0': {} + '@typescript-eslint/types@8.56.0': {} - '@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.2)': + '@typescript-eslint/types@8.57.1': {} + + '@typescript-eslint/typescript-estree@8.57.1(typescript@5.9.2)': dependencies: - '@typescript-eslint/project-service': 8.57.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.2) - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/visitor-keys': 8.57.0 + '@typescript-eslint/project-service': 8.57.1(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.2) + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/visitor-keys': 8.57.1 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.4 semver: 7.7.4 @@ -18298,12 +18301,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.57.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.57.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/visitor-keys': 8.57.0 + '@typescript-eslint/project-service': 8.57.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.3) + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/visitor-keys': 8.57.1 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.4 semver: 7.7.4 @@ -18313,31 +18316,31 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': + '@typescript-eslint/utils@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.57.0 - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.2) eslint: 10.0.0(jiti@2.6.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.57.0 - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) eslint: 10.0.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.57.0': + '@typescript-eslint/visitor-keys@8.57.1': dependencies: - '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/types': 8.57.1 eslint-visitor-keys: 5.0.0 '@typescript/vfs@1.6.4(typescript@5.4.5)': @@ -20258,7 +20261,7 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -20281,22 +20284,22 @@ snapshots: - bluebird - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)): dependencies: debug: 3.2.7(supports-color@8.1.1) optionalDependencies: - '@typescript-eslint/parser': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/parser': 8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) eslint: 10.0.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@10.0.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)): dependencies: debug: 3.2.7(supports-color@8.1.1) optionalDependencies: - '@typescript-eslint/parser': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) eslint: 10.0.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@10.0.0(jiti@2.6.1)) @@ -20308,7 +20311,7 @@ snapshots: eslint: 10.0.0(jiti@2.6.1) globals: 15.15.0 - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -20319,7 +20322,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.0.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -20331,13 +20334,13 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) + '@typescript-eslint/parser': 8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -20348,7 +20351,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.0.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -20360,7 +20363,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.57.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.1(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -20475,9 +20478,10 @@ snapshots: dependencies: estraverse: 5.3.0 - esrap@2.2.3: + esrap@2.2.4: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + '@typescript-eslint/types': 8.56.0 esrecurse@4.3.0: dependencies: @@ -20688,13 +20692,13 @@ snapshots: fast-uri@3.1.0: {} - fast-xml-builder@1.1.2: + fast-xml-builder@1.1.4: dependencies: path-expression-matcher: 1.1.3 - fast-xml-parser@5.5.3: + fast-xml-parser@5.5.6: dependencies: - fast-xml-builder: 1.1.2 + fast-xml-builder: 1.1.4 path-expression-matcher: 1.1.3 strnum: 2.1.2 @@ -20847,10 +20851,10 @@ snapshots: fraction.js@5.3.4: {} - framer-motion@12.35.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + framer-motion@12.38.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - motion-dom: 12.35.2 - motion-utils: 12.29.2 + motion-dom: 12.38.0 + motion-utils: 12.36.0 tslib: 2.8.1 optionalDependencies: react: 19.2.4 @@ -20983,7 +20987,7 @@ snapshots: '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-select': 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.4) - '@scalar/json-magic': 0.12.2 + '@scalar/json-magic': 0.12.3 '@scalar/openapi-upgrader': 0.2.0 ajv: 8.18.0 class-variance-authority: 0.7.1 @@ -21026,7 +21030,7 @@ snapshots: class-variance-authority: 0.7.1 fumadocs-core: 16.6.15(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.14)(algoliasearch@5.37.0)(lucide-react@0.574.0(react@19.2.4))(next@16.1.6(@opentelemetry/api@1.9.0)(@playwright/test@1.58.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6) lucide-react: 0.577.0(react@19.2.4) - motion: 12.35.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + motion: 12.38.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) next-themes: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) @@ -21878,7 +21882,7 @@ snapshots: istanbul-lib-source-maps@3.0.6: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.1(supports-color@8.1.1) istanbul-lib-coverage: 2.0.5 make-dir: 2.1.0 rimraf: 2.7.1 @@ -22269,7 +22273,7 @@ snapshots: dependencies: chalk: 5.6.2 commander: 13.1.0 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@8.1.1) execa: 8.0.1 lilconfig: 3.1.3 listr2: 8.3.3 @@ -23140,15 +23144,15 @@ snapshots: moment@2.30.1: {} - motion-dom@12.35.2: + motion-dom@12.38.0: dependencies: - motion-utils: 12.29.2 + motion-utils: 12.36.0 - motion-utils@12.29.2: {} + motion-utils@12.36.0: {} - motion@12.35.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + motion@12.38.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - framer-motion: 12.35.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + framer-motion: 12.38.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) tslib: 2.8.1 optionalDependencies: react: 19.2.4 @@ -23621,7 +23625,7 @@ snapshots: openapi-sampler@1.7.2: dependencies: '@types/json-schema': 7.0.15 - fast-xml-parser: 5.5.3 + fast-xml-parser: 5.5.6 json-pointer: 0.6.2 opener@1.5.2: {} @@ -25572,7 +25576,7 @@ snapshots: cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.2 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@8.1.1) esbuild: 0.27.2 fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 @@ -25998,7 +26002,7 @@ snapshots: vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.1.11(@types/node@22.19.7)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.2)(sass@1.97.3)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)): dependencies: - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@8.1.1) globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) optionalDependencies: @@ -26100,7 +26104,7 @@ snapshots: '@vitest/spy': 2.1.9 '@vitest/utils': 2.1.9 chai: 5.3.3 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@8.1.1) expect-type: 1.2.2 magic-string: 0.30.21 pathe: 1.1.2 @@ -26136,7 +26140,7 @@ snapshots: '@vitest/spy': 2.1.9 '@vitest/utils': 2.1.9 chai: 5.3.3 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1(supports-color@8.1.1) expect-type: 1.2.2 magic-string: 0.30.21 pathe: 1.1.2