fix: improve NX caching (#11434)

# Which Problems Are Solved
This PR improves our NX caching, especially for the console and api.
It makes sure that if the console is changed the api is also rebuilt and
if the api is changed the functional-ui tests are rerun. It is important
to note this only fixes a subset of our problems.

# How the Problems Are Solved
NX ignores .gitignored files even if they are explicitly added to the
inputs of an NX target. To counteract this one can add these files to a
.nxignore file with a negated pattern.
https://nx.dev/docs/reference/inputs#token-behavior-with-nested-projects
. This solution is not documented per se but can be find in this Github
issue: https://github.com/nrwl/nx/issues/6821 . Further more nx
calculates the hashes of inputs at the start and does not recalculate
them even if a dependency of a target changes. To solve this problem one
needs to use
https://nx.dev/docs/reference/inputs#outputs-of-dependent-tasks . This
comment of an NX developer helped me further to understand the actual
behaviour of NX:
https://github.com/nrwl/nx/issues/33379#issuecomment-3657929455 .

# Additional Changes
Because the functional-ui tests now correctly run again they had to be
fixed. This pr unifies the field names in the user create v1 and v2 ui.

# Additional Context
To document this somewhere, this proposed fix does not work:
https://github.com/nrwl/nx/issues/6821#issuecomment-1309475504 . In my
local testing NX runtime inputs also get executed at the beginning of
the NX loop and ignore subsequent changes by targets. While testing this
fix and browsing through NX code I found this, which could be helpful in
the future and isn't documented: https://github.com/nrwl/nx/pull/31428
This commit is contained in:
Ramon
2026-01-29 14:42:52 +01:00
committed by GitHub
parent 01004649b6
commit 7b6395c348
13 changed files with 189 additions and 305 deletions
+1 -1
View File
@@ -11,4 +11,4 @@
}
}
}
}
}
+4 -1
View File
@@ -64,7 +64,10 @@ jobs:
- name: Lint, Test and Build
env:
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN || secrets.NX_CLOUD_ACCESS_TOKEN_READONLY }}
run: pnpm nx affected --nxBail --targets lint test build --exclude @zitadel/docs
# 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
- name: Suggest Pipeline Fix By Nx Cloud AI
if: failure() || cancelled()
env:
+9 -6
View File
@@ -47,7 +47,9 @@ cmd/zitadel/zitadel
/zitadel
# buildfolders and generated files
console/src/app/proto/generated/
console/dist
console/src/app/proto/generated
console/.angular
**.pb.go
!pkg/grpc/protoc/v2/options.pb.go
**.proto.mock.go
@@ -57,8 +59,8 @@ pkg/**/**.connect.go
openapi/**/*.json
/internal/api/assets/authz.go
/internal/api/assets/router.go
/internal/api/ui/console/static/*
!/internal/api/ui/console/static/gitkeep
internal/api/ui/console/static
!internal/api/ui/console/static/gitkeep
docs/docs/apis/auth
docs/docs/apis/admin
docs/docs/apis/mgmt
@@ -73,8 +75,10 @@ zitadel-*-*
# local
build/local/*.env
.notifications
/.artifacts/*
!/.artifacts/zitadel
.artifacts/*
!.artifacts/bin
.artifacts/bin/*/*/**/*
!.artifacts/zitadel
/zitadel
node_modules/
.kreya
@@ -87,7 +91,6 @@ go.work.sum
# Local Netlify folder
.netlify
dist
.vercel
# PNPM
+4
View File
@@ -0,0 +1,4 @@
!console/dist
!console/src/app/proto/generated
!internal/api/ui/console/static
!.artifacts/bin/*/*/zitadel.local
+4 -3
View File
@@ -67,7 +67,8 @@
"inputs": [
{ "runtime": "go env GOOS" },
{ "runtime": "go env GOARCH" },
"runtime"
"runtime",
{"dependentTasksOutputFiles": "internal/api/ui/console/static/**/*"}
],
"outputs": [
"{workspaceRoot}/.artifacts/bin/*/*/zitadel.local"
@@ -211,10 +212,10 @@
"dependsOn": [
"@zitadel/console:build"
],
"command": "cp -r console/dist/console/* internal/api/ui/console/static",
"command": "find internal/api/ui/console/static -mindepth 1 ! -name 'gitkeep' -delete -print && cp -r -v console/dist/console/* internal/api/ui/console/static",
"cache": true,
"inputs": [
"{workspaceRoot}/console/dist/console/**/*"
{"dependentTasksOutputFiles": "console/dist/console/**/*"}
],
"outputs": [
"{workspaceRoot}/internal/api/ui/console/static"
-51
View File
@@ -1,51 +0,0 @@
# See http://help.github.com/ignore-files/ for more about ignoring files.
# compiled output
dist/
tmp/
out-tsc/
# dependencies
node_modules/
# profiling files
chrome-profiler-events*.json
speed-measure-plugin*.json
# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace
# IDE - VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
.history/*
# misc
/.angular/cache
/.sass-cache
/connect.lock
/coverage
/libpeerconnection.log
npm-debug.log
pnpm-debug.log
testem.log
/typings
# System Files
.DS_Store
Thumbs.db
.vscode/settings.json
# Proto generated js files
src/app/proto
+42 -53
View File
@@ -1,56 +1,45 @@
{
"$schema": "../node_modules/nx/schemas/project-schema.json",
"targets": {
"lint": {
"description": "Runs all linters",
"dependsOn": [
"lint-check-*"
]
},
"lint-check-prettier": {
"description": "Checks code formatting with Prettier",
"cache": true,
"inputs": [
"default"
]
},
"lint-check-ng": {
"description": "Runs Angular specific lint checks",
"cache": true,
"inputs": [
"default"
]
},
"generate": {
"description": "Generates code from protobuf definitions for API v1 endpoints",
"inputs": [
"{workspaceRoot}/proto/**/*",
"{projectRoot}/buf.gen.yaml",
"{projectRoot}/package.json",
"{workspaceRoot}/pnpm-lock.yaml"
],
"outputs": [
"{projectRoot}/src/app/proto/generated"
]
},
"build": {
"description": "Builds the Management Console for production",
"inputs": [
"default",
"{workspaceRoot}/pnpm-lock.yaml",
"{workspaceRoot}/docs/frameworks.json"
],
"outputs": [
"{projectRoot}/dist"
]
},
"dev": {
"description": "Runs the Management Console in development mode with hot-reloading",
"continuous": true,
"dependsOn": [
"generate",
"^build"
]
}
"$schema": "../node_modules/nx/schemas/project-schema.json",
"targets": {
"lint": {
"description": "Runs all linters",
"dependsOn": ["lint-check-*"]
},
"lint-check-prettier": {
"description": "Checks code formatting with Prettier",
"cache": true,
"inputs": ["default"]
},
"lint-check-ng": {
"description": "Runs Angular specific lint checks",
"cache": true,
"inputs": ["default"]
},
"generate": {
"description": "Generates code from protobuf definitions for API v1 endpoints",
"inputs": [
"{workspaceRoot}/proto/**/*",
"{projectRoot}/buf.gen.yaml",
"{projectRoot}/package.json",
"{workspaceRoot}/pnpm-lock.yaml"
],
"outputs": ["{projectRoot}/src/app/proto/generated"]
},
"build": {
"description": "Builds the Management Console for production",
"inputs": [
"{projectRoot}/**/*",
"!{projectRoot}/dist/**/*",
"!{projectRoot}/.angular/**/*",
"{workspaceRoot}/pnpm-lock.yaml",
"{workspaceRoot}/docs/frameworks.json"
],
"outputs": ["{projectRoot}/dist"]
},
"dev": {
"description": "Runs the Management Console in development mode with hot-reloading",
"continuous": true,
"dependsOn": ["generate", "^build"]
}
}
}
@@ -23,16 +23,16 @@
</div>
<cnsl-form-field class="username">
<cnsl-label>{{ 'USER.PROFILE.USERNAME' | translate }}</cnsl-label>
<input class="stretchInput" cnslInput formControlName="username" required />
<input class="stretchInput" cnslInput formControlName="userName" required />
</cnsl-form-field>
<cnsl-form-field class="givenName">
<cnsl-label>{{ 'USER.PROFILE.FIRSTNAME' | translate }}</cnsl-label>
<input cnslInput formControlName="givenName" required />
<input cnslInput formControlName="firstName" required />
</cnsl-form-field>
<cnsl-form-field class="familyName">
<cnsl-label>{{ 'USER.PROFILE.LASTNAME' | translate }}</cnsl-label>
<input cnslInput formControlName="familyName" required />
<input cnslInput formControlName="lastName" required />
</cnsl-form-field>
<div class="authenticationFactor">
@@ -33,7 +33,6 @@ import { PasswordComplexityValidatorFactoryService } from 'src/app/services/pass
import { NewFeatureService } from 'src/app/services/new-feature.service';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { GrpcAuthService } from 'src/app/services/grpc-auth.service';
import { NewOrganizationService } from '../../../../services/new-organization.service';
type PwdForm = ReturnType<UserCreateV2Component['buildPwdForm']>;
type AuthenticationFactor =
@@ -98,9 +97,9 @@ export class UserCreateV2Component implements OnInit {
return this.fb.group({
email: new FormControl('', { nonNullable: true, validators: [requiredValidator, emailValidator] }),
username: new FormControl('', { nonNullable: true, validators: [requiredValidator, minLengthValidator(2)] }),
givenName: new FormControl('', { nonNullable: true, validators: [requiredValidator] }),
familyName: new FormControl('', { nonNullable: true, validators: [requiredValidator] }),
userName: new FormControl('', { nonNullable: true, validators: [requiredValidator, minLengthValidator(2)] }),
firstName: new FormControl('', { nonNullable: true, validators: [requiredValidator] }),
lastName: new FormControl('', { nonNullable: true, validators: [requiredValidator] }),
emailVerified: new FormControl(false, { nonNullable: true }),
authenticationFactor: new FormControl<AuthenticationFactor['factor']>(authenticationFactor, {
nonNullable: true,
@@ -189,10 +188,10 @@ export class UserCreateV2Component implements OnInit {
const humanReq: MessageInitShape<typeof AddHumanUserRequestSchema> = {
organization: { org: { case: 'orgId', value: activeOrg.id } },
username: userValues.username,
username: userValues.userName,
profile: {
givenName: userValues.givenName,
familyName: userValues.familyName,
givenName: userValues.firstName,
familyName: userValues.lastName,
},
email: {
email: userValues.email,
@@ -142,7 +142,7 @@ export class UserCreateComponent implements OnInit {
private getUseV2Api() {
return defer(() => this.featureService.getInstanceFeatures()).pipe(
map((features) => features.consoleUseV2UserApi?.enabled ?? false),
timeout(1000),
timeout(5000),
catchError((err) => {
if (!(err instanceof TimeoutError)) {
this.toast.showError(err);
+1 -1
View File
@@ -13,7 +13,7 @@
},
"devDependencies": {
"@changesets/cli": "^2.29.8",
"nx": "21.6.1",
"nx": "21.6.9",
"sass": "^1.97.1",
"wait-on": "^9.0.3"
}
+108 -162
View File
@@ -15,8 +15,8 @@ importers:
specifier: ^2.29.8
version: 2.29.8(@types/[email protected])
nx:
specifier: 21.6.1
version: 21.6.1(@swc/[email protected](@swc/[email protected]))
specifier: 21.6.9
version: 21.6.9(@swc/[email protected](@swc/[email protected]))
sass:
specifier: ^1.97.1
version: 1.97.2
@@ -2388,15 +2388,9 @@ packages:
resolution: {integrity: sha512-lBSBiRruFurFKXr5Hbsl2thmGweAPmddhF3jb99U4EMDA5L+e5Y1rAkOS07Nvrup7HUMBDrCV45meaxZnt28nQ==}
engines: {node: '>=20.0'}
'@emnapi/[email protected]':
resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==}
'@emnapi/[email protected]':
resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==}
'@emnapi/[email protected]':
resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==}
'@emnapi/[email protected]':
resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
@@ -3684,9 +3678,6 @@ packages:
'@napi-rs/[email protected]':
resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==}
'@napi-rs/[email protected]':
resolution: {integrity: sha512-+ZEtJPp8EF8h4kN6rLQECRor00H7jtDgBVtttIUoxuDkXLiQMaSBqju3LV/IEsMvqVG5pviUvR4jYhIA1xNm8w==}
'@napi-rs/[email protected]':
resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==}
@@ -3821,53 +3812,53 @@ packages:
resolution: {integrity: sha512-aoNSbxtkePXUlbZB+anS1LqsJdctG5n3UVhfU47+CDdwMi6uNTBMF9gPcQRnqghQd2FGzcwwIFBruFMxjhBewg==}
engines: {node: ^18.17.0 || >=20.5.0}
'@nx/[email protected].3':
resolution: {integrity: sha512-y/Wuo+FEky/ehah5UyERpQpUOm+KOc437zRwUrMGumNUFk73DaHVMmqABCZ1J5eqam60XgRZhq05qpRn+8dhtA==}
'@nx/[email protected].9':
resolution: {integrity: sha512-rN5cJAjKvyXfi+Zep7wvSNtGr35X1/qrm96K/Sf4sybvowyHmDdEMYxkR6BPNT8ct5JGMm35xPfx1yF/rJek3w==}
cpu: [arm64]
os: [darwin]
'@nx/[email protected].3':
resolution: {integrity: sha512-+9rogeP6EmlMBcUwflfOmFbQOWgAnJdupeJJuSenzWJCn/bE1C2iIGhuq4u4zajo2VceyN7uirlAWc8cQWCevw==}
'@nx/[email protected].9':
resolution: {integrity: sha512-rb/Dtum094nfJL8lYohne1duZr8uNQ4gvWTq/Cw/xowJwXGq3xzsSS2WTpDpRBMF45K+42fipGHNeHbCyYSF7g==}
cpu: [x64]
os: [darwin]
'@nx/[email protected].3':
resolution: {integrity: sha512-jrewLpv/J84ze+sC+P0x1INVuXTWqU4qdZIPe0ItrRMDMmxiHdhm6LtHEEo5JYezqM/LgB87yjFE49Qsudtadw==}
'@nx/[email protected].9':
resolution: {integrity: sha512-Cd7QHeivvLBiQ6iRTsvprGk1YS+CaUCMw4A+3TOvHz608a/U3mEye8oRy2fyFTTL/lsH6dlihT3xi+HNyXKAyA==}
cpu: [x64]
os: [freebsd]
'@nx/[email protected].3':
resolution: {integrity: sha512-VyMIKSp1N2ulA2wkAKIH+9a8k4tl67bH2wnvYROTRnfFykeczodfOxWeCAggS//1ccBM05pRxBklMt7fgAqV8w==}
'@nx/[email protected].9':
resolution: {integrity: sha512-ASXay2jKhSU4tfY9Z2ByysqDQxYgTHCtoJ+XR5xRv9aoIos6oYeKAqQV/RLXpTklugu08nBtL/4IRw58x4oU4A==}
cpu: [arm]
os: [linux]
'@nx/[email protected].3':
resolution: {integrity: sha512-l6/YZp5MJ5TYWbHoaR31lsqd4Ia2AnaGSACeNCUAsUsUNaa099nwmvFaKQEJxUX1aMpe4kHLyVbomK7ydEX+pg==}
'@nx/[email protected].9':
resolution: {integrity: sha512-1VS38xnAC8iH05A0nnbNn1hi9ypRnEPUfgLL3tPhAwQTWX2DQz4xR/j0NYNcCzL6yBe/JhdKlYoN/LI38lj2UA==}
cpu: [arm64]
os: [linux]
'@nx/[email protected].3':
resolution: {integrity: sha512-klidxt4eiSxgLa1LW7YUHstm3qsptz+XD1+3w0ofX1rkdVkK1afrfcolzoeZ5nc4Av7MzZB0g0PoFTGHUIBkrw==}
'@nx/[email protected].9':
resolution: {integrity: sha512-PScHPs0dp+Cc17RvY4Y5wlDXT6xdDlsyhna2JLawodVCyUVArtnbF7whn/VEZKesDD/vAf1avCt4oAjuYS8VXg==}
cpu: [arm64]
os: [linux]
'@nx/[email protected].3':
resolution: {integrity: sha512-B5ZvolVUIKKmacbZw1XD2nBIbebE2T6vBbMYq6kZP7PfSsfO5Y0HaWIsK8ulwCj35TPaEn9x/XbHJp5RakU7Ng==}
'@nx/[email protected].9':
resolution: {integrity: sha512-s8oX6/pLolHH3EyFJPcKITv+rzN/IZuidMCNkGfcr0jYVqrTZcJo8xUEwAQzf6u6J6urOm0bUK3BDuwJLEKESg==}
cpu: [x64]
os: [linux]
'@nx/[email protected].3':
resolution: {integrity: sha512-11L6SigPvjnIFbr4ivXlcH0fOPs55SvT8gkg2TOsSohKFY/Ze4O43NuoZe/7dilLjNgq8aWTbnbSuRK/kFGdBQ==}
'@nx/[email protected].9':
resolution: {integrity: sha512-bojpGcscRrnet5N3waeHYnBHW0y6r5tSQ1phnwMjgoBFmWXw+0M+z/f2dfZcTtBmWc7Y/TnzaGb8EenC3a63cQ==}
cpu: [x64]
os: [linux]
'@nx/[email protected].3':
resolution: {integrity: sha512-hC84RvGp5YxGhQLitHcg3cohTy7sdsvIRIErq3EsJNlHIaUTZJAegno26sRpRE4Y/5G5RWqfzDCCERg9c3Askw==}
'@nx/[email protected].9':
resolution: {integrity: sha512-cS1bdMiJBs4AcykJ3+vtAdw4RkZLLfXT20o+k07dEskRFADIa5yXdOs2j0qKoe7iCiORKCH+gI/YsPHCyHfV9Q==}
cpu: [arm64]
os: [win32]
'@nx/[email protected].3':
resolution: {integrity: sha512-vcnVwrTsOVdN6ovKO6qFDHXYRa+lxKFLRGCUHvJvjTOddT1/xJqkL8NE4i1YDWZiCQCck0BizR3Kvs+N0DqHoQ==}
'@nx/[email protected].9':
resolution: {integrity: sha512-EX0ja8gWnmomiSbK9K58oATpTn/+KU6RKcrfzqA3yL5x/a+kEPSf66QOXGQjDpCGKWMoxN+6ex7zhpmqbqKxgg==}
cpu: [x64]
os: [win32]
@@ -5474,9 +5465,6 @@ packages:
resolution: {integrity: sha512-UUYHISyhCU3ZgN8yaear3cGATHb3SMuKHsQ/nVbHXcmnBf+LzQ/cQfhNG+rfaSHgqGKNEm2cOCLVLELStUQ1JA==}
engines: {node: ^18.17.0 || >=20.5.0}
'@tybys/[email protected]':
resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==}
'@tybys/[email protected]':
resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
@@ -6471,9 +6459,6 @@ packages:
resolution: {integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==}
engines: {node: '>=4'}
[email protected]:
resolution: {integrity: sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==}
[email protected]:
resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==}
@@ -10583,10 +10568,6 @@ packages:
[email protected]:
resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
[email protected]:
resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==}
engines: {node: 20 || >=22}
[email protected]:
resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==}
engines: {node: 20 || >=22}
@@ -10944,8 +10925,8 @@ packages:
[email protected]:
resolution: {integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==}
[email protected].1:
resolution: {integrity: sha512-sVz4kXPxhHm+jyLpRlQblHP3ltlkivUc2psl6WpEbS3Z1pV5cMg6H/GDLohLt5VyQ8tgqKNA+mXQqljVUh8hWg==}
[email protected].9:
resolution: {integrity: sha512-RPuIb04QIOE2WLDcvKDjrAQlkI9+EnP8/9KyG/I296JA1lJhlIk7BH3F6Py7uLHD7B1adSBsCDf/tT6540Ng7A==}
hasBin: true
peerDependencies:
'@swc-node/register': ^1.8.0
@@ -15035,7 +15016,7 @@ snapshots:
'@babel/traverse': 7.28.5
'@babel/types': 7.28.4
convert-source-map: 2.0.0
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -15055,7 +15036,7 @@ snapshots:
'@babel/traverse': 7.28.5
'@babel/types': 7.28.5
convert-source-map: 2.0.0
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -15075,7 +15056,7 @@ snapshots:
'@babel/types': 7.28.5
'@jridgewell/remapping': 2.3.5
convert-source-map: 2.0.0
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -15135,7 +15116,7 @@ snapshots:
'@babel/core': 7.28.5
'@babel/helper-compilation-targets': 7.27.2
'@babel/helper-plugin-utils': 7.27.1
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
lodash.debounce: 4.0.8
resolve: 1.22.11
transitivePeerDependencies:
@@ -15846,7 +15827,7 @@ snapshots:
'@babel/parser': 7.28.5
'@babel/template': 7.27.2
'@babel/types': 7.28.5
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
@@ -16473,7 +16454,7 @@ snapshots:
'@babel/preset-env': 7.28.5(@babel/[email protected])
'@babel/preset-react': 7.28.5(@babel/[email protected])
'@babel/preset-typescript': 7.28.5(@babel/[email protected])
'@babel/runtime': 7.28.4
'@babel/runtime': 7.28.6
'@babel/runtime-corejs3': 7.28.4
'@babel/traverse': 7.28.5
'@docusaurus/logger': 3.9.2
@@ -17262,25 +17243,14 @@ snapshots:
- uglify-js
- webpack-cli
'@emnapi/[email protected]':
dependencies:
'@emnapi/wasi-threads': 1.1.0
tslib: 2.8.1
'@emnapi/[email protected]':
dependencies:
'@emnapi/wasi-threads': 1.1.0
tslib: 2.8.1
optional: true
'@emnapi/[email protected]':
dependencies:
tslib: 2.8.1
'@emnapi/[email protected]':
dependencies:
tslib: 2.8.1
optional: true
'@emnapi/[email protected]':
dependencies:
@@ -17703,7 +17673,7 @@ snapshots:
'@antfu/install-pkg': 1.1.0
'@antfu/utils': 9.2.0
'@iconify/types': 2.0.0
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
globals: 15.15.0
kolorist: 1.8.0
local-pkg: 1.1.2
@@ -18199,14 +18169,14 @@ snapshots:
'@manypkg/[email protected]':
dependencies:
'@babel/runtime': 7.28.4
'@babel/runtime': 7.28.6
'@types/node': 12.20.55
find-up: 4.1.0
fs-extra: 8.1.0
'@manypkg/[email protected]':
dependencies:
'@babel/runtime': 7.28.4
'@babel/runtime': 7.28.6
'@changesets/types': 4.1.0
'@manypkg/find-root': 1.1.0
fs-extra: 8.1.0
@@ -18405,23 +18375,16 @@ snapshots:
'@napi-rs/[email protected]':
dependencies:
'@emnapi/core': 1.5.0
'@emnapi/core': 1.8.1
'@emnapi/runtime': 1.7.1
'@tybys/wasm-util': 0.10.0
'@tybys/wasm-util': 0.10.1
optional: true
'@napi-rs/[email protected]':
dependencies:
'@emnapi/core': 1.5.0
'@emnapi/runtime': 1.5.0
'@tybys/wasm-util': 0.9.0
'@napi-rs/[email protected]':
dependencies:
'@emnapi/core': 1.5.0
'@emnapi/core': 1.8.1
'@emnapi/runtime': 1.7.1
'@tybys/wasm-util': 0.10.0
optional: true
'@tybys/wasm-util': 0.9.0
'@napi-rs/[email protected]':
dependencies:
@@ -18566,34 +18529,34 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@nx/[email protected].3':
'@nx/[email protected].9':
optional: true
'@nx/[email protected].3':
'@nx/[email protected].9':
optional: true
'@nx/[email protected].3':
'@nx/[email protected].9':
optional: true
'@nx/[email protected].3':
'@nx/[email protected].9':
optional: true
'@nx/[email protected].3':
'@nx/[email protected].9':
optional: true
'@nx/[email protected].3':
'@nx/[email protected].9':
optional: true
'@nx/[email protected].3':
'@nx/[email protected].9':
optional: true
'@nx/[email protected].3':
'@nx/[email protected].9':
optional: true
'@nx/[email protected].3':
'@nx/[email protected].9':
optional: true
'@nx/[email protected].3':
'@nx/[email protected].9':
optional: true
'@opentelemetry/[email protected]': {}
@@ -18784,7 +18747,7 @@ snapshots:
'@puppeteer/[email protected]':
dependencies:
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
extract-zip: 2.0.1([email protected])
progress: 2.0.3
proxy-agent: 6.5.0
@@ -19707,7 +19670,7 @@ snapshots:
'@rspack/[email protected]':
dependencies:
'@napi-rs/wasm-runtime': 1.0.4
'@napi-rs/wasm-runtime': 1.1.1
optional: true
'@rspack/[email protected]':
@@ -20165,11 +20128,6 @@ snapshots:
'@tufjs/canonical-json': 2.0.0
minimatch: 9.0.5
'@tybys/[email protected]':
dependencies:
tslib: 2.8.1
optional: true
'@tybys/[email protected]':
dependencies:
tslib: 2.8.1
@@ -20402,9 +20360,9 @@ snapshots:
'@types/[email protected]': {}
'@types/[email protected](@types/[email protected].8)':
'@types/[email protected](@types/[email protected].7)':
dependencies:
'@types/react': 19.2.8
'@types/react': 19.2.7
hoist-non-react-statics: 3.3.2
'@types/[email protected]': {}
@@ -20510,8 +20468,8 @@ snapshots:
'@types/[email protected]':
dependencies:
'@types/hoist-non-react-statics': 3.3.7(@types/[email protected].8)
'@types/react': 19.2.8
'@types/hoist-non-react-statics': 3.3.7(@types/[email protected].7)
'@types/react': 19.2.7
hoist-non-react-statics: 3.3.2
redux: 4.2.1
@@ -20641,7 +20599,7 @@ snapshots:
'@typescript-eslint/types': 8.52.0
'@typescript-eslint/typescript-estree': 8.52.0([email protected])
'@typescript-eslint/visitor-keys': 8.52.0
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
eslint: 8.57.1
typescript: 5.9.2
transitivePeerDependencies:
@@ -20653,7 +20611,7 @@ snapshots:
'@typescript-eslint/types': 8.52.0
'@typescript-eslint/typescript-estree': 8.52.0([email protected])
'@typescript-eslint/visitor-keys': 8.52.0
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
eslint: 8.57.1
typescript: 5.9.3
transitivePeerDependencies:
@@ -20663,7 +20621,7 @@ snapshots:
dependencies:
'@typescript-eslint/tsconfig-utils': 8.52.0([email protected])
'@typescript-eslint/types': 8.52.0
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
typescript: 5.9.2
transitivePeerDependencies:
- supports-color
@@ -20672,7 +20630,7 @@ snapshots:
dependencies:
'@typescript-eslint/tsconfig-utils': 8.52.0([email protected])
'@typescript-eslint/types': 8.52.0
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@@ -20700,7 +20658,7 @@ snapshots:
'@typescript-eslint/types': 8.52.0
'@typescript-eslint/typescript-estree': 8.52.0([email protected])
'@typescript-eslint/utils': 8.52.0([email protected])([email protected])
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
eslint: 8.57.1
ts-api-utils: 2.4.0([email protected])
typescript: 5.9.2
@@ -20712,7 +20670,7 @@ snapshots:
'@typescript-eslint/types': 8.52.0
'@typescript-eslint/typescript-estree': 8.52.0([email protected])
'@typescript-eslint/utils': 8.52.0([email protected])([email protected])
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
eslint: 8.57.1
ts-api-utils: 2.4.0([email protected])
typescript: 5.9.3
@@ -20727,7 +20685,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 8.0.0-alpha.20
'@typescript-eslint/visitor-keys': 8.0.0-alpha.20
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.5
@@ -20744,7 +20702,7 @@ snapshots:
'@typescript-eslint/tsconfig-utils': 8.52.0([email protected])
'@typescript-eslint/types': 8.52.0
'@typescript-eslint/visitor-keys': 8.52.0
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
minimatch: 9.0.5
semver: 7.7.3
tinyglobby: 0.2.15
@@ -20759,7 +20717,7 @@ snapshots:
'@typescript-eslint/tsconfig-utils': 8.52.0([email protected])
'@typescript-eslint/types': 8.52.0
'@typescript-eslint/visitor-keys': 8.52.0
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
minimatch: 9.0.5
semver: 7.7.3
tinyglobby: 0.2.15
@@ -21405,14 +21363,6 @@ snapshots:
[email protected]: {}
[email protected]:
dependencies:
follow-redirects: 1.15.11([email protected])
form-data: 4.0.4
proxy-from-env: 1.1.0
transitivePeerDependencies:
- debug
[email protected]([email protected]):
dependencies:
follow-redirects: 1.15.11([email protected])
@@ -21574,7 +21524,7 @@ snapshots:
dependencies:
bytes: 3.1.2
content-type: 1.0.5
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
http-errors: 2.0.0
iconv-lite: 0.6.3
on-finished: 2.4.1
@@ -22729,7 +22679,7 @@ snapshots:
[email protected]:
dependencies:
address: 1.2.2
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
@@ -23706,7 +23656,7 @@ snapshots:
content-type: 1.0.5
cookie: 0.7.2
cookie-signature: 1.2.2
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
encodeurl: 2.0.0
escape-html: 1.0.3
etag: 1.8.1
@@ -23866,7 +23816,7 @@ snapshots:
[email protected]:
dependencies:
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
encodeurl: 2.0.0
escape-html: 1.0.3
on-finished: 2.4.1
@@ -23921,7 +23871,7 @@ snapshots:
[email protected]([email protected]):
optionalDependencies:
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
[email protected]:
dependencies:
@@ -24100,7 +24050,7 @@ snapshots:
dependencies:
basic-ftp: 5.0.5
data-uri-to-buffer: 6.0.2
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
optional: true
@@ -24559,7 +24509,7 @@ snapshots:
[email protected]:
dependencies:
'@babel/runtime': 7.28.4
'@babel/runtime': 7.28.6
loose-envify: 1.4.0
resolve-pathname: 3.0.0
tiny-invariant: 1.3.3
@@ -24769,7 +24719,7 @@ snapshots:
[email protected]:
dependencies:
minimatch: 10.0.3
minimatch: 10.1.1
[email protected]: {}
@@ -25117,7 +25067,7 @@ snapshots:
[email protected]:
dependencies:
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
istanbul-lib-coverage: 2.0.5
make-dir: 2.1.0
rimraf: 2.7.1
@@ -25127,7 +25077,7 @@ snapshots:
[email protected]:
dependencies:
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
istanbul-lib-coverage: 3.2.2
source-map: 0.6.1
transitivePeerDependencies:
@@ -25736,7 +25686,7 @@ snapshots:
[email protected]:
dependencies:
date-format: 4.0.14
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
flatted: 3.3.3
rfdc: 1.4.1
streamroller: 3.1.5
@@ -26770,7 +26720,7 @@ snapshots:
[email protected]:
dependencies:
'@types/debug': 4.1.12
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
decode-named-character-reference: 1.2.0
micromark-core-commonmark: 1.1.0
micromark-factory-space: 1.1.0
@@ -26792,7 +26742,7 @@ snapshots:
[email protected]:
dependencies:
'@types/debug': 4.1.12
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
decode-named-character-reference: 1.2.0
devlop: 1.1.0
micromark-core-commonmark: 2.0.3
@@ -26864,10 +26814,6 @@ snapshots:
[email protected]: {}
[email protected]:
dependencies:
'@isaacs/brace-expansion': 5.0.0
[email protected]:
dependencies:
'@isaacs/brace-expansion': 5.0.0
@@ -27291,13 +27237,13 @@ snapshots:
[email protected]: {}
[email protected].1(@swc/[email protected](@swc/[email protected])):
[email protected].9(@swc/[email protected](@swc/[email protected])):
dependencies:
'@napi-rs/wasm-runtime': 0.2.4
'@yarnpkg/lockfile': 1.1.0
'@yarnpkg/parsers': 3.0.2
'@zkochan/js-yaml': 0.0.7
axios: 1.12.2
axios: 1.13.2([email protected])
chalk: 4.1.2
cli-cursor: 3.1.0
cli-spinners: 2.6.1
@@ -27318,7 +27264,7 @@ snapshots:
open: 8.4.2
ora: 5.3.0
resolve.exports: 2.0.3
semver: 7.7.2
semver: 7.7.3
string-width: 4.2.3
tar-stream: 2.2.0
tmp: 0.2.5
@@ -27329,16 +27275,16 @@ snapshots:
yargs: 17.7.2
yargs-parser: 21.1.1
optionalDependencies:
'@nx/nx-darwin-arm64': 21.6.3
'@nx/nx-darwin-x64': 21.6.3
'@nx/nx-freebsd-x64': 21.6.3
'@nx/nx-linux-arm-gnueabihf': 21.6.3
'@nx/nx-linux-arm64-gnu': 21.6.3
'@nx/nx-linux-arm64-musl': 21.6.3
'@nx/nx-linux-x64-gnu': 21.6.3
'@nx/nx-linux-x64-musl': 21.6.3
'@nx/nx-win32-arm64-msvc': 21.6.3
'@nx/nx-win32-x64-msvc': 21.6.3
'@nx/nx-darwin-arm64': 21.6.9
'@nx/nx-darwin-x64': 21.6.9
'@nx/nx-freebsd-x64': 21.6.9
'@nx/nx-linux-arm-gnueabihf': 21.6.9
'@nx/nx-linux-arm64-gnu': 21.6.9
'@nx/nx-linux-arm64-musl': 21.6.9
'@nx/nx-linux-x64-gnu': 21.6.9
'@nx/nx-linux-x64-musl': 21.6.9
'@nx/nx-win32-arm64-msvc': 21.6.9
'@nx/nx-win32-x64-msvc': 21.6.9
'@swc/core': 1.15.3(@swc/[email protected])
transitivePeerDependencies:
- debug
@@ -27652,7 +27598,7 @@ snapshots:
dependencies:
'@tootallnate/quickjs-emscripten': 0.23.0
agent-base: 7.1.4
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
get-uri: 6.0.5
http-proxy-agent: 7.0.2
https-proxy-agent: 7.0.6
@@ -28528,7 +28474,7 @@ snapshots:
[email protected]:
dependencies:
agent-base: 7.1.4
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
http-proxy-agent: 7.0.2
https-proxy-agent: 7.0.6
lru-cache: 7.18.3
@@ -28571,7 +28517,7 @@ snapshots:
dependencies:
'@puppeteer/browsers': 2.3.0
chromium-bidi: 0.6.3([email protected])
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
devtools-protocol: 0.0.1312386
ws: 8.18.3
transitivePeerDependencies:
@@ -28711,7 +28657,7 @@ snapshots:
[email protected](@docusaurus/[email protected]([email protected]))([email protected](@swc/[email protected](@swc/[email protected]))):
dependencies:
'@babel/runtime': 7.28.4
'@babel/runtime': 7.28.6
react-loadable: '@docusaurus/[email protected]([email protected])'
webpack: 5.102.1(@swc/[email protected](@swc/[email protected]))
@@ -28809,13 +28755,13 @@ snapshots:
[email protected]([email protected]([email protected]))([email protected]):
dependencies:
'@babel/runtime': 7.28.4
'@babel/runtime': 7.28.6
react: 19.2.3
react-router: 5.3.4([email protected])
[email protected]([email protected]):
dependencies:
'@babel/runtime': 7.28.4
'@babel/runtime': 7.28.6
history: 4.10.1
loose-envify: 1.4.0
prop-types: 15.8.1
@@ -28826,7 +28772,7 @@ snapshots:
[email protected]([email protected]):
dependencies:
'@babel/runtime': 7.28.4
'@babel/runtime': 7.28.6
history: 4.10.1
hoist-non-react-statics: 3.3.2
loose-envify: 1.4.0
@@ -29270,7 +29216,7 @@ snapshots:
[email protected]:
dependencies:
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
depd: 2.0.0
is-promise: 4.0.0
parseurl: 1.3.3
@@ -29437,7 +29383,7 @@ snapshots:
[email protected]:
dependencies:
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
encodeurl: 2.0.0
escape-html: 1.0.3
etag: 1.8.1
@@ -29745,7 +29691,7 @@ snapshots:
[email protected]:
dependencies:
agent-base: 7.1.4
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
socks: 2.8.7
transitivePeerDependencies:
- supports-color
@@ -29793,7 +29739,7 @@ snapshots:
[email protected]:
dependencies:
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
detect-node: 2.1.0
hpack.js: 2.1.6
obuf: 1.1.2
@@ -29804,7 +29750,7 @@ snapshots:
[email protected]:
dependencies:
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
handle-thing: 2.0.1
http-deceiver: 1.2.7
select-hose: 2.0.0
@@ -29851,7 +29797,7 @@ snapshots:
arg: 5.0.2
bluebird: 3.7.2
check-more-types: 2.24.0
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
execa: 5.1.1
lazy-ass: 1.6.0
ps-tree: 1.2.0
@@ -29879,7 +29825,7 @@ snapshots:
[email protected]:
dependencies:
date-format: 4.0.14
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
fs-extra: 8.1.0
transitivePeerDependencies:
- supports-color
@@ -30411,7 +30357,7 @@ snapshots:
cac: 6.7.14
chokidar: 4.0.3
consola: 3.4.2
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
esbuild: 0.27.2
fix-dts-default-cjs-exports: 1.0.1
joycon: 3.1.1
@@ -30437,7 +30383,7 @@ snapshots:
[email protected]:
dependencies:
'@tufjs/models': 3.0.1
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
make-fetch-happen: 14.0.3
transitivePeerDependencies:
- supports-color
@@ -30902,7 +30848,7 @@ snapshots:
[email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]):
dependencies:
cac: 6.7.14
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
es-module-lexer: 1.7.0
pathe: 1.1.2
vite: 5.4.20(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
@@ -30920,7 +30866,7 @@ snapshots:
[email protected](@types/[email protected])([email protected])([email protected])([email protected])([email protected]):
dependencies:
cac: 6.7.14
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
es-module-lexer: 1.7.0
pathe: 1.1.2
vite: 5.4.20(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
@@ -31017,7 +30963,7 @@ snapshots:
'@vitest/spy': 2.1.9
'@vitest/utils': 2.1.9
chai: 5.3.3
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
expect-type: 1.2.2
magic-string: 0.30.19
pathe: 1.1.2
@@ -31053,7 +30999,7 @@ snapshots:
'@vitest/spy': 2.1.9
'@vitest/utils': 2.1.9
chai: 5.3.3
debug: 4.4.3(supports-color@5.5.0)
debug: 4.4.3(supports-color@8.1.1)
expect-type: 1.2.2
magic-string: 0.30.19
pathe: 1.1.2
+6 -16
View File
@@ -1,5 +1,6 @@
{
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"implicitDependencies": ["@zitadel/api"],
"targets": {
"run-db": {
"continuous": true,
@@ -9,9 +10,7 @@
"run-api": {
"description": "Sets up and runs the Zitadel API with the embedded Management Console against which the functional UI tests are run.",
"continuous": true,
"dependsOn": [
"@zitadel/api:build"
],
"dependsOn": ["@zitadel/api:build"],
"executor": "nx:run-commands",
"options": {
"command": "nx run @zitadel/api:prod:test-functional-ui --excludeTaskDependencies"
@@ -20,18 +19,11 @@
"open": {
"description": "Opens the Cypress Test Runner for interactive testing.",
"continuous": true,
"dependsOn": [
"@zitadel/console:dev",
"run-db",
"run-api"
]
"dependsOn": ["@zitadel/console:dev", "run-db", "run-api"]
},
"test": {
"description": "Runs the functional UI (Console) tests against a Zitadel API and a specified browser. Pass an installed browser as an argument, like --browser electron. The 'electron' browser should always be available.",
"dependsOn": [
"run-db",
"run-api"
],
"dependsOn": ["run-db", "run-api", "@zitadel/api:build"],
"executor": "nx:run-commands",
"options": {
"parallel": false,
@@ -44,13 +36,11 @@
]
},
"cache": true,
"inputs": [
"default"
]
"inputs": ["default", { "dependentTasksOutputFiles": ".artifacts/bin/*/*/zitadel.local" }]
},
"stop": {
"description": "Stops the local Postgres database used for functional UI (Console) tests.",
"command": "nx run @zitadel/devcontainer:compose down --volumes db-functional-ui"
}
}
}
}