From 7ecfd8759b0f39bbedadcbc001418e0b393fe72a Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Mon, 4 Aug 2025 22:36:41 -0700 Subject: [PATCH] cleanup --- .devcontainer/base/Dockerfile | 16 - .devcontainer/base/devcontainer.json | 28 - .devcontainer/base/docker-compose.yml | 239 ------ .../login-integration-debug/devcontainer.json | 21 - .../docker-compose.yml | 9 - .../login-integration/devcontainer.json | 19 - .../turbo-lint-unit-debug/devcontainer.json | 21 - .../turbo-lint-unit-debug/docker-compose.yml | 6 - .../turbo-lint-unit/devcontainer.json | 18 - apps/console/package.json | 7 +- apps/login/Dockerfile | 48 +- apps/login/docker-bake-release.hcl | 3 - apps/login/docker-bake.hcl | 25 - apps/login/integration/.eslintrc.cjs | 10 - apps/login/integration/.gitignore | 2 - apps/login/integration/.npmrc | 1 - apps/login/integration/core-mock/Dockerfile | 15 - .../zitadel.settings.v2.SettingsService.json | 66 -- .../integration/core-mock/mocked-services.cfg | 7 - apps/login/integration/cypress.config.ts | 14 - apps/login/integration/fixtures/example.json | 5 - .../integration/integration/invite.cy.ts | 110 --- .../login/integration/integration/login.cy.ts | 172 ----- .../integration/register-idp.cy.ts | 21 - .../integration/integration/register.cy.ts | 73 -- .../integration/integration/verify.cy.ts | 95 --- apps/login/integration/support/e2e.ts | 29 - apps/login/integration/tsconfig.json | 8 - apps/login/package.json | 5 + apps/login/turbo.json | 22 - build/login/.dockerignore | 37 - build/login/Dockerfile | 45 -- build/zitadel/.dockerignore | 3 - build/zitadel/Dockerfile | 33 - build/zitadel/entrypoint.sh | 17 - nx.json | 31 +- package.json | 9 +- packages/zitadel-client/package.json | 3 +- pnpm-lock.yaml | 686 +++++++++++------- 39 files changed, 493 insertions(+), 1486 deletions(-) delete mode 100644 .devcontainer/base/Dockerfile delete mode 100644 .devcontainer/base/devcontainer.json delete mode 100644 .devcontainer/base/docker-compose.yml delete mode 100644 .devcontainer/login-integration-debug/devcontainer.json delete mode 100644 .devcontainer/login-integration-debug/docker-compose.yml delete mode 100644 .devcontainer/login-integration/devcontainer.json delete mode 100644 .devcontainer/turbo-lint-unit-debug/devcontainer.json delete mode 100644 .devcontainer/turbo-lint-unit-debug/docker-compose.yml delete mode 100644 .devcontainer/turbo-lint-unit/devcontainer.json delete mode 100644 apps/login/docker-bake-release.hcl delete mode 100644 apps/login/docker-bake.hcl delete mode 100644 apps/login/integration/.eslintrc.cjs delete mode 100644 apps/login/integration/.gitignore delete mode 100644 apps/login/integration/.npmrc delete mode 100644 apps/login/integration/core-mock/Dockerfile delete mode 100644 apps/login/integration/core-mock/initial-stubs/zitadel.settings.v2.SettingsService.json delete mode 100644 apps/login/integration/core-mock/mocked-services.cfg delete mode 100644 apps/login/integration/cypress.config.ts delete mode 100644 apps/login/integration/fixtures/example.json 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 delete mode 100644 apps/login/turbo.json delete mode 100644 build/login/.dockerignore delete mode 100644 build/login/Dockerfile delete mode 100644 build/zitadel/.dockerignore delete mode 100644 build/zitadel/Dockerfile delete mode 100755 build/zitadel/entrypoint.sh diff --git a/.devcontainer/base/Dockerfile b/.devcontainer/base/Dockerfile deleted file mode 100644 index 119594bc6f..0000000000 --- a/.devcontainer/base/Dockerfile +++ /dev/null @@ -1,16 +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 \ - 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@9.1.2 --activate diff --git a/.devcontainer/base/devcontainer.json b/.devcontainer/base/devcontainer.json deleted file mode 100644 index 187e012e67..0000000000 --- a/.devcontainer/base/devcontainer.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/devcontainers/spec/refs/heads/main/schemas/devContainer.schema.json", - "name": "devcontainer", - "dockerComposeFile": "docker-compose.yml", - "service": "devcontainer", - "workspaceFolder": "/workspaces", - "features": { - "ghcr.io/devcontainers/features/go:1": { - "version": "1.24" - }, - "ghcr.io/guiyomh/features/golangci-lint:0": {}, - "ghcr.io/jungaretti/features/make:1": {} - }, - "forwardPorts": [ - 3000, - 3001, - 4200, - 8080 - ], - "onCreateCommand": "pnpm install -g sass@1.64.1", - "customizations": { - "jetbrains": { - "settings": { - "com.intellij:app:HttpConfigurable.use_proxy_pac": true - } - } - } -} diff --git a/.devcontainer/base/docker-compose.yml b/.devcontainer/base/docker-compose.yml deleted file mode 100644 index 079ad69774..0000000000 --- a/.devcontainer/base/docker-compose.yml +++ /dev/null @@ -1,239 +0,0 @@ -x-build-cache: &build-cache - cache_from: - - type=gha - cache_to: - - type=gha,mode=max - -services: - - devcontainer: - container_name: devcontainer - build: - context: . - <<: *build-cache - volumes: - - ../../:/workspaces:cached - - /tmp/.X11-unix:/tmp/.X11-unix:cached - - home-dir:/home/node:delegated - 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" - - mock-zitadel: - container_name: mock-zitadel - build: - context: ../../apps/login/integration/core-mock - <<: *build-cache - ports: - - 22220:22220 - - 22222:22222 - - login-integration: - container_name: login-integration - build: - context: ../.. - dockerfile: build/login/Dockerfile - <<: *build-cache - image: "${LOGIN_TAG:-zitadel-login:local}" - env_file: ../../apps/login/.env.test - network_mode: service:devcontainer - environment: - NODE_ENV: test - PORT: 3001 - depends_on: - mock-zitadel: - condition: service_started - - zitadel: - image: "${ZITADEL_TAG:-ghcr.io/zitadel/zitadel:v4.0.0-rc.2}" - container_name: zitadel - 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 - <<: *build-cache - 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:v4.0.0-rc.2}" - 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} - <<: *build-cache - 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} - <<: *build-cache - 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} - # <<: *build-cache - # 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} - <<: *build-cache - 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} - # <<: *build-cache - # 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: - home-dir: diff --git a/.devcontainer/login-integration-debug/devcontainer.json b/.devcontainer/login-integration-debug/devcontainer.json deleted file mode 100644 index 525b04788e..0000000000 --- a/.devcontainer/login-integration-debug/devcontainer.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/devcontainers/spec/refs/heads/main/schemas/devContainer.schema.json", - "name": "login-integration-debug", - "dockerComposeFile": [ - "../base/docker-compose.yml", - "docker-compose.yml" - ], - "service": "login-integration-debug", - "runServices": ["login-integration-debug"], - "workspaceFolder": "/workspaces", - "forwardPorts": [3001], - "onCreateCommand": "pnpm install --recursive", - "postAttachCommand": "pnpm turbo daemon clean; pnpm turbo @zitadel/login#dev test:integration:login:debug", - "customizations": { - "jetbrains": { - "settings": { - "com.intellij:app:HttpConfigurable.use_proxy_pac": true - } - } - } -} diff --git a/.devcontainer/login-integration-debug/docker-compose.yml b/.devcontainer/login-integration-debug/docker-compose.yml deleted file mode 100644 index 11ce02ee7d..0000000000 --- a/.devcontainer/login-integration-debug/docker-compose.yml +++ /dev/null @@ -1,9 +0,0 @@ -services: - login-integration-debug: - extends: - file: ../base/docker-compose.yml - service: devcontainer - container_name: login-integration-debug - depends_on: - mock-zitadel: - condition: service_started diff --git a/.devcontainer/login-integration/devcontainer.json b/.devcontainer/login-integration/devcontainer.json deleted file mode 100644 index 1b7e02df43..0000000000 --- a/.devcontainer/login-integration/devcontainer.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/devcontainers/spec/refs/heads/main/schemas/devContainer.schema.json", - "name": "login-integration", - "dockerComposeFile": [ - "../base/docker-compose.yml" - ], - "service": "devcontainer", - "runServices": ["login-integration"], - "workspaceFolder": "/workspaces", - "forwardPorts": [3001], - "onCreateCommand": "pnpm install --frozen-lockfile --recursive && cd apps/login/packages/integration && pnpm cypress install && pnpm test:integration:login", - "customizations": { - "jetbrains": { - "settings": { - "com.intellij:app:HttpConfigurable.use_proxy_pac": true - } - } - } -} diff --git a/.devcontainer/turbo-lint-unit-debug/devcontainer.json b/.devcontainer/turbo-lint-unit-debug/devcontainer.json deleted file mode 100644 index 19446687a1..0000000000 --- a/.devcontainer/turbo-lint-unit-debug/devcontainer.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/devcontainers/spec/refs/heads/main/schemas/devContainer.schema.json", - "name": "turbo-lint-unit-debug", - "dockerComposeFile": [ - "../base/docker-compose.yml", - "docker-compose.yml" - ], - "service": "turbo-lint-unit-debug", - "runServices": ["turbo-lint-unit-debug"], - "workspaceFolder": "/workspaces", - "forwardPorts": [3001], - "onCreateCommand": "pnpm install --recursive", - "postAttachCommand": "pnpm turbo daemon clean; pnpm turbo watch lint test:unit", - "customizations": { - "jetbrains": { - "settings": { - "com.intellij:app:HttpConfigurable.use_proxy_pac": true - } - } - } -} diff --git a/.devcontainer/turbo-lint-unit-debug/docker-compose.yml b/.devcontainer/turbo-lint-unit-debug/docker-compose.yml deleted file mode 100644 index a19a0211e5..0000000000 --- a/.devcontainer/turbo-lint-unit-debug/docker-compose.yml +++ /dev/null @@ -1,6 +0,0 @@ -services: - turbo-lint-unit-debug: - extends: - file: ../base/docker-compose.yml - service: devcontainer - container_name: turbo-lint-unit-debug diff --git a/.devcontainer/turbo-lint-unit/devcontainer.json b/.devcontainer/turbo-lint-unit/devcontainer.json deleted file mode 100644 index f3c4f64355..0000000000 --- a/.devcontainer/turbo-lint-unit/devcontainer.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/devcontainers/spec/refs/heads/main/schemas/devContainer.schema.json", - "name": "turbo-lint-unit", - "dockerComposeFile": [ - "../base/docker-compose.yml" - ], - "service": "devcontainer", - "runServices": ["devcontainer"], - "workspaceFolder": "/workspaces", - "postStartCommand": "pnpm install --frozen-lockfile --recursive && pnpm turbo lint test:unit", - "customizations": { - "jetbrains": { - "settings": { - "com.intellij:app:HttpConfigurable.use_proxy_pac": true - } - } - } -} diff --git a/apps/console/package.json b/apps/console/package.json index b0cf97221f..8455785d27 100644 --- a/apps/console/package.json +++ b/apps/console/package.json @@ -15,6 +15,11 @@ }, "nx": { "targets": { + "release": { + "docker": { + "repositoryName": "zitadel/console" + } + }, "generate": { "outputs": [ "{projectRoot}/src/app/proto/generated/**" @@ -27,7 +32,7 @@ "dependsOn": [ "generate", "@zitadel/client:build" - ] + ] } } }, diff --git a/apps/login/Dockerfile b/apps/login/Dockerfile index 7e3d8668d2..5ee982ec1a 100644 --- a/apps/login/Dockerfile +++ b/apps/login/Dockerfile @@ -1,36 +1,24 @@ -FROM node:20-alpine AS base +# syntax=docker.io/docker/dockerfile:1 + +FROM node:22-alpine -FROM base AS build -ENV PNPM_HOME="/pnpm" -ENV PATH="$PNPM_HOME:$PATH" -RUN corepack enable && COREPACK_ENABLE_DOWNLOAD_PROMPT=0 corepack prepare pnpm@9.1.2 --activate && \ - apk update && apk add --no-cache && \ - rm -rf /var/cache/apk/* 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 --prod -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 --from=build /app/public /public +ENV NODE_ENV=production + +RUN addgroup --system --gid 1001 nodejs +RUN adduser --system --uid 1001 nextjs + +COPY public ./public +COPY .next/standalone ./ +COPY .next/static ./.next/static +RUN ls .next/static -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 ./scripts/ ./ -COPY --chown=nextjs:nodejs --from=build-out / ./ USER nextjs -ENV HOSTNAME="0.0.0.0" + +EXPOSE 3000 + ENV PORT=3000 -# TODO: Check healthy, not ready -HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ -CMD ["/bin/sh", "-c", "node ./healthcheck.js http://localhost:${PORT}/ui/v2/login/healthy"] -ENTRYPOINT ["./entrypoint.sh"] + +ENV HOSTNAME="0.0.0.0" +CMD ["node", "server.js"] \ No newline at end of file diff --git a/apps/login/docker-bake-release.hcl b/apps/login/docker-bake-release.hcl deleted file mode 100644 index 51e1c194f6..0000000000 --- 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 e09d1176e0..0000000000 --- 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/.eslintrc.cjs b/apps/login/integration/.eslintrc.cjs deleted file mode 100644 index 84711c5881..0000000000 --- a/apps/login/integration/.eslintrc.cjs +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - root: true, - // Use basic ESLint config since the login app has its own detailed config - extends: ["eslint:recommended"], - settings: { - next: { - rootDir: ["apps/*/"], - }, - }, -}; diff --git a/apps/login/integration/.gitignore b/apps/login/integration/.gitignore deleted file mode 100644 index 2ca81ab137..0000000000 --- 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 bc63bba6e3..0000000000 --- a/apps/login/integration/.npmrc +++ /dev/null @@ -1 +0,0 @@ -side-effects-cache=false diff --git a/apps/login/integration/core-mock/Dockerfile b/apps/login/integration/core-mock/Dockerfile deleted file mode 100644 index 447c73b534..0000000000 --- a/apps/login/integration/core-mock/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM bufbuild/buf:1.54.0 AS proto-files -RUN buf export https://github.com/envoyproxy/protoc-gen-validate.git --path validate --output /proto-files && \ - buf export https://github.com/grpc-ecosystem/grpc-gateway.git --path protoc-gen-openapiv2 --output /proto-files && \ - buf export https://github.com/googleapis/googleapis.git --path protos/zitadelgoogle/api/annotations.proto --path google/api/http.proto --path google/api/field_behavior.proto --output /proto-files && \ - buf export https://github.com/zitadel/zitadel.git --path ./proto/zitadel --output /proto-files - -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=proto-files /proto-files/ ./ - -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/core-mock/initial-stubs/zitadel.settings.v2.SettingsService.json b/apps/login/integration/core-mock/initial-stubs/zitadel.settings.v2.SettingsService.json deleted file mode 100644 index ebfaaadb85..0000000000 --- a/apps/login/integration/core-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/core-mock/mocked-services.cfg b/apps/login/integration/core-mock/mocked-services.cfg deleted file mode 100644 index 6a758ab8c1..0000000000 --- a/apps/login/integration/core-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/cypress.config.ts b/apps/login/integration/cypress.config.ts deleted file mode 100644 index a115cd9d1a..0000000000 --- a/apps/login/integration/cypress.config.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { defineConfig } from "cypress"; - -export default defineConfig({ - reporter: "list", - - e2e: { - baseUrl: process.env.LOGIN_BASE_URL || "http://localhost:3001/ui/v2/login", - specPattern: "integration/**/*.cy.{js,jsx,ts,tsx}", - supportFile: "support/e2e.{js,jsx,ts,tsx}", - setupNodeEvents(on, config) { - // implement node event listeners here - }, - }, -}); diff --git a/apps/login/integration/fixtures/example.json b/apps/login/integration/fixtures/example.json deleted file mode 100644 index 02e4254378..0000000000 --- a/apps/login/integration/fixtures/example.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "Using fixtures to represent data", - "email": "hello@cypress.io", - "body": "Fixtures are a great way to mock data for responses to routes" -} diff --git a/apps/login/integration/integration/invite.cy.ts b/apps/login/integration/integration/invite.cy.ts deleted file mode 100644 index a68ff96c36..0000000000 --- a/apps/login/integration/integration/invite.cy.ts +++ /dev/null @@ -1,110 +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@zitadel.com", - loginNames: ["john@zitadel.com"], - preferredLoginName: "john@zitadel.com", - human: { - userId: "221394658884845598", - state: 1, - username: "john@zitadel.com", - loginNames: ["john@zitadel.com"], - preferredLoginName: "john@zitadel.com", - profile: { - givenName: "John", - familyName: "Doe", - avatarUrl: "https://zitadel.com/avatar.jpg", - }, - email: { - email: "john@zitadel.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@zitadel.com", - }, - password: undefined, - webAuthN: undefined, - intent: undefined, - }, - metadata: {}, - }, - }, - }); - - stub("zitadel.settings.v2.SettingsService", "GetLoginSettings", { - data: { - settings: { - passkeysType: 1, - allowUsernamePassword: true, - }, - }, - }); - }); - - it.only("shows authenticators after successful invite verification", () => { - stub("zitadel.user.v2.UserService", "VerifyInviteCode"); - - cy.visit("/verify?userId=221394658884845598&code=abc&invite=true"); - cy.url({ timeout: 10_000 }).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.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 917d719cb1..0000000000 --- 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@zitadel.com", - }, - password: undefined, - webAuthN: undefined, - intent: undefined, - }, - metadata: {}, - }, - }, - }); - - stub("zitadel.settings.v2.SettingsService", "GetLoginSettings", { - data: { - settings: { - passkeysType: 1, - allowUsernamePassword: true, - }, - }, - }); - }); - describe("password login", () => { - beforeEach(() => { - stub("zitadel.user.v2.UserService", "ListUsers", { - data: { - details: { - totalResult: 1, - }, - result: [ - { - userId: "221394658884845598", - state: 1, - username: "john@zitadel.com", - loginNames: ["john@zitadel.com"], - preferredLoginName: "john@zitadel.com", - human: { - userId: "221394658884845598", - state: 1, - username: "john@zitadel.com", - loginNames: ["john@zitadel.com"], - preferredLoginName: "john@zitadel.com", - profile: { - givenName: "John", - familyName: "Doe", - avatarUrl: "https://zitadel.com/avatar.jpg", - }, - email: { - email: "john@zitadel.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%40zitadel.com&submit=true"); - cy.url({ timeout: 10_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 passwordless authentication if passkey is allowed in the login settings", () => { - // cy.visit("/loginname?loginName=john%40zitadel.com&submit=true"); - // cy.location("pathname", { timeout: 10_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@zitadel.com", - loginNames: ["john@zitadel.com"], - preferredLoginName: "john@zitadel.com", - human: { - userId: "221394658884845598", - state: 1, - username: "john@zitadel.com", - loginNames: ["john@zitadel.com"], - preferredLoginName: "john@zitadel.com", - profile: { - givenName: "John", - familyName: "Doe", - avatarUrl: "https://zitadel.com/avatar.jpg", - }, - email: { - email: "john@zitadel.com", - isVerified: true, - }, - }, - }, - ], - }, - }); - stub("zitadel.user.v2.UserService", "ListAuthenticationMethodTypes", { - data: { - authMethodTypes: [2], // 2 for passwordless authentication - }, - }); - }); - - it("should redirect a user with passwordless authentication to /passkey", () => { - cy.visit("/loginname?loginName=john%40zitadel.com&submit=true"); - cy.url({ timeout: 10_000 }).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 73a0c32e00..0000000000 --- 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", { timeout: 10_000 }).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 44c53647c1..0000000000 --- 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, - allowUsernamePassword: 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@zitadel.com", - }, - password: undefined, - webAuthN: undefined, - intent: undefined, - }, - metadata: {}, - }, - }, - }); - }); - - it("should redirect a user who selects passwordless 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@zitadel.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({ timeout: 10_000 }).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 db80cea720..0000000000 --- a/apps/login/integration/integration/verify.cy.ts +++ /dev/null @@ -1,95 +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@zitadel.com", - loginNames: ["john@zitadel.com"], - preferredLoginName: "john@zitadel.com", - human: { - userId: "221394658884845598", - state: 1, - username: "john@zitadel.com", - loginNames: ["john@zitadel.com"], - preferredLoginName: "john@zitadel.com", - profile: { - givenName: "John", - familyName: "Doe", - avatarUrl: "https://zitadel.com/avatar.jpg", - }, - email: { - email: "john@zitadel.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@zitadel.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.contains("Could not verify email", { timeout: 10_000 }); - }); -}); diff --git a/apps/login/integration/support/e2e.ts b/apps/login/integration/support/e2e.ts deleted file mode 100644 index 1ac0eb3948..0000000000 --- a/apps/login/integration/support/e2e.ts +++ /dev/null @@ -1,29 +0,0 @@ -const url = Cypress.env("CORE_MOCK_STUBS_URL") || "http://mock-zitadel:22220/v1/stubs"; - -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 18edb199ac..0000000000 --- a/apps/login/integration/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "lib": ["es5", "dom"], - "types": ["cypress", "node"] - }, - "include": ["**/*.ts"] -} diff --git a/apps/login/package.json b/apps/login/package.json index d6967c417b..de0de03daa 100644 --- a/apps/login/package.json +++ b/apps/login/package.json @@ -22,6 +22,11 @@ "test:acceptance:setup:dev": "cd ../.. && make login_test_acceptance_setup_dev" }, "nx": { + "release": { + "docker": { + "repositoryName": "zitadel/login" + } + }, "targets": { "build": { "outputs": [ diff --git a/apps/login/turbo.json b/apps/login/turbo.json deleted file mode 100644 index b7b4e5fd27..0000000000 --- a/apps/login/turbo.json +++ /dev/null @@ -1,22 +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": { - "dependsOn": ["@zitadel/client#build"] - }, - "test": { - "dependsOn": ["@zitadel/client#build"] - }, - "test:unit": { - "dependsOn": ["@zitadel/client#build"] - } - } -} diff --git a/build/login/.dockerignore b/build/login/.dockerignore deleted file mode 100644 index 2070cf5982..0000000000 --- a/build/login/.dockerignore +++ /dev/null @@ -1,37 +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.js -!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/src -!packages/zitadel-client/tsconfig.json -!packages/zitadel-client/tsup.config.ts -!packages/zitadel-client/turbo.json - -!proto - -*.md -*.png -node_modules -*.test.ts -*.test.tsx diff --git a/build/login/Dockerfile b/build/login/Dockerfile deleted file mode 100644 index ad9163285f..0000000000 --- a/build/login/Dockerfile +++ /dev/null @@ -1,45 +0,0 @@ -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@9.1.2 --activate && \ - apk update && apk add --no-cache && \ - rm -rf /var/cache/apk/* -WORKDIR /app -COPY pnpm-lock.yaml pnpm-workspace.yaml ./ -RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store pnpm fetch --frozen-lockfile \ - --filter @zitadel/login \ - --filter @zitadel/client \ - --filter @zitadel/proto -COPY package.json ./ -COPY apps/login/package.json ./apps/login/package.json -COPY packages/zitadel-proto/package.json ./packages/zitadel-proto/package.json -COPY packages/zitadel-client/package.json ./packages/zitadel-client/package.json -RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store pnpm install --frozen-lockfile \ - --filter @zitadel/login \ - --filter @zitadel/client \ - --filter @zitadel/proto -COPY . . -RUN pnpm turbo build:login:standalone - -FROM scratch AS build-out -COPY --from=build /app/apps/login/.next/standalone / -COPY --from=build /app/apps/login/.next/static /.next/static -COPY --from=build /app/apps/login/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 apps/login/scripts ./ -COPY --chown=nextjs:nodejs --from=build-out . . -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 ./healthcheck.js http://localhost:${PORT}/ui/v2/login/healthy"] -ENTRYPOINT ["./entrypoint.sh"] diff --git a/build/zitadel/.dockerignore b/build/zitadel/.dockerignore deleted file mode 100644 index 83c401b28a..0000000000 --- a/build/zitadel/.dockerignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!build/zitadel/entrypoint.sh -!zitadel diff --git a/build/zitadel/Dockerfile b/build/zitadel/Dockerfile deleted file mode 100644 index 4abc1f388c..0000000000 --- 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/entrypoint.sh b/build/zitadel/entrypoint.sh deleted file mode 100755 index 465596daf9..0000000000 --- a/build/zitadel/entrypoint.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -case $@ in - sh*) - ${@:3} - ;; - bash*) - ${@:5} - ;; - *) - if [[ ! -z "$@" ]] - then - ZITADEL_ARGS="$@" - fi - /app/zitadel ${ZITADEL_ARGS} - ;; -esac diff --git a/nx.json b/nx.json index ba5aca2ca4..4e79c79e65 100644 --- a/nx.json +++ b/nx.json @@ -1,5 +1,25 @@ { "$schema": "./node_modules/nx/schemas/nx-schema.json", + "release": { + "releaseTagPattern": "release/{projectName}/{version}", + "groups": { + "test": { + "projects": ["@zitadel/login", "@zitadel/console"], + "projectsRelationship": "fixed", + "docker": { + "skipVersionActions": true, + "registryUrl": "ghcr.io", + "groupPreVersionCommand": "echo BEFORE VERSIONING" + }, + "changelog": { + "projectChangelogs": true + } + } + }, + "version": { + "conventionalCommits": true + } + }, "namedInputs": { "proto": [ "{workspaceRoot}/proto/**" @@ -93,5 +113,14 @@ "cache": false } }, - "nxCloudId": "688a9021d48dce0efe0f119f" + "nxCloudId": "688a9021d48dce0efe0f119f", + "plugins": [ + { + "plugin": "@nx/docker", + "options": { + "buildTarget": "docker:build", + "runTarget": "docker:run" + } + } + ] } diff --git a/package.json b/package.json index 1306938e54..d65d7a03e7 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "scripts": { "build": "make compile" }, -"nx": { + "nx": { "targets": { "build": { "outputs": [ @@ -13,7 +13,7 @@ ], "dependsOn": [ "@zitadel/console:build" - ] + ] } } }, @@ -25,10 +25,11 @@ } }, "devDependencies": { + "@bufbuild/buf": "^1.55.1", "@changesets/cli": "^2.29.5", "@devcontainers/cli": "^0.80.0", - "nx":"21.3.10", - "@bufbuild/buf": "^1.55.1", + "@nx/docker": "21.4.0-beta.5", + "nx": "21.4.0-beta.5", "sass": "1.64.1" } } diff --git a/packages/zitadel-client/package.json b/packages/zitadel-client/package.json index ab85642d93..2e9a9282e7 100644 --- a/packages/zitadel-client/package.json +++ b/packages/zitadel-client/package.json @@ -102,6 +102,7 @@ "knip": "^5.61.3", "tsup": "^8.4.0", "typescript": "^5.8.3", - "vitest": "^2.0.0" + "vitest": "^2.0.0", + "@nx/js": "^21.3.11" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 49d348e7e9..07f3938eb5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,9 +22,12 @@ importers: '@devcontainers/cli': specifier: ^0.80.0 version: 0.80.0 + '@nx/docker': + specifier: 21.4.0-beta.5 + version: 21.4.0-beta.5(nx@21.4.0-beta.5(@swc/core@1.13.3)) nx: - specifier: 21.3.10 - version: 21.3.10(@swc/core@1.13.3) + specifier: 21.4.0-beta.5 + version: 21.4.0-beta.5(@swc/core@1.13.3) sass: specifier: 1.64.1 version: 1.64.1 @@ -615,6 +618,9 @@ importers: '@bufbuild/protocompile': specifier: ^0.0.1 version: 0.0.1(@bufbuild/buf@1.55.1) + '@nx/js': + specifier: ^21.3.11 + version: 21.3.11(@babel/traverse@7.28.0)(@swc/core@1.13.3)(nx@21.3.11(@swc/core@1.13.3)) '@types/node': specifier: ^24.0.14 version: 24.1.0 @@ -1189,6 +1195,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-decorators@7.28.0': + resolution: {integrity: sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} @@ -1218,6 +1230,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-decorators@7.27.1': + resolution: {integrity: sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==} + 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: @@ -3515,14 +3533,40 @@ packages: peerDependencies: nx: '>= 15 <= 17' + '@nx/devkit@21.3.11': + resolution: {integrity: sha512-JOV8TAa9K5+ZwTA/EUi0g5qcKEg5vmi0AyOUsrNUHlv3BgQnwZtPLDDTPPZ+ezq24o6YzgwueZWj3CLEdMHEDg==} + peerDependencies: + nx: 21.3.11 + + '@nx/devkit@21.4.0-beta.5': + resolution: {integrity: sha512-IdyB5TPhATLdwqbQHAyM5ixEVJ+4Ik8RV1ImMjJeVBnE8tl8dGCk3w2ACrV08fJGTEEZaKWX4JJg3YdwC9QVMw==} + peerDependencies: + nx: 21.4.0-beta.5 + + '@nx/docker@21.4.0-beta.5': + resolution: {integrity: sha512-ejJkujCq9qA8V4kyJB0usmhQv/d16w9x4Wn9CG/cO2wXi8baVZRWKGjNOD2Y8TJsZDp2eYcbZb5uAVhnRCQnaA==} + + '@nx/js@21.3.11': + resolution: {integrity: sha512-aN8g1TP3FMN6MFLvMrZNaoqSwAkBFH1PunKQV17w4nlPkimWICaCP2DhY5W3VoOpjQBbhQoqrRt4mVfgnEpyvA==} + peerDependencies: + verdaccio: ^6.0.5 + peerDependenciesMeta: + verdaccio: + optional: true + '@nx/nx-darwin-arm64@16.5.1': resolution: {integrity: sha512-q98TFI4B/9N9PmKUr1jcbtD4yAFs1HfYd9jUXXTQOlfO9SbDjnrYJgZ4Fp9rMNfrBhgIQ4x1qx0AukZccKmH9Q==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@nx/nx-darwin-arm64@21.3.10': - resolution: {integrity: sha512-umYmO5xE9e7BtVzOYWurjeZEpqO/KnFDl+sLf58EzKOBf+tWDp1PVTpmuYhPxjlH6WkVaYCTA62L3SkIahKZ+w==} + '@nx/nx-darwin-arm64@21.3.11': + resolution: {integrity: sha512-qXZrW6kfsfGG9n4cWugR2v8ys7P1SsbQuFahlbNSTd7g+ZxozaOnc7tyxW9XuY84KQ35HwP/QSu1E13fK5CXwQ==} + cpu: [arm64] + os: [darwin] + + '@nx/nx-darwin-arm64@21.4.0-beta.5': + resolution: {integrity: sha512-+kAvJT+tzbQXFfEL4opP7QxRKY047nBa8E6/flJT74bAj5L1xpipOk3RlxbZVLZfi1NzsyMg7uKi6PM3mO/Euw==} cpu: [arm64] os: [darwin] @@ -3532,8 +3576,13 @@ packages: cpu: [x64] os: [darwin] - '@nx/nx-darwin-x64@21.3.10': - resolution: {integrity: sha512-f2vl8ba5IyG/3fhvrUARg/xKviONhg5FHmev5krSIRYdFXsCNgI8qX251/Wxr7zjABnARdwfEZcWMTY4QRXovA==} + '@nx/nx-darwin-x64@21.3.11': + resolution: {integrity: sha512-6NJEIGRITpFZYptJtr/wdnVuidAS/wONMMSwX5rgAqh5A9teI0vxZVOgG6n5f6NQyqEDvZ9ytcIvLsQWA4kJFg==} + cpu: [x64] + os: [darwin] + + '@nx/nx-darwin-x64@21.4.0-beta.5': + resolution: {integrity: sha512-PtUmZIX9QvwLfmptu45WlqqntvVLoSBn+WgHZT6B+ARLT6GyCCq8CgvRGq8b7Chx5VPGgafgkw8SU1QRfV2Tvw==} cpu: [x64] os: [darwin] @@ -3543,8 +3592,13 @@ packages: cpu: [x64] os: [freebsd] - '@nx/nx-freebsd-x64@21.3.10': - resolution: {integrity: sha512-Tl0haFCRj+1Updj+KZYOxdhNlrp0CUiGIGo0n3S4ruuwtqSmSdwPb7ZGIvIHSQloX2k7CP/oRQw68HoUmsnIyA==} + '@nx/nx-freebsd-x64@21.3.11': + resolution: {integrity: sha512-9VZOM9mutzuZCUgijHXrIl3NgKt2CWuH/awLqDS8ijhLs6WfI5TYTa+mFwx90dfZZ4y/jy6XWXa2Ee3OShf7Hg==} + cpu: [x64] + os: [freebsd] + + '@nx/nx-freebsd-x64@21.4.0-beta.5': + resolution: {integrity: sha512-Oq0VIXU34RfmUtyzyCqmo0/KxZx2Oy+gox509b4kW9Cvsb1m4CvMLkxAkyU0XXYnbWoh/2JcSvKYVGgvBnVlxA==} cpu: [x64] os: [freebsd] @@ -3554,8 +3608,13 @@ packages: cpu: [arm] os: [linux] - '@nx/nx-linux-arm-gnueabihf@21.3.10': - resolution: {integrity: sha512-3siCCKhlaBp3a56KbkPyixoW7m/H1Cx6vfMxBHro3qqG8m7NYQ5Iy/Ih8G1ghAhr1KoKeXMPAoEglZVbFXDypQ==} + '@nx/nx-linux-arm-gnueabihf@21.3.11': + resolution: {integrity: sha512-a05tAySKDEWt0TGoSnWp/l5+HL/CDJQkHfI9pXho85oDSkVRzhOInAn1EeZB/F+Q3PnJFsMHMhbuu2/nm3uYJA==} + cpu: [arm] + os: [linux] + + '@nx/nx-linux-arm-gnueabihf@21.4.0-beta.5': + resolution: {integrity: sha512-Sp/yfObwibKDVrIJBYxZeghvI46d9n6sD+/oOb1VDHi76D6kHEC4Y6Aj2NtnbB6EGaN/F3StLpXXHgEyZ4L0uw==} cpu: [arm] os: [linux] @@ -3565,8 +3624,13 @@ packages: cpu: [arm64] os: [linux] - '@nx/nx-linux-arm64-gnu@21.3.10': - resolution: {integrity: sha512-9Phr9FBVDr86QQ32Qxf7GyfBpgPfYDf0TWkWZe/EhR3UijoCM3a2WMyoLWxhl+oTkjxQVBP7adqToh7Da0hyuQ==} + '@nx/nx-linux-arm64-gnu@21.3.11': + resolution: {integrity: sha512-MPeivf0ptNpzQYvww6zHIqVbE5dTT2isl/WqzGyy7NgSeYDpFXmouDCQaeKxo5WytMVRCvCw/NnWTQuCK6TjnA==} + cpu: [arm64] + os: [linux] + + '@nx/nx-linux-arm64-gnu@21.4.0-beta.5': + resolution: {integrity: sha512-rbgzMAqirBFQPZvynnRtz8ijXV3CsNNArKINmYmaBqBMFs2yUd9MPIZo/Zao/VxuXZw+RCLWJa4DICrbIVJl4A==} cpu: [arm64] os: [linux] @@ -3576,8 +3640,13 @@ packages: cpu: [arm64] os: [linux] - '@nx/nx-linux-arm64-musl@21.3.10': - resolution: {integrity: sha512-TxgwIXOFrCbBz3xlP+aCil+KaHH6pRLA+JW4RD0ZMes/iP+99R+/+gKznw7CEkpXkzX194gGTe2NlM45129uEg==} + '@nx/nx-linux-arm64-musl@21.3.11': + resolution: {integrity: sha512-/hJpc4VJsbxDEreXt5Ka9HJ3TBEHgIa9y/i+H9MmWOeapCdH1Edhx58Heuv9OaX7kK8Y8q0cSicv0dJCghiTjA==} + cpu: [arm64] + os: [linux] + + '@nx/nx-linux-arm64-musl@21.4.0-beta.5': + resolution: {integrity: sha512-Z0DchinkgOi4jtmH0fCJWm1AfDvvu2ZgnlJT50HmZxjjtx3NWE9LAastJ0LWVWJXP9V0uid/4dObcljVMkhJcA==} cpu: [arm64] os: [linux] @@ -3587,8 +3656,13 @@ packages: cpu: [x64] os: [linux] - '@nx/nx-linux-x64-gnu@21.3.10': - resolution: {integrity: sha512-UNIEt/i4OpGvjS8ds/m2lv/4C6SmaWTzIfok59TL/8BG0ab5x/lADdKd6OBbvhmDiBdz+As3uLiCN03uRsz95Q==} + '@nx/nx-linux-x64-gnu@21.3.11': + resolution: {integrity: sha512-pTBHuloqTxpTHa/fdKjHkFFsfW16mEcTp37HDtoQpjPfcd9nO8CYO8OClaewr9khNqCnSbCLfSoIg/alnb7BWw==} + cpu: [x64] + os: [linux] + + '@nx/nx-linux-x64-gnu@21.4.0-beta.5': + resolution: {integrity: sha512-cOl+0ko1JOXdl0cr7hZR0rFipnc2q33iTuslr5+tuWTuhDR5CdwMyGhVi+rb8s3O+X6vutvhW404vXvUWcfOxw==} cpu: [x64] os: [linux] @@ -3598,8 +3672,13 @@ packages: cpu: [x64] os: [linux] - '@nx/nx-linux-x64-musl@21.3.10': - resolution: {integrity: sha512-/ETUG3auZjQmWliaHQQFr/cqb493HGShDrcJYa0Zd67TZeUHsYY5lc71u6pA7d+aP/r51RToamxpDK0cGmqINQ==} + '@nx/nx-linux-x64-musl@21.3.11': + resolution: {integrity: sha512-OhFjURB68rd6xld8t8fiNpopF2E7v+8/jfbpsku9c0gdV2UhzoxCeZwooe7qhQjCcjVO8JNOs4dAf7qs1VtpMw==} + cpu: [x64] + os: [linux] + + '@nx/nx-linux-x64-musl@21.4.0-beta.5': + resolution: {integrity: sha512-J+ypXbAPNdIRNVbVLXLHm0xAzYV9KT+XAs5dVXHeBwKScgRubvP8tsMSWlYfJzABTqnisSVKgJhQ6Cn3W3HlBQ==} cpu: [x64] os: [linux] @@ -3609,8 +3688,13 @@ packages: cpu: [arm64] os: [win32] - '@nx/nx-win32-arm64-msvc@21.3.10': - resolution: {integrity: sha512-xBOzmfjB695KkFZ3a2IblN/Vb6I9LlDbIV2I1X/Ks8jdK0q1Fh+mqZWDfOUuBr5oKcUPD5pZiH/vpr5mBssLig==} + '@nx/nx-win32-arm64-msvc@21.3.11': + resolution: {integrity: sha512-pGE2Td13oEj7aeogwCL+2fjmpabQVSduKfGOTlt4YoMlM0w0bXYSWqwiGBMKbMA50qkhnVapwwkuWF38PgCIxg==} + cpu: [arm64] + os: [win32] + + '@nx/nx-win32-arm64-msvc@21.4.0-beta.5': + resolution: {integrity: sha512-b67v0hpgSrFbi5gXzb+jQpZTC1xhtYIhjR5oaHze71Wgnbpg+P97ntTiXRXlJm4rPHxo7V+WdYNtk51MBI+wZA==} cpu: [arm64] os: [win32] @@ -3620,11 +3704,19 @@ packages: cpu: [x64] os: [win32] - '@nx/nx-win32-x64-msvc@21.3.10': - resolution: {integrity: sha512-TZPwjF1adI8FCJp7MmgXNtnwuW1AOBSiPEHLz2RM8cJKBc7rlmXw/MWhnYhz2lkZQ+vpndoLGtpinYo5cp/NQA==} + '@nx/nx-win32-x64-msvc@21.3.11': + resolution: {integrity: sha512-KJqLL/Zyx96hs+7pKbo/fsU7ZTFSLeZLnYQu05o6fvJJ5I1+p85t212/7vkbKKWJncyMospQdzLr3zLG3A/u8A==} cpu: [x64] os: [win32] + '@nx/nx-win32-x64-msvc@21.4.0-beta.5': + resolution: {integrity: sha512-sdRpnnT6efzfC5TVHWTSZ6tdIjblDq3953flB9DUlkWmBjCMasGHIOPmbaNPcAfEmu+1mCvbNC88vt74NrPGtw==} + cpu: [x64] + os: [win32] + + '@nx/workspace@21.3.11': + resolution: {integrity: sha512-DD2iu9Ip/faNQ5MXZk+UbbBxGofYKjzHsXKRvMNQ/OAVzP/u9z2CPXEmRKlRAEQoy1lInmyopwfEUWwK1v4x0g==} + '@otplib/core@12.0.1': resolution: {integrity: sha512-4sGntwbA/AC+SbPhbsziRiD+jNDdIzsZ3JUyfZwjtKyc/wufl1pnSIaG4Uqx8ymPagujub0o92kgBnB89cuAMA==} @@ -5384,6 +5476,9 @@ packages: '@types/opentype.js@1.3.8': resolution: {integrity: sha512-H6qeTp03jrknklSn4bpT1/9+1xCAEIU2CnjcWPkicJy8A1SKuthanbvoHYMiv79/2W3Xn1XE4gfSJFzt2U3JSw==} + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + '@types/parse5@6.0.3': resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} @@ -6305,6 +6400,11 @@ packages: '@babel/core': ^7.12.0 webpack: '>=5' + babel-plugin-const-enum@1.2.0: + resolution: {integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + babel-plugin-dynamic-import-node@2.3.3: resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} @@ -6312,6 +6412,10 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + babel-plugin-polyfill-corejs2@0.4.14: resolution: {integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==} peerDependencies: @@ -6337,6 +6441,15 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-transform-typescript-metadata@0.3.2: + resolution: {integrity: sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==} + peerDependencies: + '@babel/core': ^7 + '@babel/traverse': ^7 + peerDependenciesMeta: + '@babel/traverse': + optional: true + bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -6766,6 +6879,10 @@ packages: resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} engines: {node: '>=0.1.90'} + columnify@1.6.0: + resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==} + engines: {node: '>=8.0.0'} + combine-promises@1.2.0: resolution: {integrity: sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==} engines: {node: '>=10'} @@ -6932,6 +7049,10 @@ packages: cose-base@2.2.0: resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + cosmiconfig@8.3.6: resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} @@ -8723,6 +8844,10 @@ packages: resolution: {integrity: sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} + hpack.js@2.1.6: resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} @@ -10738,6 +10863,10 @@ packages: resolution: {integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + npm-package-arg@11.0.1: + resolution: {integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==} + engines: {node: ^16.14.0 || >=18.0.0} + npm-packlist@7.0.4: resolution: {integrity: sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -10794,8 +10923,20 @@ packages: '@swc/core': optional: true - nx@21.3.10: - resolution: {integrity: sha512-am85Vntk1UQVzGjFltNzrb9b7Lhz8nPDRXkC0BJXBoG6w0T9Qf8k/3bwbo8nzZgREdVIUFO5dvOZ6gWUZw/UFA==} + nx@21.3.11: + resolution: {integrity: sha512-nj2snZ3mHZnbHcoB3NUdxbch9L1sQKV1XccLs1B79fmI/N5oOgWgctm/bWoZH2UH5b4A8ZLAMTsC6YnSJGbcaw==} + hasBin: true + peerDependencies: + '@swc-node/register': ^1.8.0 + '@swc/core': ^1.3.85 + peerDependenciesMeta: + '@swc-node/register': + optional: true + '@swc/core': + optional: true + + nx@21.4.0-beta.5: + resolution: {integrity: sha512-QXrCEx0qQ/Zlykom81Nhq94tT3OB54UrxdBZk2sOU8gJWT0BVYOKEm7yZN641SeN8dU9+jqNixTwccVo+BuHTA==} hasBin: true peerDependencies: '@swc-node/register': ^1.8.0 @@ -11219,6 +11360,10 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + picomatch@4.0.3: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} @@ -12935,6 +13080,9 @@ packages: peerDependencies: webpack: ^5.72.1 + source-map-support@0.5.19: + resolution: {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==} + source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} @@ -15175,17 +15323,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@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.22.9)': dependencies: '@babel/core': 7.22.9 @@ -15197,17 +15334,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@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.22.9)': dependencies: '@babel/core': 7.22.9 @@ -15412,6 +15538,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-decorators': 7.27.1(@babel/core@7.28.0) + transitivePeerDependencies: + - supports-color + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.9)': dependencies: '@babel/core': 7.22.9 @@ -15426,38 +15561,22 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.22.9) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.9)': dependencies: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.9)': dependencies: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.9)': dependencies: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.0)': + '@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 @@ -15477,11 +15596,6 @@ snapshots: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.22.9)': dependencies: '@babel/core': 7.22.9 @@ -15507,21 +15621,11 @@ snapshots: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.9)': dependencies: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 @@ -15532,81 +15636,41 @@ snapshots: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.9)': dependencies: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.9)': dependencies: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.9)': dependencies: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.9)': dependencies: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.9)': dependencies: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.9)': dependencies: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.9)': dependencies: '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 @@ -15661,15 +15725,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@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.0) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 @@ -16444,92 +16499,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-env@7.22.9(@babel/core@7.28.0)': - dependencies: - '@babel/compat-data': 7.28.0 - '@babel/core': 7.28.0 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.0) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.0) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.0) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.0) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.28.0) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-block-scoping': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-classes': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-object-rest-spread': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.0) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-regenerator': 7.28.1(@babel/core@7.28.0) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.0) - '@babel/preset-modules': 0.1.6(@babel/core@7.28.0) - '@babel/types': 7.28.2 - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.0) - babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.28.0) - babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.28.0) - core-js-compat: 3.44.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/preset-env@7.28.0(@babel/core@7.28.0)': dependencies: '@babel/compat-data': 7.28.0 @@ -16615,15 +16584,6 @@ snapshots: '@babel/types': 7.28.2 esutils: 2.0.3 - '@babel/preset-modules@0.1.6(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.28.0) - '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.0) - '@babel/types': 7.28.2 - esutils: 2.0.3 - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 @@ -19543,66 +19503,182 @@ snapshots: tmp: 0.2.3 tslib: 2.8.1 + '@nx/devkit@21.3.11(nx@21.3.11(@swc/core@1.13.3))': + dependencies: + ejs: 3.1.10 + enquirer: 2.3.6 + ignore: 5.3.2 + minimatch: 9.0.3 + nx: 21.3.11(@swc/core@1.13.3) + semver: 7.7.2 + tmp: 0.2.3 + tslib: 2.8.1 + yargs-parser: 21.1.1 + + '@nx/devkit@21.4.0-beta.5(nx@21.4.0-beta.5(@swc/core@1.13.3))': + dependencies: + ejs: 3.1.10 + enquirer: 2.3.6 + ignore: 5.3.2 + minimatch: 9.0.3 + nx: 21.4.0-beta.5(@swc/core@1.13.3) + semver: 7.7.2 + tmp: 0.2.3 + tslib: 2.8.1 + yargs-parser: 21.1.1 + + '@nx/docker@21.4.0-beta.5(nx@21.4.0-beta.5(@swc/core@1.13.3))': + dependencies: + '@nx/devkit': 21.4.0-beta.5(nx@21.4.0-beta.5(@swc/core@1.13.3)) + enquirer: 2.3.6 + tslib: 2.8.1 + transitivePeerDependencies: + - nx + + '@nx/js@21.3.11(@babel/traverse@7.28.0)(@swc/core@1.13.3)(nx@21.3.11(@swc/core@1.13.3))': + dependencies: + '@babel/core': 7.28.0 + '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.0) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-runtime': 7.28.0(@babel/core@7.28.0) + '@babel/preset-env': 7.28.0(@babel/core@7.28.0) + '@babel/preset-typescript': 7.27.1(@babel/core@7.28.0) + '@babel/runtime': 7.28.2 + '@nx/devkit': 21.3.11(nx@21.3.11(@swc/core@1.13.3)) + '@nx/workspace': 21.3.11(@swc/core@1.13.3) + '@zkochan/js-yaml': 0.0.7 + babel-plugin-const-enum: 1.2.0(@babel/core@7.28.0) + babel-plugin-macros: 3.1.0 + babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.28.0)(@babel/traverse@7.28.0) + chalk: 4.1.2 + columnify: 1.6.0 + detect-port: 1.6.1 + enquirer: 2.3.6 + ignore: 5.3.2 + js-tokens: 4.0.0 + jsonc-parser: 3.2.0 + npm-package-arg: 11.0.1 + npm-run-path: 4.0.1 + ora: 5.3.0 + picocolors: 1.1.1 + picomatch: 4.0.2 + semver: 7.7.2 + source-map-support: 0.5.19 + tinyglobby: 0.2.14 + tslib: 2.8.1 + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - debug + - nx + - supports-color + '@nx/nx-darwin-arm64@16.5.1': optional: true - '@nx/nx-darwin-arm64@21.3.10': + '@nx/nx-darwin-arm64@21.3.11': + optional: true + + '@nx/nx-darwin-arm64@21.4.0-beta.5': optional: true '@nx/nx-darwin-x64@16.5.1': optional: true - '@nx/nx-darwin-x64@21.3.10': + '@nx/nx-darwin-x64@21.3.11': + optional: true + + '@nx/nx-darwin-x64@21.4.0-beta.5': optional: true '@nx/nx-freebsd-x64@16.5.1': optional: true - '@nx/nx-freebsd-x64@21.3.10': + '@nx/nx-freebsd-x64@21.3.11': + optional: true + + '@nx/nx-freebsd-x64@21.4.0-beta.5': optional: true '@nx/nx-linux-arm-gnueabihf@16.5.1': optional: true - '@nx/nx-linux-arm-gnueabihf@21.3.10': + '@nx/nx-linux-arm-gnueabihf@21.3.11': + optional: true + + '@nx/nx-linux-arm-gnueabihf@21.4.0-beta.5': optional: true '@nx/nx-linux-arm64-gnu@16.5.1': optional: true - '@nx/nx-linux-arm64-gnu@21.3.10': + '@nx/nx-linux-arm64-gnu@21.3.11': + optional: true + + '@nx/nx-linux-arm64-gnu@21.4.0-beta.5': optional: true '@nx/nx-linux-arm64-musl@16.5.1': optional: true - '@nx/nx-linux-arm64-musl@21.3.10': + '@nx/nx-linux-arm64-musl@21.3.11': + optional: true + + '@nx/nx-linux-arm64-musl@21.4.0-beta.5': optional: true '@nx/nx-linux-x64-gnu@16.5.1': optional: true - '@nx/nx-linux-x64-gnu@21.3.10': + '@nx/nx-linux-x64-gnu@21.3.11': + optional: true + + '@nx/nx-linux-x64-gnu@21.4.0-beta.5': optional: true '@nx/nx-linux-x64-musl@16.5.1': optional: true - '@nx/nx-linux-x64-musl@21.3.10': + '@nx/nx-linux-x64-musl@21.3.11': + optional: true + + '@nx/nx-linux-x64-musl@21.4.0-beta.5': optional: true '@nx/nx-win32-arm64-msvc@16.5.1': optional: true - '@nx/nx-win32-arm64-msvc@21.3.10': + '@nx/nx-win32-arm64-msvc@21.3.11': + optional: true + + '@nx/nx-win32-arm64-msvc@21.4.0-beta.5': optional: true '@nx/nx-win32-x64-msvc@16.5.1': optional: true - '@nx/nx-win32-x64-msvc@21.3.10': + '@nx/nx-win32-x64-msvc@21.3.11': optional: true + '@nx/nx-win32-x64-msvc@21.4.0-beta.5': + optional: true + + '@nx/workspace@21.3.11(@swc/core@1.13.3)': + dependencies: + '@nx/devkit': 21.3.11(nx@21.3.11(@swc/core@1.13.3)) + '@zkochan/js-yaml': 0.0.7 + chalk: 4.1.2 + enquirer: 2.3.6 + nx: 21.3.11(@swc/core@1.13.3) + picomatch: 4.0.2 + tslib: 2.8.1 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - debug + '@otplib/core@12.0.1': {} '@otplib/plugin-crypto@12.0.1': @@ -20904,7 +20980,7 @@ snapshots: dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-react-constant-elements': 7.27.1(@babel/core@7.28.0) - '@babel/preset-env': 7.22.9(@babel/core@7.28.0) + '@babel/preset-env': 7.28.0(@babel/core@7.28.0) '@babel/preset-react': 7.27.1(@babel/core@7.28.0) '@babel/preset-typescript': 7.27.1(@babel/core@7.28.0) '@svgr/core': 8.1.0(typescript@5.8.3) @@ -21418,6 +21494,8 @@ snapshots: '@types/opentype.js@1.3.8': {} + '@types/parse-json@4.0.2': {} + '@types/parse5@6.0.3': {} '@types/pg@8.15.5': @@ -22529,6 +22607,15 @@ snapshots: schema-utils: 4.3.2 webpack: 5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17)) + babel-plugin-const-enum@1.2.0(@babel/core@7.28.0): + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.0) + '@babel/traverse': 7.28.0 + transitivePeerDependencies: + - supports-color + babel-plugin-dynamic-import-node@2.3.3: dependencies: object.assign: 4.1.7 @@ -22543,6 +22630,12 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.28.2 + cosmiconfig: 7.1.0 + resolve: 1.22.10 + babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.22.9): dependencies: '@babel/compat-data': 7.28.0 @@ -22577,14 +22670,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.28.0): - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.28.0) - core-js-compat: 3.44.0 - transitivePeerDependencies: - - supports-color - babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.22.9): dependencies: '@babel/core': 7.22.9 @@ -22592,13 +22677,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.28.0): - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.28.0) - transitivePeerDependencies: - - supports-color - babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.0): dependencies: '@babel/core': 7.28.0 @@ -22606,6 +22684,13 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-transform-typescript-metadata@0.3.2(@babel/core@7.28.0)(@babel/traverse@7.28.0): + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + optionalDependencies: + '@babel/traverse': 7.28.0 + bail@2.0.2: {} balanced-match@1.0.2: {} @@ -23088,6 +23173,11 @@ snapshots: colors@1.4.0: {} + columnify@1.6.0: + dependencies: + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + combine-promises@1.2.0: {} combined-stream@1.0.8: @@ -23260,6 +23350,14 @@ snapshots: dependencies: layout-base: 2.0.1 + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + cosmiconfig@8.3.6(typescript@5.1.6): dependencies: import-fresh: 3.3.1 @@ -25844,6 +25942,10 @@ snapshots: dependencies: lru-cache: 7.18.3 + hosted-git-info@7.0.2: + dependencies: + lru-cache: 10.4.3 + hpack.js@2.1.6: dependencies: inherits: 2.0.4 @@ -28574,6 +28676,13 @@ snapshots: semver: 7.7.2 validate-npm-package-name: 5.0.1 + npm-package-arg@11.0.1: + dependencies: + hosted-git-info: 7.0.2 + proc-log: 3.0.0 + semver: 7.7.2 + validate-npm-package-name: 5.0.1 + npm-packlist@7.0.4: dependencies: ignore-walk: 6.0.5 @@ -28684,7 +28793,7 @@ snapshots: transitivePeerDependencies: - debug - nx@21.3.10(@swc/core@1.13.3): + nx@21.3.11(@swc/core@1.13.3): dependencies: '@napi-rs/wasm-runtime': 0.2.4 '@yarnpkg/lockfile': 1.1.0 @@ -28722,16 +28831,68 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@nx/nx-darwin-arm64': 21.3.10 - '@nx/nx-darwin-x64': 21.3.10 - '@nx/nx-freebsd-x64': 21.3.10 - '@nx/nx-linux-arm-gnueabihf': 21.3.10 - '@nx/nx-linux-arm64-gnu': 21.3.10 - '@nx/nx-linux-arm64-musl': 21.3.10 - '@nx/nx-linux-x64-gnu': 21.3.10 - '@nx/nx-linux-x64-musl': 21.3.10 - '@nx/nx-win32-arm64-msvc': 21.3.10 - '@nx/nx-win32-x64-msvc': 21.3.10 + '@nx/nx-darwin-arm64': 21.3.11 + '@nx/nx-darwin-x64': 21.3.11 + '@nx/nx-freebsd-x64': 21.3.11 + '@nx/nx-linux-arm-gnueabihf': 21.3.11 + '@nx/nx-linux-arm64-gnu': 21.3.11 + '@nx/nx-linux-arm64-musl': 21.3.11 + '@nx/nx-linux-x64-gnu': 21.3.11 + '@nx/nx-linux-x64-musl': 21.3.11 + '@nx/nx-win32-arm64-msvc': 21.3.11 + '@nx/nx-win32-x64-msvc': 21.3.11 + '@swc/core': 1.13.3(@swc/helpers@0.5.17) + transitivePeerDependencies: + - debug + + nx@21.4.0-beta.5(@swc/core@1.13.3): + 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.11.0(debug@4.4.1) + 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.0.5 + 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.3 + tree-kill: 1.2.2 + tsconfig-paths: 4.2.0 + tslib: 2.8.1 + yaml: 2.8.0 + yargs: 17.7.2 + yargs-parser: 21.1.1 + optionalDependencies: + '@nx/nx-darwin-arm64': 21.4.0-beta.5 + '@nx/nx-darwin-x64': 21.4.0-beta.5 + '@nx/nx-freebsd-x64': 21.4.0-beta.5 + '@nx/nx-linux-arm-gnueabihf': 21.4.0-beta.5 + '@nx/nx-linux-arm64-gnu': 21.4.0-beta.5 + '@nx/nx-linux-arm64-musl': 21.4.0-beta.5 + '@nx/nx-linux-x64-gnu': 21.4.0-beta.5 + '@nx/nx-linux-x64-musl': 21.4.0-beta.5 + '@nx/nx-win32-arm64-msvc': 21.4.0-beta.5 + '@nx/nx-win32-x64-msvc': 21.4.0-beta.5 '@swc/core': 1.13.3(@swc/helpers@0.5.17) transitivePeerDependencies: - debug @@ -29250,6 +29411,8 @@ snapshots: picomatch@2.3.1: {} + picomatch@4.0.2: {} + picomatch@4.0.3: {} pidtree@0.6.0: {} @@ -31357,6 +31520,11 @@ snapshots: source-map-js: 1.2.1 webpack: 5.94.0(@swc/core@1.13.3)(esbuild@0.18.17) + source-map-support@0.5.19: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2