From ad33b1d6a9618318b8fe86b89ed969dd8faa1749 Mon Sep 17 00:00:00 2001 From: EugeniyKiyashko Date: Wed, 24 Jun 2026 16:21:46 +0400 Subject: [PATCH 1/2] CI: use cache --- .env | 1 - .github/actions/run-qunit-tests/action.yml | 50 +- .github/workflows/build_all.yml | 53 + .github/workflows/default_workflow.yml | 46 + .github/workflows/demos_unit_tests.yml | 46 + .github/workflows/lint.yml | 184 +++ .github/workflows/playgrounds_tests.yml | 94 ++ .../workflows/pr-storybook-deploy-manual.yml | 46 + .github/workflows/pr-storybook-deploy.yml | 52 +- .github/workflows/publish-demos.yml | 46 + .github/workflows/qunit_tests.yml | 46 + .github/workflows/renovation.yml | 46 + .../workflows/run-testcafe-on-gh-pages.yml | 48 + .github/workflows/styles.yml | 46 + .github/workflows/testcafe_tests.yml | 225 +++- .github/workflows/themebuilder_tests.yml | 46 + .github/workflows/visual-tests-demos.yml | 244 ++-- .github/workflows/wrapper_tests.yml | 98 ++ .github/workflows/wrapper_tests_e2e.yml | 46 + apps/demos/.prettierignore | 1 + apps/demos/package.json | 2 +- apps/demos/project.json | 35 +- apps/demos/utils/server/csp-bundle-angular.js | 2 +- apps/demos/utils/server/csp-check.js | 2 +- e2e/testcafe-devextreme/runner.ts | 2 +- nx.json | 7 +- package.json | 8 +- packages/devextreme-scss/project.json | 8 +- packages/devextreme-themebuilder/project.json | 22 +- packages/devextreme/package.json | 2 +- packages/devextreme/project.json | 57 +- pnpm-lock.yaml | 1156 ++++------------- pnpm-workspace.yaml | 15 + tools/scripts/build-all.ts | 4 +- 34 files changed, 1714 insertions(+), 1072 deletions(-) diff --git a/.env b/.env index 5f1586f4d87a..4ada4e083b5b 100644 --- a/.env +++ b/.env @@ -2,4 +2,3 @@ # This is disabled for existing workspaces to maintain compatibility # For more info, see: https://nx.dev/concepts/inferred-tasks NX_ADD_PLUGINS=false -NX_SKIP_NX_CACHE=true \ No newline at end of file diff --git a/.github/actions/run-qunit-tests/action.yml b/.github/actions/run-qunit-tests/action.yml index 1042c016908f..7d8651cf1f73 100644 --- a/.github/actions/run-qunit-tests/action.yml +++ b/.github/actions/run-qunit-tests/action.yml @@ -69,17 +69,61 @@ runs: - uses: actions/cache@v5 name: Setup pnpm cache with: - path: | - ${{ env.STORE_PATH }} - .nx/cache + path: ${{ env.STORE_PATH }} key: ${{ runner.os }}-pnpm-cache-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies shell: bash run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: Run QUnit tests working-directory: ./packages/devextreme shell: bash diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index 69ba5b8e119a..dff78fbb2a02 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -13,6 +13,10 @@ on: default: false type: boolean +concurrency: + group: wf-${{github.event.pull_request.number || github.ref || github.sha}}-${{github.workflow}} + cancel-in-progress: true + env: NX_SKIP_NX_CACHE: ${{ contains(github.event.pull_request.labels.*.name, 'skip-cache') && 'true' || 'false' }} @@ -24,6 +28,9 @@ jobs: - name: Get sources uses: actions/checkout@v6 + - name: Pin Nx machine id + uses: ./.github/actions/pin-nx-machine-id + - name: Use Node.js uses: actions/setup-node@v6 with: @@ -46,9 +53,55 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: Build npm packages run: pnpm run all:build diff --git a/.github/workflows/default_workflow.yml b/.github/workflows/default_workflow.yml index 23d4de51420d..f2ff6a0142c7 100644 --- a/.github/workflows/default_workflow.yml +++ b/.github/workflows/default_workflow.yml @@ -45,9 +45,55 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: Run targets run: > pnpm exec nx run-many diff --git a/.github/workflows/demos_unit_tests.yml b/.github/workflows/demos_unit_tests.yml index 03fd138fbea5..0d33da2b81e5 100644 --- a/.github/workflows/demos_unit_tests.yml +++ b/.github/workflows/demos_unit_tests.yml @@ -59,9 +59,55 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: Run unit tests working-directory: apps/demos run: pnpm exec nx test diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 1b05bf9a3c7d..87e41e639716 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -43,9 +43,55 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: Build working-directory: ./packages/devextreme run: pnpm exec nx build @@ -98,9 +144,55 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: Build working-directory: ./packages/devextreme run: pnpm exec nx build @@ -140,9 +232,55 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: Check texts working-directory: ./packages/devextreme run: pnpm exec nx lint-texts @@ -223,9 +361,55 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: Lint wrappers run: pnpm exec nx run-many -t lint -p devextreme-angular devextreme-react devextreme-vue diff --git a/.github/workflows/playgrounds_tests.yml b/.github/workflows/playgrounds_tests.yml index 2ea168a39072..0a7bb27504ca 100644 --- a/.github/workflows/playgrounds_tests.yml +++ b/.github/workflows/playgrounds_tests.yml @@ -48,9 +48,55 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: Build working-directory: ./packages/devextreme run: pnpm exec nx build @@ -121,9 +167,57 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ matrix.ARGS.platform }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ matrix.ARGS.platform }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ matrix.ARGS.platform }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ matrix.ARGS.platform }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: Build working-directory: ./packages/devextreme-${{ matrix.ARGS.platform }} run: pnpm exec nx pack diff --git a/.github/workflows/pr-storybook-deploy-manual.yml b/.github/workflows/pr-storybook-deploy-manual.yml index 66204d5fe696..afcde0b85271 100644 --- a/.github/workflows/pr-storybook-deploy-manual.yml +++ b/.github/workflows/pr-storybook-deploy-manual.yml @@ -76,10 +76,56 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies if: inputs.action == 'deploy' run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: Build Storybook preview (static) if: inputs.action == 'deploy' run: | diff --git a/.github/workflows/pr-storybook-deploy.yml b/.github/workflows/pr-storybook-deploy.yml index 4e1f998ffd0f..5dd83518063c 100644 --- a/.github/workflows/pr-storybook-deploy.yml +++ b/.github/workflows/pr-storybook-deploy.yml @@ -60,19 +60,63 @@ jobs: run: | echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - name: Setup pnpm + nx cache + - name: Setup pnpm cache uses: actions/cache@v5 with: - path: | - ${{ env.STORE_PATH }} - .nx/cache + path: ${{ env.STORE_PATH }} key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm-store + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: Build Storybook preview (static) run: pnpm nx build devextreme-react-storybook diff --git a/.github/workflows/publish-demos.yml b/.github/workflows/publish-demos.yml index 10ae64dc9d4c..d1e6c8a38e19 100644 --- a/.github/workflows/publish-demos.yml +++ b/.github/workflows/publish-demos.yml @@ -30,11 +30,57 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies run: | corepack enable pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: DevExtreme - Build-all run: pnpm nx all:build-testing workflows diff --git a/.github/workflows/qunit_tests.yml b/.github/workflows/qunit_tests.yml index 2505d3828fe6..784440f33190 100644 --- a/.github/workflows/qunit_tests.yml +++ b/.github/workflows/qunit_tests.yml @@ -57,9 +57,55 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: Build working-directory: ./packages/devextreme shell: bash diff --git a/.github/workflows/renovation.yml b/.github/workflows/renovation.yml index 714f941630d6..b19df7e64be7 100644 --- a/.github/workflows/renovation.yml +++ b/.github/workflows/renovation.yml @@ -43,9 +43,55 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: Build localization working-directory: ./packages/devextreme run: pnpm exec gulp localization diff --git a/.github/workflows/run-testcafe-on-gh-pages.yml b/.github/workflows/run-testcafe-on-gh-pages.yml index 4f907d3ad8e9..cbac582f0bf9 100644 --- a/.github/workflows/run-testcafe-on-gh-pages.yml +++ b/.github/workflows/run-testcafe-on-gh-pages.yml @@ -68,11 +68,59 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + devextreme/.nx/cache + devextreme/.nx/workspace-data/*.db + devextreme/.nx/workspace-data/*.db-wal + devextreme/.nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ matrix.CONSTEL }}-${{ matrix.THEME }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ matrix.CONSTEL }}-${{ matrix.THEME }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies working-directory: devextreme run: | corepack enable pnpm install --frozen-lockfile + + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + devextreme/.nx/cache + devextreme/.nx/workspace-data/*.db + devextreme/.nx/workspace-data/*.db-wal + devextreme/.nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ matrix.CONSTEL }}-${{ matrix.THEME }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ matrix.CONSTEL }}-${{ matrix.THEME }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- - name: Run TestCafe tests working-directory: devextreme/apps/demos diff --git a/.github/workflows/styles.yml b/.github/workflows/styles.yml index 91dd7c514896..e1064eb20638 100644 --- a/.github/workflows/styles.yml +++ b/.github/workflows/styles.yml @@ -43,9 +43,55 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: Run tests run: pnpm exec nx test devextreme-scss diff --git a/.github/workflows/testcafe_tests.yml b/.github/workflows/testcafe_tests.yml index 9bdfd3a4aaf2..eb855a258037 100644 --- a/.github/workflows/testcafe_tests.yml +++ b/.github/workflows/testcafe_tests.yml @@ -71,9 +71,55 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: Build shell: bash env: @@ -82,6 +128,61 @@ jobs: pnpm exec nx build devextreme-scss pnpm exec nx build devextreme -c testing + - name: Show nx cache contents before save + if: ${{ always() }} + shell: bash + run: | + du -sh .nx/cache .nx/workspace-data 2>/dev/null || true + find .nx/cache -type f 2>/dev/null | wc -l | xargs echo "Nx cache files:" + find .nx/workspace-data -maxdepth 1 -type f 2>/dev/null | sed 's#^#Nx workspace-data file: #' + node - <<'NODE' + const fs = require('fs'); + const runJsonPath = '.nx/cache/run.json'; + + if (!fs.existsSync(runJsonPath)) { + console.log('Nx latest run: .nx/cache/run.json is missing'); + process.exit(0); + } + + const data = JSON.parse(fs.readFileSync(runJsonPath, 'utf8')); + const getCache = () => { + try { + const { NxCache } = require('nx/src/native'); + const { workspaceRoot } = require('nx/src/utils/workspace-root'); + const { cacheDir } = require('nx/src/utils/cache-directory'); + const { getDbConnection } = require('nx/src/utils/db-connection'); + + return new NxCache(workspaceRoot, cacheDir, getDbConnection()); + } catch (error) { + console.log(`Nx cache entry check unavailable: ${error.message}`); + return null; + } + }; + const cache = getCache(); + const getCacheEntryStatus = (hash) => { + if (!cache) { + return 'unchecked'; + } + + try { + return cache.get(hash) ? 'present' : 'missing'; + } catch (error) { + return `error: ${error.message}`; + } + }; + const tasks = (data.tasks ?? []).map((task) => ({ + taskId: task.taskId, + hash: task.hash, + cacheStatus: task.cacheStatus, + cacheEntry: getCacheEntryStatus(task.hash), + status: task.status, + })); + + console.log(`Nx latest run command: ${data.run?.command ?? ''}`); + console.log('Nx latest run tasks:'); + console.log(JSON.stringify(tasks, null, 2)); + NODE + - name: Zip artifacts working-directory: ./packages/devextreme run: | @@ -94,48 +195,88 @@ jobs: path: ./packages/devextreme/artifacts.zip retention-days: 1 - testcafe: - name: ${{ matrix.ARGS.name }}${{ !matrix.ARGS.theme && ' - fluent' || '' }} + determine-testcafe-matrix: + runs-on: ubuntu-latest + name: Determine TestCafe matrix + needs: check-should-run if: needs.check-should-run.outputs.should-run == 'true' - needs: [check-should-run, build] + outputs: + matrix: ${{ steps.matrix.outputs.matrix }} + + steps: + - name: Build matrix + id: matrix + run: | + base_matrix_start=$(cat <<'JSON' + [ + { "componentFolder": "accessibility", "name": "accessibility" } + ] + JSON + ) + + base_matrix_end=$(cat <<'JSON' + [ + { "componentFolder": "common", "name": "common" }, + + { "name": "generic", "theme": "generic.light" }, + { "name": "material", "theme": "material.blue.light" }, + { "name": "material - compact", "theme": "material.blue.light.compact" }, + + { "componentFolder": "cardView", "name": "cardView" }, + { "componentFolder": "dataGrid", "name": "dataGrid (1/4)", "indices": "1/4", "cache": true }, + { "componentFolder": "dataGrid", "name": "dataGrid (2/4)", "indices": "2/4", "cache": true }, + { "componentFolder": "dataGrid", "name": "dataGrid (3/4)", "indices": "3/4", "cache": true }, + { "componentFolder": "dataGrid", "name": "dataGrid (4/4)", "indices": "4/4", "cache": true }, + + { "componentFolder": "editors", "name": "editors" }, + { "componentFolder": "navigation", "name": "navigation" }, + + { "componentFolder": "scheduler/common", "name": "scheduler / common (1/3)", "indices": "1/3" }, + { "componentFolder": "scheduler/common", "name": "scheduler / common (2/3)", "indices": "2/3" }, + { "componentFolder": "scheduler/common", "name": "scheduler / common (3/3)", "indices": "3/3" }, + { "componentFolder": "scheduler/viewOffset", "name": "scheduler / viewOffset (1/2)", "indices": "1/2" }, + { "componentFolder": "scheduler/viewOffset", "name": "scheduler / viewOffset (2/2)", "indices": "2/2" }, + { "componentFolder": "scheduler/timezones", "name": "scheduler / timezones (Europe/Berlin)", "timezone": "Europe/Berlin" }, + { "componentFolder": "scheduler/timezones", "name": "scheduler / timezones (America/Los_Angeles)", "timezone": "America/Los_Angeles" } + ] + JSON + ) + + style_dependent_matrix=$(cat <<'JSON' + [ + { "componentFolder": "accessibility", "name": "accessibility - fluent.dark", "theme": "fluent.blue.dark" }, + { "componentFolder": "accessibility", "name": "accessibility - material.light", "theme": "material.blue.light" }, + { "componentFolder": "accessibility", "name": "accessibility - material.dark", "theme": "material.blue.dark" } + ] + JSON + ) + + matrix=$(jq -c -n \ + --argjson baseStart "$base_matrix_start" \ + --argjson baseEnd "$base_matrix_end" \ + --argjson styleDependent "$style_dependent_matrix" \ + --arg stylesChanged "${{ needs.check-should-run.outputs.styles-changed }}" \ + '{ include: ($baseStart + (if $stylesChanged == "true" then $styleDependent else [] end) + $baseEnd) }') + + echo "matrix=$matrix" >> $GITHUB_OUTPUT + + testcafe: + name: ${{ matrix.name }}${{ !matrix.theme && ' - fluent' || '' }} + if: | + needs.check-should-run.outputs.should-run == 'true' && + needs.determine-testcafe-matrix.result == 'success' && + needs.build.result == 'success' + needs: [check-should-run, build, determine-testcafe-matrix] strategy: fail-fast: false - matrix: - ARGS: [ - { componentFolder: "accessibility", name: "accessibility" }, - { componentFolder: "accessibility", name: "accessibility - fluent.dark", theme: 'fluent.blue.dark', styleDependent: true }, - { componentFolder: "accessibility", name: "accessibility - material.light", theme: 'material.blue.light', styleDependent: true }, - { componentFolder: "accessibility", name: "accessibility - material.dark", theme: 'material.blue.dark', styleDependent: true }, - { componentFolder: "common", name: "common" }, - - { name: "generic", theme: 'generic.light' }, - { name: "material", theme: 'material.blue.light' }, - { name: "material - compact", theme: 'material.blue.light.compact' }, - - { componentFolder: "cardView", name: "cardView" }, - { componentFolder: "dataGrid", name: "dataGrid (1/4)", indices: "1/4", cache: true }, - { componentFolder: "dataGrid", name: "dataGrid (2/4)", indices: "2/4", cache: true }, - { componentFolder: "dataGrid", name: "dataGrid (3/4)", indices: "3/4", cache: true }, - { componentFolder: "dataGrid", name: "dataGrid (4/4)", indices: "4/4", cache: true }, - - { componentFolder: "editors", name: "editors" }, - { componentFolder: "navigation", name: "navigation" }, - - { componentFolder: "scheduler/common", name: "scheduler / common (1/3)", indices: "1/3" }, - { componentFolder: "scheduler/common", name: "scheduler / common (2/3)", indices: "2/3" }, - { componentFolder: "scheduler/common", name: "scheduler / common (3/3)", indices: "3/3" }, - { componentFolder: "scheduler/viewOffset", name: "scheduler / viewOffset (1/2)", indices: "1/2" }, - { componentFolder: "scheduler/viewOffset", name: "scheduler / viewOffset (2/2)", indices: "2/2" }, - { componentFolder: "scheduler/timezones", name: "scheduler / timezones (Europe/Berlin)", timezone: "Europe/Berlin" }, - { componentFolder: "scheduler/timezones", name: "scheduler / timezones (America/Los_Angeles)", timezone: "America/Los_Angeles" }, - ] + matrix: ${{ fromJson(needs.determine-testcafe-matrix.outputs.matrix) }} runs-on: devextreme-shr2 timeout-minutes: 45 steps: - name: Set machine timezone run: | - sudo ln -sf "/usr/share/zoneinfo/$([ "${{ matrix.ARGS.timezone }}" != "" ] && echo "${{ matrix.ARGS.timezone }}" || echo "GMT")" /etc/localtime + sudo ln -sf "/usr/share/zoneinfo/$([ "${{ matrix.timezone }}" != "" ] && echo "${{ matrix.timezone }}" || echo "GMT")" /etc/localtime date - name: Get sources @@ -189,26 +330,26 @@ jobs: - name: Run TestCafe tests working-directory: ./e2e/testcafe-devextreme - if: ${{ !matrix.ARGS.styleDependent || needs.check-should-run.outputs.styles-changed == 'true' }} env: NODE_OPTIONS: --max-old-space-size=8192 run: | - if [ "${{ matrix.ARGS.theme }}" != "" ]; then - THEME="--theme ${{ matrix.ARGS.theme }}" + if [ "${{ matrix.theme }}" != "" ]; then + THEME="--theme ${{ matrix.theme }}" else THEME="--theme fluent.blue.light" fi - [ "${{ matrix.ARGS.indices }}" != "" ] && INDICES="--indices ${{ matrix.ARGS.indices }}" - [ "${{ matrix.ARGS.concurrency }}" != "" ] && CONCURRENCY="--concurrency ${{ matrix.ARGS.concurrency }}" - [ "${{ matrix.ARGS.platform }}" != "" ] && PLATFORM="--platform ${{ matrix.ARGS.platform }}" - [ "${{ matrix.ARGS.cache }}" == "true" ] && CACHE="--cache true" - all_args="--browsers=chrome:devextreme-shr2 --componentFolder ${{ matrix.ARGS.componentFolder }} $CONCURRENCY $INDICES $PLATFORM $THEME $CACHE" + [ "${{ matrix.componentFolder }}" != "" ] && COMPONENT_FOLDER="--componentFolder ${{ matrix.componentFolder }}" + [ "${{ matrix.indices }}" != "" ] && INDICES="--indices ${{ matrix.indices }}" + [ "${{ matrix.concurrency }}" != "" ] && CONCURRENCY="--concurrency ${{ matrix.concurrency }}" + [ "${{ matrix.platform }}" != "" ] && PLATFORM="--platform ${{ matrix.platform }}" + [ "${{ matrix.cache }}" == "true" ] && CACHE="--cache true" + all_args="--browsers=chrome:devextreme-shr2 $COMPONENT_FOLDER $CONCURRENCY $INDICES $PLATFORM $THEME $CACHE" echo "$all_args" pnpm run test $all_args - name: Sanitize job name if: ${{ always() }} - run: echo "JOB_NAME=$(echo "${{ matrix.ARGS.name }}" | tr '/' '-')" >> $GITHUB_ENV + run: echo "JOB_NAME=$(echo "${{ matrix.name }}" | tr '/' '-')" >> $GITHUB_ENV - name: Copy compared screenshot artifacts if: ${{ always() }} diff --git a/.github/workflows/themebuilder_tests.yml b/.github/workflows/themebuilder_tests.yml index 03b07b8d2070..bdea238677ee 100644 --- a/.github/workflows/themebuilder_tests.yml +++ b/.github/workflows/themebuilder_tests.yml @@ -46,9 +46,55 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: Build etalon bundles working-directory: ./packages/devextreme-scss run: pnpm nx build:ci devextreme-scss diff --git a/.github/workflows/visual-tests-demos.yml b/.github/workflows/visual-tests-demos.yml index 560f0ec4d221..15e4cf8b7374 100644 --- a/.github/workflows/visual-tests-demos.yml +++ b/.github/workflows/visual-tests-demos.yml @@ -97,6 +97,51 @@ jobs: echo "framework-tests-scope=none" >> $GITHUB_OUTPUT fi + determine-jquery-test-matrix: + runs-on: ubuntu-latest + name: Determine jQuery test matrix + needs: [check-should-run, determine-framework-tests-scope] + if: | + always() && + needs.check-should-run.outputs.should-run == 'true' && + needs.determine-framework-tests-scope.result == 'success' + outputs: + matrix: ${{ steps.matrix.outputs.matrix }} + + steps: + - name: Build matrix + id: matrix + run: | + base_matrix=$(cat <<'JSON' + [ + { "STRATEGY": "screenshots", "THEME": "material.blue.light", "CONSTEL": "jquery(1/3)" }, + { "STRATEGY": "screenshots", "THEME": "material.blue.light", "CONSTEL": "jquery(2/3)" }, + { "STRATEGY": "screenshots", "THEME": "material.blue.light", "CONSTEL": "jquery(3/3)" }, + { "STRATEGY": "screenshots", "THEME": "fluent.blue.light", "CONSTEL": "jquery(1/3)" }, + { "STRATEGY": "screenshots", "THEME": "fluent.blue.light", "CONSTEL": "jquery(2/3)" }, + { "STRATEGY": "screenshots", "THEME": "fluent.blue.light", "CONSTEL": "jquery(3/3)" }, + { "STRATEGY": "accessibility", "THEME": "material.blue.light", "CONSTEL": "jquery" }, + { "STRATEGY": "accessibility", "THEME": "fluent.blue.light", "CONSTEL": "jquery" } + ] + JSON + ) + + dark_accessibility_matrix=$(cat <<'JSON' + [ + { "STRATEGY": "accessibility", "THEME": "material.blue.dark", "CONSTEL": "jquery" }, + { "STRATEGY": "accessibility", "THEME": "fluent.blue.dark", "CONSTEL": "jquery" } + ] + JSON + ) + + matrix=$(jq -c -n \ + --argjson base "$base_matrix" \ + --argjson darkAccessibility "$dark_accessibility_matrix" \ + --arg frameworkTestsScope "${{ needs.determine-framework-tests-scope.outputs.framework-tests-scope }}" \ + '{ include: ($base + (if $frameworkTestsScope != "none" then $darkAccessibility else [] end)) }') + + echo "matrix=$matrix" >> $GITHUB_OUTPUT + build-devextreme: runs-on: devextreme-shr2 name: Build DevExtreme @@ -134,9 +179,55 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: DevExtreme - Build if: needs.determine-framework-tests-scope.outputs.framework-tests-scope == 'none' shell: bash @@ -256,70 +347,8 @@ jobs: apps/demos/bundles/ retention-days: 1 - check-ts: - name: Check TS - needs: [check-should-run, determine-framework-tests-scope, build-devextreme] - if: | - always() && - needs.check-should-run.outputs.should-run == 'true' && - needs.determine-framework-tests-scope.result == 'success' && - needs.determine-framework-tests-scope.outputs.framework-tests-scope != 'none' && - needs.build-devextreme.result == 'success' - runs-on: ubuntu-latest - timeout-minutes: 30 - - steps: - - name: Get sources - uses: actions/checkout@v6 - - - name: Download devextreme packages - uses: actions/download-artifact@v8 - with: - name: devextreme-sources - - - name: Use Node.js - uses: actions/setup-node@v6 - with: - node-version-file: '.node-version' - - - uses: pnpm/action-setup@v6 - with: - run_install: false - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - - uses: actions/cache/restore@v5 - name: Restore pnpm cache - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-cache-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-cache - - - name: Install dependencies - run: pnpm install --frozen-lockfile - - - name: Install tgz - working-directory: apps/demos - run: pnpm add --ignore-workspace --allow-build=core-js --allow-build=inferno devextreme-aspnet-data@5.1.0 devextreme-aspnet-data-nojquery@5.1.0 ../../devextreme-installer.tgz ../../devextreme-dist-installer.tgz ../../devextreme-react-installer.tgz ../../devextreme-vue-installer.tgz ../../devextreme-angular-installer.tgz && rm -f pnpm-workspace.yaml pnpm-lock.yaml - - - name: Demos - Check Vue TS - working-directory: apps/demos - run: pnpm run ts-check-vue - - # - name: Run check TS for Angular - # working-directory: apps/demos - # run: pnpm run ts-check-ng - - - name: Demos - Check React TS - working-directory: apps/demos - run: pnpm run ts-check-react - lint: - name: Lint code base + name: Check TS and lint code base needs: [check-should-run, determine-framework-tests-scope, build-devextreme] if: | always() && @@ -377,8 +406,26 @@ jobs: working-directory: apps/demos run: pnpm add --ignore-workspace --allow-build=core-js --allow-build=inferno devextreme-aspnet-data@5.1.0 devextreme-aspnet-data-nojquery@5.1.0 ../../devextreme-installer.tgz ../../devextreme-dist-installer.tgz ../../devextreme-react-installer.tgz ../../devextreme-vue-installer.tgz ../../devextreme-angular-installer.tgz && rm -f pnpm-workspace.yaml pnpm-lock.yaml + - name: Demos - Check Vue TS + id: ts_vue + continue-on-error: true + working-directory: apps/demos + run: pnpm run ts-check-vue + + # - name: Run check TS for Angular + # working-directory: apps/demos + # run: pnpm run ts-check-ng + + - name: Demos - Check React TS + id: ts_react + continue-on-error: true + working-directory: apps/demos + run: pnpm run ts-check-react + - name: Run lint on all demos + id: lint_all if: needs.determine-framework-tests-scope.outputs.framework-tests-scope == 'all' + continue-on-error: true working-directory: apps/demos env: DEBUG: 'eslint:cli-engine,stylelint:standalone' @@ -386,7 +433,9 @@ jobs: run: pnpm exec nx lint - name: Run lint on changed demos + id: lint_changed if: needs.determine-framework-tests-scope.outputs.framework-tests-scope == 'changed' + continue-on-error: true working-directory: apps/demos env: DEBUG: 'eslint:cli-engine,stylelint:standalone' @@ -413,6 +462,32 @@ jobs: pnpm run lint-demos fi + - name: Check TS and lint results + if: always() + env: + TS_VUE_OUTCOME: ${{ steps.ts_vue.outcome }} + TS_REACT_OUTCOME: ${{ steps.ts_react.outcome }} + LINT_ALL_OUTCOME: ${{ steps.lint_all.outcome }} + LINT_CHANGED_OUTCOME: ${{ steps.lint_changed.outcome }} + run: | + failed=0 + + for check in \ + "Demos - Check Vue TS:$TS_VUE_OUTCOME" \ + "Demos - Check React TS:$TS_REACT_OUTCOME" \ + "Run lint on all demos:$LINT_ALL_OUTCOME" \ + "Run lint on changed demos:$LINT_CHANGED_OUTCOME"; do + name="${check%%:*}" + outcome="${check#*:}" + + if [ "$outcome" = "failure" ]; then + echo "::error::$name failed" + failed=1 + fi + done + + exit "$failed" + check-generated-demos-changed: name: Check generated demos (changed only) runs-on: devextreme-shr2 @@ -527,7 +602,7 @@ jobs: fi check-generated-demos-all: - name: Check generated demos (${{ matrix.CONSTEL }}) + name: Check generated demos runs-on: devextreme-shr2 timeout-minutes: 15 needs: [check-should-run, build-devextreme, determine-framework-tests-scope] @@ -537,10 +612,6 @@ jobs: needs.determine-framework-tests-scope.result == 'success' && needs.determine-framework-tests-scope.outputs.framework-tests-scope == 'all' && needs.build-devextreme.result == 'success' - strategy: - fail-fast: false - matrix: - CONSTEL: ['1/2', '2/2'] steps: - name: Get sources @@ -586,47 +657,31 @@ jobs: - name: Check generated JS demos working-directory: apps/demos - env: - CONSTEL: ${{ matrix.CONSTEL }} run: | - echo "Running convert-to-js for split $CONSTEL" + echo "Running convert-to-js" pnpm run convert-to-js git add ./Demos -N if git diff --exit-code . ':!package.json' ; then - echo "Generated JS demos are up-to-date for split $CONSTEL" + echo "Generated JS demos are up-to-date" else - echo "Generated JS demos are outdated for split $CONSTEL. Execute 'pnpm run convert-to-js split' and commit changes." + echo "Generated JS demos are outdated. Execute 'pnpm run convert-to-js' and commit changes." echo "If you see another diff, ensure that extra listed files have LF endings." exit 1 fi testcafe-jquery: - needs: [check-should-run, build-devextreme, determine-framework-tests-scope] + needs: [check-should-run, build-devextreme, determine-framework-tests-scope, determine-jquery-test-matrix] if: | always() && needs.check-should-run.outputs.should-run == 'true' && + needs.determine-framework-tests-scope.result == 'success' && + needs.determine-jquery-test-matrix.result == 'success' && needs.build-devextreme.result == 'success' strategy: fail-fast: false - matrix: - STRATEGY: [screenshots, accessibility] - THEME: ['material.blue.light', 'fluent.blue.light', 'material.blue.dark', 'fluent.blue.dark'] - CONSTEL: [jquery(1/3), jquery(2/3), jquery(3/3), jquery] - exclude: - - STRATEGY: accessibility - CONSTEL: jquery(1/3) - - STRATEGY: accessibility - CONSTEL: jquery(2/3) - - STRATEGY: accessibility - CONSTEL: jquery(3/3) - - STRATEGY: screenshots - CONSTEL: jquery - - STRATEGY: screenshots - THEME: 'material.blue.dark' - - STRATEGY: screenshots - THEME: 'fluent.blue.dark' + matrix: ${{ fromJson(needs.determine-jquery-test-matrix.outputs.matrix) }} env: ACCESSIBILITY_TESTCAFE_REPORT_PATH: "accessibility_testcafe_report" @@ -728,14 +783,13 @@ jobs: - name: Run TestCafe tests (jQuery) shell: bash working-directory: apps/demos - if: ${{ !contains(matrix.THEME, 'dark') || needs.determine-framework-tests-scope.outputs.framework-tests-scope != 'none' }} env: NODE_OPTIONS: --max-old-space-size=8192 STRATEGY: ${{ matrix.STRATEGY }} CHANGEDFILEINFOSPATH: changed-files.json BROWSERS: ${{ steps.chrome-flags.outputs.flags }} #DEBUG: hammerhead:*,testcafe:* - CONCURRENCY: 4 + CONCURRENCY: 6 TCQUARANTINE: true CONSTEL: ${{ matrix.CONSTEL }} THEME: ${{ matrix.THEME }} @@ -889,9 +943,9 @@ jobs: if [[ "${{ matrix.CONSTEL }}" == react* ]]; then echo "concurrency=4" >> $GITHUB_OUTPUT elif [[ "${{ matrix.CONSTEL }}" == vue* ]]; then - echo "concurrency=1" >> $GITHUB_OUTPUT + echo "concurrency=3" >> $GITHUB_OUTPUT elif [[ "${{ matrix.CONSTEL }}" == angular* ]]; then - echo "concurrency=2" >> $GITHUB_OUTPUT + echo "concurrency=3" >> $GITHUB_OUTPUT else echo "concurrency=2" >> $GITHUB_OUTPUT fi diff --git a/.github/workflows/wrapper_tests.yml b/.github/workflows/wrapper_tests.yml index 00ca45782bb6..588b95aa6eb3 100644 --- a/.github/workflows/wrapper_tests.yml +++ b/.github/workflows/wrapper_tests.yml @@ -6,6 +6,10 @@ on: - 'apps/**/*.md' merge_group: +concurrency: + group: wf-${{github.event.pull_request.number || github.ref || github.sha}}-${{github.workflow}} + cancel-in-progress: true + env: NX_SKIP_NX_CACHE: ${{ contains(github.event.pull_request.labels.*.name, 'skip-cache') && 'true' || 'false' }} @@ -40,9 +44,55 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: Build devextreme package run: pnpm exec nx build devextreme -c testing @@ -128,9 +178,57 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ matrix.framework }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ matrix.framework }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ matrix.framework }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ matrix.framework }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: Download Browser if: matrix.framework == 'angular' run: | diff --git a/.github/workflows/wrapper_tests_e2e.yml b/.github/workflows/wrapper_tests_e2e.yml index 326328122b7a..f70aae475a73 100644 --- a/.github/workflows/wrapper_tests_e2e.yml +++ b/.github/workflows/wrapper_tests_e2e.yml @@ -48,9 +48,55 @@ jobs: restore-keys: | ${{ runner.os }}-pnpm-cache + - name: Lookup nx cache + id: lookup-nx-cache + uses: actions/cache/restore@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + + lookup-only: true + + - name: Show nx cache status + shell: bash + run: | + echo "Nx cache lookup exact hit: ${{ steps.lookup-nx-cache.outputs.cache-hit }}" + echo "Nx cache primary key: ${{ steps.lookup-nx-cache.outputs.cache-primary-key }}" + echo "Nx cache matched key: ${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" + if [ -z "${{ steps.lookup-nx-cache.outputs.cache-matched-key }}" ]; then + echo "Nx cache lookup: miss" + elif [ "${{ steps.lookup-nx-cache.outputs.cache-hit }}" = "true" ]; then + echo "Nx cache lookup: exact hit" + else + echo "Nx cache lookup: partial hit via restore-keys" + fi + - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Setup nx cache + id: setup-nx-cache + uses: actions/cache@v5 + with: + path: | + .nx/cache + .nx/workspace-data/*.db + .nx/workspace-data/*.db-wal + .nx/workspace-data/*.db-shm + key: ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}-${{ github.run_attempt }} + restore-keys: | + ${{ runner.os }}-nx-v2-${{ github.sha }}-${{ github.workflow }}-${{ github.job }}- + ${{ runner.os }}-nx-v2-${{ github.sha }}- + ${{ runner.os }}-nx-v2- + - name: Build all DevExtreme packages run: pnpm nx all:build-testing workflows diff --git a/apps/demos/.prettierignore b/apps/demos/.prettierignore index 244b69139b66..1759b9938476 100644 --- a/apps/demos/.prettierignore +++ b/apps/demos/.prettierignore @@ -9,4 +9,5 @@ .github publish-demos coverage +testing/artifacts utils/**/template.html diff --git a/apps/demos/package.json b/apps/demos/package.json index 247894c34fbd..de2016f48397 100644 --- a/apps/demos/package.json +++ b/apps/demos/package.json @@ -180,7 +180,7 @@ "lint-demos": "eslint ./Demos", "lint-css": "stylelint **/*.{css,vue}", "lint-non-demos": "pnpm exec nx run-many -t lint-js lint-css lint-html -p devextreme-demos", - "lint": "pnpm run lint-non-demos && pnpm run lint-demos", + "lint": "pnpm exec nx run-many -t lint-js lint-demos lint-css lint-html -p devextreme-demos", "test-testcafe": "ts-node utils/visual-tests/testcafe-runner.ts", "test-testcafe:csp": "cross-env CSP_REPORT=true ts-node utils/visual-tests/testcafe-runner.ts", "test-testcafe:accessibility": "cross-env STRATEGY=accessibility CONSTEL=jquery node utils/visual-tests/testcafe-runner.ts", diff --git a/apps/demos/project.json b/apps/demos/project.json index 92602e2a4ffe..283575cf189a 100644 --- a/apps/demos/project.json +++ b/apps/demos/project.json @@ -74,7 +74,23 @@ "default", "test", "!{projectRoot}/Demos/**/*", - "{projectRoot}/.eslint*" + "{projectRoot}/eslint.config.mjs", + "{projectRoot}/tsconfig.eslint.json" + ] + }, + "lint-demos": { + "executor": "nx:run-script", + "options": { + "script": "lint-demos" + }, + "inputs": [ + "{projectRoot}/Demos/**/*.js", + "{projectRoot}/Demos/**/*.jsx", + "{projectRoot}/Demos/**/*.ts", + "{projectRoot}/Demos/**/*.tsx", + "{projectRoot}/Demos/**/*.vue", + "{projectRoot}/eslint.config.mjs", + "{projectRoot}/tsconfig.eslint.json" ] }, "lint-css": { @@ -83,9 +99,14 @@ "script": "lint-css" }, "inputs": [ - "{projectRoot}/Demos/**/*.css", - "{projectRoot}/Demos/**/*.vue", - "{projectRoot}/Demos/.stylelintrc.json" + "{projectRoot}/**/*.css", + "{projectRoot}/**/*.vue", + "!{projectRoot}/node_modules/**/*", + "!{projectRoot}/coverage/**/*", + "!{projectRoot}/publish-demos/**/*", + "!{projectRoot}/testing/artifacts/**/*", + "{projectRoot}/.stylelintrc.json", + "{projectRoot}/.stylelintignore" ] }, "lint-html": { @@ -94,7 +115,11 @@ "script": "lint-html" }, "inputs": [ - "{projectRoot}/**/*" + "{projectRoot}/**/*", + "!{projectRoot}/node_modules/**/*", + "!{projectRoot}/coverage/**/*", + "!{projectRoot}/publish-demos/**/*", + "!{projectRoot}/testing/artifacts/**/*" ] }, "prepare-js": { diff --git a/apps/demos/utils/server/csp-bundle-angular.js b/apps/demos/utils/server/csp-bundle-angular.js index f20a6bb29ac5..13ddbb005876 100644 --- a/apps/demos/utils/server/csp-bundle-angular.js +++ b/apps/demos/utils/server/csp-bundle-angular.js @@ -34,7 +34,7 @@ const RETRY_CONCURRENCY = (() => { const BATCH_SIZE = (() => { const fromEnv = parseInt(process.env.CSP_BUNDLE_BATCH_SIZE, 10); if (fromEnv > 0) return fromEnv; - return 8; + return 12; })(); const BATCH_CONCURRENCY = (() => { diff --git a/apps/demos/utils/server/csp-check.js b/apps/demos/utils/server/csp-check.js index 221f669637f8..be5661116fd3 100644 --- a/apps/demos/utils/server/csp-check.js +++ b/apps/demos/utils/server/csp-check.js @@ -18,7 +18,7 @@ const CORES = (typeof os.availableParallelism === 'function' ? os.availableParallelism() : (os.cpus() || []).length) || 1; function defaultConcurrency() { - if (FRAMEWORK === 'jQuery') return Math.max(2, Math.min(8, CORES)); + if (FRAMEWORK === 'jQuery') return Math.max(6, Math.min(8, CORES)); if (USE_BUNDLED) return Math.max(2, Math.min(8, CORES)); return 2; } diff --git a/e2e/testcafe-devextreme/runner.ts b/e2e/testcafe-devextreme/runner.ts index ee2616dc2f39..549a3e6bc262 100644 --- a/e2e/testcafe-devextreme/runner.ts +++ b/e2e/testcafe-devextreme/runner.ts @@ -163,7 +163,7 @@ async function main() { }, }); - runner.concurrency(filterByFailedTests ? 1 : (args.concurrency || 4)); + runner.concurrency(filterByFailedTests ? 1 : (args.concurrency || 8)); const filters: FilterFunction[] = []; diff --git a/nx.json b/nx.json index aa31241b5b59..cd96b8337ed7 100644 --- a/nx.json +++ b/nx.json @@ -21,6 +21,7 @@ }, "targetDefaults": { "build": { + "cache": true, "dependsOn": [ "^build" ] @@ -31,11 +32,14 @@ ] }, "test": { + "cache": true, "dependsOn": [ "^build" ] }, - "lint": {}, + "lint": { + "cache": true + }, "e2e": {} }, "workspaceLayout": { @@ -43,6 +47,7 @@ "libsDir": "packages" }, "defaultBase": "master", + "maxCacheSize": "5GB", "tui": { "enabled": false }, diff --git a/package.json b/package.json index 5683f54b2bfb..19abebc5161a 100644 --- a/package.json +++ b/package.json @@ -29,9 +29,9 @@ "nx": {}, "private": true, "devDependencies": { - "@nx/devkit": "22.7.0", - "@nx/jest": "22.7.0", - "@nx/js": "22.7.0", + "@nx/devkit": "23.0.1", + "@nx/jest": "23.0.1", + "@nx/js": "23.0.1", "@types/jest": "29.5.14", "@types/node": "20.12.8", "@types/shelljs": "0.8.15", @@ -42,7 +42,7 @@ "husky": "8.0.3", "jest": "29.7.0", "lint-staged": "14.0.1", - "nx": "22.7.0", + "nx": "23.0.1", "shelljs": "0.8.5", "stylelint": "catalog:", "ts-node": "10.9.2", diff --git a/packages/devextreme-scss/project.json b/packages/devextreme-scss/project.json index f7f65a12a457..9b1be44607cd 100644 --- a/packages/devextreme-scss/project.json +++ b/packages/devextreme-scss/project.json @@ -56,7 +56,8 @@ "{projectRoot}/icons/**/*", "{projectRoot}/images/**/*", "{projectRoot}/scss/**/*", - "{workspaceRoot}/packages/devextreme/package.json" + "{workspaceRoot}/packages/devextreme/package.json", + "{workspaceRoot}/pnpm-lock.yaml" ], "outputs": [ "{projectRoot}/scss/bundles", @@ -76,6 +77,7 @@ "{projectRoot}/images/**/*", "{projectRoot}/scss/**/*", "{workspaceRoot}/packages/devextreme/package.json", + "{workspaceRoot}/pnpm-lock.yaml", "{workspaceRoot}/packages/devextreme-themebuilder/src/data/clean-css-options.json" ], "outputs": [ @@ -99,7 +101,8 @@ "{projectRoot}/icons/**/*", "{projectRoot}/images/**/*", "{projectRoot}/scss/**/*", - "{workspaceRoot}/packages/devextreme/package.json" + "{workspaceRoot}/packages/devextreme/package.json", + "{workspaceRoot}/pnpm-lock.yaml" ], "outputs": [ "{projectRoot}/scss/bundles", @@ -125,6 +128,7 @@ "{projectRoot}/images/**/*", "{projectRoot}/scss/**/*", "{workspaceRoot}/packages/devextreme/package.json", + "{workspaceRoot}/pnpm-lock.yaml", "{workspaceRoot}/packages/devextreme-themebuilder/src/data/clean-css-options.json" ], "outputs": [ diff --git a/packages/devextreme-themebuilder/project.json b/packages/devextreme-themebuilder/project.json index bcd3d93719e5..597b4d342bf8 100644 --- a/packages/devextreme-themebuilder/project.json +++ b/packages/devextreme-themebuilder/project.json @@ -10,15 +10,27 @@ "script": "build" }, "inputs": [ - "{projectRoot}/src", - "{projectRoot}/tests" + "{projectRoot}/src/**/*", + "{projectRoot}/tests/**/*", + "{projectRoot}/package.json", + "{projectRoot}/README.md", + "{projectRoot}/tsconfig*.json", + "{workspaceRoot}/packages/devextreme/js/**/*", + "{workspaceRoot}/packages/devextreme/build/**/*", + "{workspaceRoot}/packages/devextreme/package.json", + "{workspaceRoot}/packages/devextreme-scss/build/**/*", + "{workspaceRoot}/packages/devextreme-scss/fonts/**/*", + "{workspaceRoot}/packages/devextreme-scss/icons/**/*", + "{workspaceRoot}/packages/devextreme-scss/images/**/*", + "{workspaceRoot}/packages/devextreme-scss/scss/**/*", + "{workspaceRoot}/pnpm-lock.yaml" ], "outputs": [ "{projectRoot}/dist", "{projectRoot}/src/data/metadata", - "{projectRoot}/src/data/scss", - "{workspaceRoot}/packages/devextreme-scss/scss/**/*.scss" - ] + "{projectRoot}/src/data/scss" + ], + "cache": true }, "test": { "executor": "nx:run-script", diff --git a/packages/devextreme/package.json b/packages/devextreme/package.json index e673274f1b1c..c7c41b5580c2 100644 --- a/packages/devextreme/package.json +++ b/packages/devextreme/package.json @@ -216,7 +216,7 @@ "clean": "gulp clean", "lint": "npm-run-all -p -c lint-js lint-ts lint-dts lint-texts", "lint-js": "eslint --quiet '**/*.js'", - "lint-ts": "eslint --quiet '**/*.{tsx,ts}' --ignore-pattern /testing/renovation/ --ignore-pattern '**/*.d.ts'", + "lint-ts": "eslint --quiet '**/*.{tsx,ts}' --ignore-pattern '**/*.d.ts'", "lint-dts": "eslint './js/**/*.d.ts'", "lint-staged": "lint-staged", "lint-texts": "node build/linters/validate-non-latin-symbols.js", diff --git a/packages/devextreme/project.json b/packages/devextreme/project.json index 94d7ff999bff..15c1e99ee100 100644 --- a/packages/devextreme/project.json +++ b/packages/devextreme/project.json @@ -51,6 +51,7 @@ ] }, "build:localization": { + "cache": true, "executor": "nx:run-commands", "options": { "commands": [ @@ -62,7 +63,8 @@ "inputs": [ "{projectRoot}/js/localization/messages/**/*.json", "{projectRoot}/build/gulp/localization-template.jst", - "{projectRoot}/build/gulp/generated_js.jst" + "{projectRoot}/build/gulp/generated_js.jst", + { "externalDependencies": ["cldrjs", "cldr-core", "devextreme-cldr-data"] } ], "outputs": [ "{projectRoot}/artifacts/js/localization", @@ -713,6 +715,7 @@ } }, "build:vectormap": { + "cache": true, "executor": "nx:run-commands", "options": { "commands": [ @@ -788,6 +791,7 @@ "outputs": ["{projectRoot}/artifacts/js/dx.aspnet.mvc.js"] }, "build:declarations": { + "cache": true, "executor": "nx:run-commands", "options": { "command": "gulp ts", @@ -795,7 +799,9 @@ }, "inputs": [ "{projectRoot}/ts/**/*.d.ts", - "{projectRoot}/build/gulp/ts.js" + "{projectRoot}/build/gulp/ts.js", + "{projectRoot}/build/gulp/modules_metadata.json", + "{workspaceRoot}/pnpm-lock.yaml" ], "outputs": [ "{projectRoot}/artifacts/ts" @@ -1112,6 +1118,7 @@ } }, "copy:vendor:js": { + "cache": true, "executor": "devextreme-nx-infra-plugin:copy-files", "options": { "files": [ @@ -1171,6 +1178,7 @@ ] }, "copy:vendor:css": { + "cache": true, "executor": "devextreme-nx-infra-plugin:copy-files", "options": { "files": [ @@ -1375,7 +1383,10 @@ "inputs": [ "internalPackageEnv", "default", - "test" + "!{projectRoot}/js/__internal/core/localization/cldr-data/**/*", + "!{projectRoot}/js/__internal/core/localization/default_messages.ts", + "test", + "{workspaceRoot}/pnpm-lock.yaml" ], "outputs": [ "{projectRoot}/artifacts", @@ -1383,6 +1394,7 @@ "{projectRoot}/js/__internal/core/localization/cldr-data", "{projectRoot}/js/__internal/core/localization/default_messages.ts" ], + "cache": true, "configurations": { "testing": { "env": { @@ -1418,12 +1430,14 @@ "inputs": [ "internalPackageEnv", "default", - "test" + "test", + "{workspaceRoot}/pnpm-lock.yaml" ], "outputs": [ "{projectRoot}/artifacts", "{projectRoot}/scss/bundles" - ] + ], + "cache": true }, "build:dev": { "executor": "nx:run-script", @@ -1439,14 +1453,18 @@ "env": "DEVEXTREME_TEST_CI" }, "default", - "test" + "!{projectRoot}/js/__internal/core/localization/cldr-data/**/*", + "!{projectRoot}/js/__internal/core/localization/default_messages.ts", + "test", + "{workspaceRoot}/pnpm-lock.yaml" ], "outputs": [ "{projectRoot}/artifacts", "{projectRoot}/build/bundle-templates/dx.custom.js", "{projectRoot}/js/__internal/core/localization/cldr-data", "{projectRoot}/js/__internal/core/localization/default_messages.ts" - ] + ], + "cache": true }, "dev": { "executor": "nx:run-script", @@ -1464,7 +1482,27 @@ }, "dependsOn": [ "build:dev" - ] + ], + "inputs": [ + "{projectRoot}/artifacts/transpiled/**/*", + "{projectRoot}/artifacts/css/dx.light.css", + "{projectRoot}/artifacts/css/dx.material.blue.light.css", + "{projectRoot}/artifacts/css/dx.fluent.blue.light.css", + "{projectRoot}/artifacts/css/dx-gantt.css", + "{projectRoot}/testing/content/**/*", + "{projectRoot}/testing/helpers/**/*", + "{projectRoot}/testing/tests/**/*", + "{projectRoot}/testing/systemjs-builder.js", + "{projectRoot}/build/gulp/systemjs.js", + "{workspaceRoot}/pnpm-lock.yaml" + ], + "outputs": [ + "{projectRoot}/artifacts/transpiled-systemjs", + "{projectRoot}/artifacts/transpiled-testing", + "{projectRoot}/artifacts/css-systemjs", + "{projectRoot}/artifacts/js-systemjs" + ], + "cache": true }, "lint-css": { "executor": "nx:run-script", @@ -1510,8 +1548,7 @@ }, "{projectRoot}/**/*.ts?(x)", "{projectRoot}/.eslint*", - "!{projectRoot}/**/*.d.ts", - "!{projectRoot}/testing/renovation/**/*" + "!{projectRoot}/**/*.d.ts" ] }, "test-jest": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 43fe47dbb1bf..f1580a9f8f5b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -216,14 +216,14 @@ importers: .: devDependencies: '@nx/devkit': - specifier: 22.7.0 - version: 22.7.0(nx@22.7.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(debug@4.4.3)) + specifier: 23.0.1 + version: 23.0.1(nx@23.0.1(@swc/core@1.15.30(@swc/helpers@0.5.21))) '@nx/jest': - specifier: 22.7.0 - version: 22.7.0(@babel/traverse@7.29.7)(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(nx@22.7.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(debug@4.4.3))(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3))(typescript@5.9.3) + specifier: 23.0.1 + version: 23.0.1(@babel/traverse@7.29.7)(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(jest@29.7.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)))(node-notifier@9.0.1)(nx@23.0.1(@swc/core@1.15.30(@swc/helpers@0.5.21)))(ts-jest@29.1.3(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(jest@29.7.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)))(typescript@5.9.3))(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3))(typescript@5.9.3) '@nx/js': - specifier: 22.7.0 - version: 22.7.0(@babel/traverse@7.29.7)(@swc/core@1.15.30(@swc/helpers@0.5.21))(nx@22.7.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(debug@4.4.3)) + specifier: 23.0.1 + version: 23.0.1(@babel/traverse@7.29.7)(@swc/core@1.15.30(@swc/helpers@0.5.21))(nx@23.0.1(@swc/core@1.15.30(@swc/helpers@0.5.21))) '@types/jest': specifier: 29.5.14 version: 29.5.14 @@ -255,8 +255,8 @@ importers: specifier: 14.0.1 version: 14.0.1(enquirer@2.4.1) nx: - specifier: 22.7.0 - version: 22.7.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(debug@4.4.3) + specifier: 23.0.1 + version: 23.0.1(@swc/core@1.15.30(@swc/helpers@0.5.21)) shelljs: specifier: 0.8.5 version: 0.8.5 @@ -314,7 +314,7 @@ importers: devDependencies: '@angular-devkit/build-angular': specifier: catalog:angular - version: 20.3.24(93bcf1abe06a4397c2b328a9ca680f9b) + version: 20.3.24(431b9a173f4030f6c919fbeca6cf3425) '@angular/cli': specifier: catalog:angular version: 20.3.24(@types/node@20.11.17)(chokidar@4.0.3) @@ -848,7 +848,7 @@ importers: devDependencies: '@storybook/addon-docs': specifier: 10.2.10 - version: 10.2.10(@types/react@18.3.28)(esbuild@0.28.1)(rollup@4.59.0)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.99.0)(terser@5.47.1)(yaml@2.8.3))(webpack@5.105.4(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) + version: 10.2.10(@types/react@18.3.28)(esbuild@0.28.1)(rollup@4.59.0)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.99.0)(terser@5.47.1)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) '@storybook/addon-links': specifier: 10.2.10 version: 10.2.10(react@18.3.1)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) @@ -987,7 +987,7 @@ importers: version: 9.39.4(jiti@2.6.1) eslint-config-devextreme: specifier: 'catalog:' - version: 1.1.11(77dee72e16455f879ff54a28c4ae5760) + version: 1.1.11(f19ad25a54c4777ebfabafe65d911a45) eslint-plugin-i18n: specifier: 'catalog:' version: 2.4.0 @@ -1059,7 +1059,7 @@ importers: version: 9.39.4(jiti@2.6.1) eslint-config-devextreme: specifier: 'catalog:' - version: 1.1.11(4b96114756c692b5f27fe0b434b0b820) + version: 1.1.11(3326f177fdbc23aca8abf2cbc262d15f) eslint-migration-utils: specifier: workspace:* version: link:../../packages/eslint-migration-utils @@ -1276,10 +1276,10 @@ importers: devDependencies: '@analogjs/vite-plugin-angular': specifier: 1.22.5 - version: 1.22.5(@angular-devkit/build-angular@20.3.24(427bd81b59e513cb902108a8cb2be6fd))(@angular/build@20.3.24(9048a156accbad9f5e06c1d521ff0122)) + version: 1.22.5(@angular-devkit/build-angular@20.3.24(1e67ca4edf7272b255b5ed35b6968c9b))(@angular/build@20.3.24(c8aff5124cbf69e3d3c090a98aa44d32)) '@angular-devkit/build-angular': specifier: catalog:angular - version: 20.3.24(427bd81b59e513cb902108a8cb2be6fd) + version: 20.3.24(1e67ca4edf7272b255b5ed35b6968c9b) '@angular/cli': specifier: catalog:angular version: 20.3.24(@types/node@25.9.3)(chokidar@4.0.3) @@ -1900,7 +1900,7 @@ importers: version: 9.39.4(jiti@2.6.1) eslint-config-devextreme: specifier: 'catalog:' - version: 1.1.11(a0ddd35370eff9a9db851227fa5860e1) + version: 1.1.11(64f1ac9f0cad481ebbdffba01b0af57a) eslint-migration-utils: specifier: workspace:* version: link:../eslint-migration-utils @@ -3248,12 +3248,6 @@ packages: peerDependencies: '@babel/core': ^7.29.1 - '@babel/plugin-proposal-decorators@7.29.0': - resolution: {integrity: sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.29.1 - '@babel/plugin-proposal-decorators@7.29.7': resolution: {integrity: sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==} engines: {node: '>=6.9.0'} @@ -3287,12 +3281,6 @@ packages: peerDependencies: '@babel/core': ^7.29.1 - '@babel/plugin-syntax-decorators@7.28.6': - resolution: {integrity: sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.29.1 - '@babel/plugin-syntax-decorators@7.29.7': resolution: {integrity: sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==} engines: {node: '>=6.9.0'} @@ -3398,12 +3386,6 @@ packages: peerDependencies: '@babel/core': ^7.29.1 - '@babel/plugin-syntax-typescript@7.28.6': - resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.29.1 - '@babel/plugin-syntax-typescript@7.29.7': resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==} engines: {node: '>=6.9.0'} @@ -4058,12 +4040,6 @@ packages: peerDependencies: '@babel/core': ^7.29.1 - '@babel/plugin-transform-typescript@7.28.6': - resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.29.1 - '@babel/plugin-transform-typescript@7.29.7': resolution: {integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==} engines: {node: '>=6.9.0'} @@ -4153,12 +4129,6 @@ packages: peerDependencies: '@babel/core': ^7.29.1 - '@babel/preset-typescript@7.28.5': - resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.29.1 - '@babel/preset-typescript@7.29.7': resolution: {integrity: sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ==} engines: {node: '>=6.9.0'} @@ -5371,12 +5341,6 @@ packages: '@napi-rs/wasm-runtime@0.2.4': resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} - '@napi-rs/wasm-runtime@1.1.4': - resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 - '@napi-rs/wasm-runtime@1.1.5': resolution: {integrity: sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==} peerDependencies: @@ -5459,78 +5423,89 @@ packages: resolution: {integrity: sha512-mGUWr1uMnf0le2TwfOZY4SFxZGXGfm4Jtay/nwAa2FLNAKXUoUwaGwBMNH36UHPtinWfTSJ3nqFQr0091CxVGg==} engines: {node: ^20.17.0 || >=22.9.0} - '@nx/devkit@22.7.0': - resolution: {integrity: sha512-AI6t94k37lIv5XL/eesyYFBY4x2IzgseLmf0DiycHLGfAJWsvUlTzOD++t4vek/W80YQSBKRUbLg7r6wo56d0g==} + '@nx/devkit@23.0.1': + resolution: {integrity: sha512-A/chuNS1RZwdbRe/Nf+w0qtPEFHLcZNPzo8Abw5mBxyXmy9yvHZpuZuqDbt/lASFU+TEb74xExL1AnKWwqpOIg==} peerDependencies: - nx: '>= 21 <= 23 || ^22.0.0-0' + nx: '>= 22 <= 24 || ^23.0.0-0' - '@nx/jest@22.7.0': - resolution: {integrity: sha512-r30QIXb0QdUYvueWfOHrB66e544mj6q7n7kahvkyk1PrJsqhAGKkJFp+igpRNyeDcKAFLEHcpdbejhfKLTTKFw==} + '@nx/jest@23.0.1': + resolution: {integrity: sha512-F5lhjttIExH8hEJ09cqv3Ac1o8GyGTHpD1OLLWnNAYaN/CPpbI16Ix8VLY/fuwJYf6wcm1/vBL3knbv6LABODA==} + peerDependencies: + jest: ^29.0.0 || ^30.0.0 + ts-jest: ^29.0.0 + peerDependenciesMeta: + jest: + optional: true + ts-jest: + optional: true - '@nx/js@22.7.0': - resolution: {integrity: sha512-/ZreqwA1McpGn4kRLMnt9+UTIqCLlZp/OzVes1YOcIfzZ6LYQtL/aOVaYkpv/IB/9ojT0qHpAvLHnoHFzQtpCQ==} + '@nx/js@23.0.1': + resolution: {integrity: sha512-H8jw1gk7hA8PCXBFC9ocTBpzuXOTvVQ1gA+OlEBMyKqmUaOLNm7yuoOYozwvLsLlCVY27onohSIS8xIdAR/Zow==} peerDependencies: + '@swc/cli': '>=0.6.0 <0.9.0' verdaccio: ^6.0.5 peerDependenciesMeta: + '@swc/cli': + optional: true verdaccio: optional: true - '@nx/nx-darwin-arm64@22.7.0': - resolution: {integrity: sha512-WczfOkv7bVSi0i4bLFmMLqdcRllJr+CLO0ibVapGHxdaOkNPCgSDxBVYC/0eg8yyMsPXQu8daaTvOlODNJw9GQ==} + '@nx/nx-darwin-arm64@23.0.1': + resolution: {integrity: sha512-gQJvgPnbI91DBe23Th2CqD9R/S54cPS3C1f0DhyQ8YEf9rR7EEc+sVGjhgVxlhfOk2W7I1Gy6EkXwpN4aDoW4w==} cpu: [arm64] os: [darwin] - '@nx/nx-darwin-x64@22.7.0': - resolution: {integrity: sha512-KGBq43lJbDjIpIAU5/sJFJQokGgCu/0KVe5pO2u9hMO2A9VaVtud5bGbDpkBiWoYBK9BLM3YpbG/RB74unxWxg==} + '@nx/nx-darwin-x64@23.0.1': + resolution: {integrity: sha512-e/lvzHKN6gpuD7MqEtfH1fOfnR75E55ytYNt8jaRxKI6EvpCq+Q3MunDuh9GQYAkqDrUqE7AhHrHc+eKATVEHw==} cpu: [x64] os: [darwin] - '@nx/nx-freebsd-x64@22.7.0': - resolution: {integrity: sha512-DKOHaFC7Ko4+nlin/us8FEfBBgnpifZie4LELgo2nI044GlazGHJArtRSdLq3qKfWXqtieOKO3R4YV09Ax37Rg==} + '@nx/nx-freebsd-x64@23.0.1': + resolution: {integrity: sha512-f582OhSYN9qHpA9Ox9qnr3kZSZ7gQHs7crmBUutmbXmZQB2TDS/TlhvYSNnxudpwHR/tuWGi2IOQqa7zGOZj1Q==} cpu: [x64] os: [freebsd] - '@nx/nx-linux-arm-gnueabihf@22.7.0': - resolution: {integrity: sha512-LaZSE4FGk8KFyKF8grlhcoBWJabxkn7moO2QfULm3i1GY1AYu7bbxVZG42cAdGENqliCB8V2ARBWrMKq6mqW2g==} + '@nx/nx-linux-arm-gnueabihf@23.0.1': + resolution: {integrity: sha512-VjhqPc6E7aiI0e+lowrkVbdyulsmP9fgMdcX1mCzXCEu/XZDcUbZ5qveR964cMhvm5qKn0ILJtJOUqZgmOT3Xg==} cpu: [arm] os: [linux] - '@nx/nx-linux-arm64-gnu@22.7.0': - resolution: {integrity: sha512-g0GJ2avp0wuxHCQ2fjlMVjez4TWBtfj0jLCzO2I9M3B6ui0V+9Wh66DO5pLwyQFGbxODgwz9vwrEEZKlbDrchA==} + '@nx/nx-linux-arm64-gnu@23.0.1': + resolution: {integrity: sha512-zX2JdHQejZWB3DRgNsh77qOVYaSSjSLuBP2qIqc7EWVlCUnR7Aj3e65PTIps4LxMMmUp4twZA2ezS0rtyK2A4w==} cpu: [arm64] os: [linux] libc: [glibc] - '@nx/nx-linux-arm64-musl@22.7.0': - resolution: {integrity: sha512-xb72G+LrhZNrWXOAd6aoDQmhzO5GKq6dkAYqhtOTAklCwIo5/4dkvqvFEe5RIQ7pk6RzdD2cUZMTJTr99rSGTg==} + '@nx/nx-linux-arm64-musl@23.0.1': + resolution: {integrity: sha512-9lyhxRNBgNYwHt6paq0OLzoKNoEGF5LnNW2YYrgFY8Cjtsg/Q4pcfZ1vB5o9FX9OmUgUQs3t2d4tU8YDukRUWg==} cpu: [arm64] os: [linux] libc: [musl] - '@nx/nx-linux-x64-gnu@22.7.0': - resolution: {integrity: sha512-win7DkwxThhGWJlJ0s9HLxPzam/wz5MbQhKTQmLehHz8mgFJOu6MqzrccDxuT1E93dODedtxJuAyW4c80mpp4A==} + '@nx/nx-linux-x64-gnu@23.0.1': + resolution: {integrity: sha512-kVszY2xRyyrCXgdCdM1qG1WUhDjNPZxtdWq86a0TyIRJjfJTP9NHqpyhmvj9c2RdZxKVWHotx6fBJzY6Vn2ZrA==} cpu: [x64] os: [linux] libc: [glibc] - '@nx/nx-linux-x64-musl@22.7.0': - resolution: {integrity: sha512-lU7yT+CsZFPCH3dZAVynhyJxa5w8rwCVtbDYbBa703DkNgb8/CQAthyE7NN2fjfzeQ0YpXoV3O/iX6sVY1sdjA==} + '@nx/nx-linux-x64-musl@23.0.1': + resolution: {integrity: sha512-co71K2n4zcS1SYR8EBRlCvIko7M1YycO2tZL0nrCrga87AF5dzCwx+wEclpyCR/4tNOY3FrACk4gIkVskh3CdA==} cpu: [x64] os: [linux] libc: [musl] - '@nx/nx-win32-arm64-msvc@22.7.0': - resolution: {integrity: sha512-e8P0ZSPJpaAjiIitcJAjdSCeCxAMjt5OqM6kZYUiwpHVnB31YAEe8feNvQcfvhyMjx/AXFQlBztHh8kANvdlLw==} + '@nx/nx-win32-arm64-msvc@23.0.1': + resolution: {integrity: sha512-7oma7iy5fbnn+x5AP7SFGMuleAA2R5RZm26dn+faikyQ4PXjoRAikWJJNiOWAeCA0BaMAeVedI6fJeAsVeDUKg==} cpu: [arm64] os: [win32] - '@nx/nx-win32-x64-msvc@22.7.0': - resolution: {integrity: sha512-NWLezNDRoZpqs8DudLCGBj214fIIG3cDhkez7eKW/i+s27O3laVCO9QgaFi07P+RSnrnZVJPfOISkE0Ql7gdAw==} + '@nx/nx-win32-x64-msvc@23.0.1': + resolution: {integrity: sha512-TE/wvBa2cpkVXmk/AXUQAneong4JReS2hyNpAUONKG1yXU7TDKe0wvn1xQXxAbyspudT9NuCnVtpVuEkRz8S+Q==} cpu: [x64] os: [win32] - '@nx/workspace@22.7.0': - resolution: {integrity: sha512-ZhZYOlyPt1kJBvuC8MbTVTkDJSiEnr7Fu0luTGsbVLQO+2bHjIJml5HT1vCNpn39VH4Y4ZLgclHOt6P+KJH6/g==} + '@nx/workspace@23.0.1': + resolution: {integrity: sha512-VdbvMTSEzp3ONZwiy83XEu8ktykC8aEI7M4mqKs5RNKHBFg3jtao2NFo3wDqHqnn1q9Fdaj8EbyUn08BUR5L3w==} '@one-ini/wasm@0.1.1': resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} @@ -5960,19 +5935,15 @@ packages: resolution: {integrity: sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==} engines: {node: '>=20.0.0'} - '@phenomnomnominal/tsquery@6.1.4': - resolution: {integrity: sha512-3tHlGy/fxjJCHqIV8nelAzbRTNkCUY+k7lqBGKNuQz99H2OKGRt6oU+U2SZs6LYrbOe8mxMFl6kq6gzHapFRkw==} + '@phenomnomnominal/tsquery@6.2.0': + resolution: {integrity: sha512-Vo9nkhfZxDB/sBiqIY3pjDC4mOSyure+AFlEW5hcy/tRE82MqCXjRN4InnVNMldinRt0dLYqg4HAU2XPq5e1LA==} peerDependencies: - typescript: ^3 || ^4 || ^5 + typescript: '>3.0.0' '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@pkgr/core@0.2.9': - resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@pkgr/core@0.3.6': resolution: {integrity: sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==} engines: {node: ^14.18.0 || >=16.0.0} @@ -6747,9 +6718,6 @@ packages: resolution: {integrity: sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==} engines: {node: ^20.17.0 || >=22.9.0} - '@tybys/wasm-util@0.10.1': - resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} - '@tybys/wasm-util@0.10.2': resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} @@ -7291,10 +7259,6 @@ packages: resolution: {integrity: sha512-f1WO2Lx8a9t8DARmcWAUPJbu0G20bJlj8L4z72K00TMeJAoyLr/tHhI/pzYBLrR4dXWkcxO1cWYZEOX8DKHTqA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@ungap/structured-clone@1.3.0': - resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - deprecated: Potential CWE-502 - Update to 1.3.1 or higher - '@ungap/structured-clone@1.3.1': resolution: {integrity: sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==} @@ -7785,10 +7749,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - address@1.2.2: - resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} - engines: {node: '>= 10.0.0'} - address@2.0.3: resolution: {integrity: sha512-XNAb/a6TCqou+TufU8/u11HCu9x1gYvOoxLwtlXgIqmkrYQADVv6ljyW2zwiPhHz9R1gItAWpuDrdJMmrOBFEA==} engines: {node: '>= 16.0.0'} @@ -9665,9 +9625,9 @@ packages: detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - detect-port@1.6.1: - resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} - engines: {node: '>= 4.0.0'} + detect-port@2.1.0: + resolution: {integrity: sha512-epZuWb/6Q62L+nDHJc/hQAqf8pylsqgk3BpZXVBx1CDnr3nkrVNn73Uu1rXcFzkNcc+hkP3whuOg7JZYaQB65Q==} + engines: {node: '>= 16.0.0'} hasBin: true detective-amd@5.0.2: @@ -11326,10 +11286,6 @@ packages: resolution: {integrity: sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==} engines: {node: '>=20'} - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - hasown@2.0.3: resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} engines: {node: '>= 0.4'} @@ -12641,9 +12597,6 @@ packages: engines: {node: '>=6'} hasBin: true - jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} @@ -13856,8 +13809,8 @@ packages: nwsapi@2.2.23: resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} - nx@22.7.0: - resolution: {integrity: sha512-zjySvwwAfexdKN8utZlq5IkoRZOki/gB1KTrY7OkMjSehuiimD6A7DTySiOUkPPMDwgqxMr+eOjIIbC1uWbp8Q==} + nx@23.0.1: + resolution: {integrity: sha512-HnK0Ke8FcPeVQffYm1oyzkLNn7khrI8SeDeC3iyLhw/UEMCB24hjI5JSs6Amlyeb0/GaeiuQuts8NkQKd/NpGA==} hasBin: true peerDependencies: '@swc-node/register': ^1.11.1 @@ -14001,10 +13954,6 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - ora@5.3.0: - resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} - engines: {node: '>=10'} - ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} @@ -16151,10 +16100,6 @@ packages: resolution: {integrity: sha512-gAQ9qrUN/UCypHtGFbbe7Rc/f9bzO88IwrG8TDo/aMKAApKyD6E3W4Cm0EfhfBb6Z6SKt59tTCTfD+n1xmAvMg==} engines: {node: '>=16.0.0'} - synckit@0.11.12: - resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} - engines: {node: ^14.18.0 || >=16.0.0} - synckit@0.11.13: resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==} engines: {node: ^14.18.0 || >=16.0.0} @@ -16377,10 +16322,6 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} - tinyglobby@0.2.16: - resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} - engines: {node: '>=12.0.0'} - tinyglobby@0.2.17: resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} @@ -17391,6 +17332,11 @@ packages: engines: {node: '>= 8'} hasBin: true + which@3.0.1: + resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + which@6.0.1: resolution: {integrity: sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==} engines: {node: ^20.17.0 || >=22.9.0} @@ -17527,6 +17473,11 @@ packages: engines: {node: '>= 14.6'} hasBin: true + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + engines: {node: '>= 14.6'} + hasBin: true + yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -17791,13 +17742,13 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@analogjs/vite-plugin-angular@1.22.5(@angular-devkit/build-angular@20.3.24(427bd81b59e513cb902108a8cb2be6fd))(@angular/build@20.3.24(9048a156accbad9f5e06c1d521ff0122))': + '@analogjs/vite-plugin-angular@1.22.5(@angular-devkit/build-angular@20.3.24(1e67ca4edf7272b255b5ed35b6968c9b))(@angular/build@20.3.24(c8aff5124cbf69e3d3c090a98aa44d32))': dependencies: ts-morph: 21.0.1 vfile: 6.0.3 optionalDependencies: - '@angular-devkit/build-angular': 20.3.24(427bd81b59e513cb902108a8cb2be6fd) - '@angular/build': 20.3.24(9048a156accbad9f5e06c1d521ff0122) + '@angular-devkit/build-angular': 20.3.24(1e67ca4edf7272b255b5ed35b6968c9b) + '@angular/build': 20.3.24(c8aff5124cbf69e3d3c090a98aa44d32) '@angular-devkit/architect@0.2003.24(chokidar@4.0.3)': dependencies: @@ -17813,13 +17764,13 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.3.24(427bd81b59e513cb902108a8cb2be6fd)': + '@angular-devkit/build-angular@20.3.24(1e67ca4edf7272b255b5ed35b6968c9b)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2003.24(chokidar@4.0.3) '@angular-devkit/build-webpack': 0.2003.24(chokidar@4.0.3)(webpack-dev-server@5.2.5(tslib@2.8.1)(webpack@5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)))(webpack@5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) '@angular-devkit/core': 20.3.24(chokidar@4.0.3) - '@angular/build': 20.3.24(43efe9d69c9515fbaa24871cea66e6ab) + '@angular/build': 20.3.24(dff467f3c5ac6bd6598d609374f5cb01) '@angular/compiler-cli': 20.3.25(@angular/compiler@20.3.25)(typescript@5.8.3) '@babel/core': 7.29.7 '@babel/generator': 7.28.3 @@ -17876,7 +17827,7 @@ snapshots: '@angular/platform-browser': 20.3.25(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': 20.3.25(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.3.25)(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.25(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) esbuild: 0.28.1 - jest: 30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.8.3)) + jest: 30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)) jest-environment-jsdom: 29.7.0 karma: 6.4.4 ng-packagr: 20.3.2(@angular/compiler-cli@20.3.25(@angular/compiler@20.3.25)(typescript@5.8.3))(tslib@2.8.1)(typescript@5.8.3) @@ -17902,13 +17853,13 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-angular@20.3.24(93bcf1abe06a4397c2b328a9ca680f9b)': + '@angular-devkit/build-angular@20.3.24(431b9a173f4030f6c919fbeca6cf3425)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2003.24(chokidar@4.0.3) '@angular-devkit/build-webpack': 0.2003.24(chokidar@4.0.3)(webpack-dev-server@5.2.5(tslib@2.8.1)(webpack@5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)))(webpack@5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) '@angular-devkit/core': 20.3.24(chokidar@4.0.3) - '@angular/build': 20.3.24(7032a54a8b2ec75d926af08aacc8ae50) + '@angular/build': 20.3.24(2502fcf62d5209d59c4b0fd265c47a17) '@angular/compiler-cli': 20.3.25(@angular/compiler@20.3.25)(typescript@5.8.3) '@babel/core': 7.29.7 '@babel/generator': 7.28.3 @@ -18167,7 +18118,7 @@ snapshots: '@angular/core': 21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - '@angular/build@20.3.24(43efe9d69c9515fbaa24871cea66e6ab)': + '@angular/build@20.3.24(2502fcf62d5209d59c4b0fd265c47a17)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2003.24(chokidar@4.0.3) @@ -18176,8 +18127,8 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-split-export-declaration': 7.24.7 - '@inquirer/confirm': 5.1.14(@types/node@25.9.3) - '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.3)) + '@inquirer/confirm': 5.1.14(@types/node@20.11.17) + '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.3.5(@types/node@20.11.17)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.3)) beasties: 0.3.5 browserslist: 4.28.2 esbuild: 0.28.1 @@ -18197,7 +18148,7 @@ snapshots: tinyglobby: 0.2.14 tslib: 2.8.1 typescript: 5.8.3 - vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.3) + vite: 7.3.5(@types/node@20.11.17)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.43.1)(yaml@2.9.0) watchpack: 2.4.4 optionalDependencies: '@angular/core': 20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1) @@ -18221,7 +18172,7 @@ snapshots: - tsx - yaml - '@angular/build@20.3.24(7032a54a8b2ec75d926af08aacc8ae50)': + '@angular/build@20.3.24(c8aff5124cbf69e3d3c090a98aa44d32)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2003.24(chokidar@4.0.3) @@ -18230,8 +18181,8 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-split-export-declaration': 7.24.7 - '@inquirer/confirm': 5.1.14(@types/node@20.11.17) - '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.3.5(@types/node@20.11.17)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.3)) + '@inquirer/confirm': 5.1.14(@types/node@25.9.3) + '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.47.1)(yaml@2.9.0)) beasties: 0.3.5 browserslist: 4.28.2 esbuild: 0.28.1 @@ -18251,14 +18202,14 @@ snapshots: tinyglobby: 0.2.14 tslib: 2.8.1 typescript: 5.8.3 - vite: 7.3.5(@types/node@20.11.17)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.3) + vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.47.1)(yaml@2.9.0) watchpack: 2.4.4 optionalDependencies: '@angular/core': 20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/platform-browser': 20.3.25(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': 20.3.25(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.3.25)(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.25(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) karma: 6.4.4 - less: 4.4.0 + less: 4.6.6 lmdb: 3.4.2 ng-packagr: 20.3.2(@angular/compiler-cli@20.3.25(@angular/compiler@20.3.25)(typescript@5.8.3))(tslib@2.8.1)(typescript@5.8.3) postcss: 8.5.10 @@ -18274,8 +18225,9 @@ snapshots: - terser - tsx - yaml + optional: true - '@angular/build@20.3.24(9048a156accbad9f5e06c1d521ff0122)': + '@angular/build@20.3.24(dff467f3c5ac6bd6598d609374f5cb01)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2003.24(chokidar@4.0.3) @@ -18285,7 +18237,7 @@ snapshots: '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-split-export-declaration': 7.24.7 '@inquirer/confirm': 5.1.14(@types/node@25.9.3) - '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.47.1)(yaml@2.8.3)) + '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.43.1)(yaml@2.9.0)) beasties: 0.3.5 browserslist: 4.28.2 esbuild: 0.28.1 @@ -18305,14 +18257,14 @@ snapshots: tinyglobby: 0.2.14 tslib: 2.8.1 typescript: 5.8.3 - vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.47.1)(yaml@2.8.3) + vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.43.1)(yaml@2.9.0) watchpack: 2.4.4 optionalDependencies: '@angular/core': 20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/platform-browser': 20.3.25(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-server': 20.3.25(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.3.25)(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.25(@angular/common@20.3.25(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.25(@angular/compiler@20.3.25)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) karma: 6.4.4 - less: 4.6.6 + less: 4.4.0 lmdb: 3.4.2 ng-packagr: 20.3.2(@angular/compiler-cli@20.3.25(@angular/compiler@20.3.25)(typescript@5.8.3))(tslib@2.8.1)(typescript@5.8.3) postcss: 8.5.10 @@ -18328,7 +18280,6 @@ snapshots: - terser - tsx - yaml - optional: true '@angular/build@21.2.13(fd22293895459d508e8b4ecd8f65001d)': dependencies: @@ -19038,15 +18989,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-decorators@7.29.0(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-decorators': 7.28.6(@babel/core@7.29.7) - transitivePeerDependencies: - - supports-color - '@babel/plugin-proposal-decorators@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -19080,11 +19022,6 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-decorators@7.28.6(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-decorators@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -19180,11 +19117,6 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -19927,17 +19859,6 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.7) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -20250,17 +20171,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.28.5(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.7) - '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.7) - '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.7) - transitivePeerDependencies: - - supports-color - '@babel/preset-typescript@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -21316,45 +21226,6 @@ snapshots: - ts-node optional: true - '@jest/core@30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.8.3))': - dependencies: - '@jest/console': 30.2.0 - '@jest/pattern': 30.0.1 - '@jest/reporters': 30.2.0(node-notifier@9.0.1) - '@jest/test-result': 30.2.0 - '@jest/transform': 30.2.0 - '@jest/types': 30.2.0 - '@types/node': 20.19.37 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 4.4.0 - exit-x: 0.2.2 - graceful-fs: 4.2.11 - jest-changed-files: 30.2.0 - jest-config: 30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.8.3)) - jest-haste-map: 30.2.0 - jest-message-util: 30.2.0 - jest-regex-util: 30.0.1 - jest-resolve: 30.2.0 - jest-resolve-dependencies: 30.2.0 - jest-runner: 30.2.0 - jest-runtime: 30.2.0 - jest-snapshot: 30.2.0 - jest-util: 30.2.0 - jest-validate: 30.2.0 - jest-watcher: 30.2.0 - micromatch: 4.0.8 - pretty-format: 30.2.0 - slash: 3.0.0 - optionalDependencies: - node-notifier: 9.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - esbuild-register - - supports-color - - ts-node - optional: true - '@jest/core@30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3))': dependencies: '@jest/console': 30.2.0 @@ -21394,123 +21265,6 @@ snapshots: - ts-node optional: true - '@jest/core@30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.8.3))': - dependencies: - '@jest/console': 30.2.0 - '@jest/pattern': 30.0.1 - '@jest/reporters': 30.2.0(node-notifier@9.0.1) - '@jest/test-result': 30.2.0 - '@jest/transform': 30.2.0 - '@jest/types': 30.2.0 - '@types/node': 20.19.37 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 4.4.0 - exit-x: 0.2.2 - graceful-fs: 4.2.11 - jest-changed-files: 30.2.0 - jest-config: 30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.8.3)) - jest-haste-map: 30.2.0 - jest-message-util: 30.2.0 - jest-regex-util: 30.0.1 - jest-resolve: 30.2.0 - jest-resolve-dependencies: 30.2.0 - jest-runner: 30.2.0 - jest-runtime: 30.2.0 - jest-snapshot: 30.2.0 - jest-util: 30.2.0 - jest-validate: 30.2.0 - jest-watcher: 30.2.0 - micromatch: 4.0.8 - pretty-format: 30.2.0 - slash: 3.0.0 - optionalDependencies: - node-notifier: 9.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - esbuild-register - - supports-color - - ts-node - optional: true - - '@jest/core@30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.8.3))': - dependencies: - '@jest/console': 30.2.0 - '@jest/pattern': 30.0.1 - '@jest/reporters': 30.2.0(node-notifier@9.0.1) - '@jest/test-result': 30.2.0 - '@jest/transform': 30.2.0 - '@jest/types': 30.2.0 - '@types/node': 20.19.37 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 4.4.0 - exit-x: 0.2.2 - graceful-fs: 4.2.11 - jest-changed-files: 30.2.0 - jest-config: 30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.8.3)) - jest-haste-map: 30.2.0 - jest-message-util: 30.2.0 - jest-regex-util: 30.0.1 - jest-resolve: 30.2.0 - jest-resolve-dependencies: 30.2.0 - jest-runner: 30.2.0 - jest-runtime: 30.2.0 - jest-snapshot: 30.2.0 - jest-util: 30.2.0 - jest-validate: 30.2.0 - jest-watcher: 30.2.0 - micromatch: 4.0.8 - pretty-format: 30.2.0 - slash: 3.0.0 - optionalDependencies: - node-notifier: 9.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - esbuild-register - - supports-color - - ts-node - optional: true - - '@jest/core@30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.9.3))': - dependencies: - '@jest/console': 30.2.0 - '@jest/pattern': 30.0.1 - '@jest/reporters': 30.2.0(node-notifier@9.0.1) - '@jest/test-result': 30.2.0 - '@jest/transform': 30.2.0 - '@jest/types': 30.2.0 - '@types/node': 20.19.37 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 4.4.0 - exit-x: 0.2.2 - graceful-fs: 4.2.11 - jest-changed-files: 30.2.0 - jest-config: 30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.9.3)) - jest-haste-map: 30.2.0 - jest-message-util: 30.2.0 - jest-regex-util: 30.0.1 - jest-resolve: 30.2.0 - jest-resolve-dependencies: 30.2.0 - jest-runner: 30.2.0 - jest-runtime: 30.2.0 - jest-snapshot: 30.2.0 - jest-util: 30.2.0 - jest-validate: 30.2.0 - jest-watcher: 30.2.0 - micromatch: 4.0.8 - pretty-format: 30.2.0 - slash: 3.0.0 - optionalDependencies: - node-notifier: 9.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - esbuild-register - - supports-color - - ts-node - optional: true - '@jest/diff-sequences@30.0.1': {} '@jest/diff-sequences@30.3.0': {} @@ -22312,13 +22066,6 @@ snapshots: '@emnapi/runtime': 1.10.0 '@tybys/wasm-util': 0.9.0 - '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': - dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@tybys/wasm-util': 0.10.1 - optional: true - '@napi-rs/wasm-runtime@1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: '@emnapi/core': 1.10.0 @@ -22420,37 +22167,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@nx/devkit@22.7.0(nx@22.7.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(debug@4.4.3))': + '@nx/devkit@23.0.1(nx@23.0.1(@swc/core@1.15.30(@swc/helpers@0.5.21)))': dependencies: '@zkochan/js-yaml': 0.0.7 ejs: 5.0.1 enquirer: 2.3.6 - minimatch: 10.2.4 - nx: 22.7.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(debug@4.4.3) - semver: 7.7.4 + minimatch: 10.2.5 + nx: 23.0.1(@swc/core@1.15.30(@swc/helpers@0.5.21)) + semver: 7.8.4 tslib: 2.8.1 yargs-parser: 21.1.1 - '@nx/jest@22.7.0(@babel/traverse@7.29.7)(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(nx@22.7.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(debug@4.4.3))(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3))(typescript@5.9.3)': + '@nx/jest@23.0.1(@babel/traverse@7.29.7)(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(jest@29.7.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)))(node-notifier@9.0.1)(nx@23.0.1(@swc/core@1.15.30(@swc/helpers@0.5.21)))(ts-jest@29.1.3(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(jest@29.7.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)))(typescript@5.9.3))(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3))(typescript@5.9.3)': dependencies: '@jest/reporters': 30.3.0(node-notifier@9.0.1) '@jest/test-result': 30.3.0 - '@nx/devkit': 22.7.0(nx@22.7.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(debug@4.4.3)) - '@nx/js': 22.7.0(@babel/traverse@7.29.7)(@swc/core@1.15.30(@swc/helpers@0.5.21))(nx@22.7.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(debug@4.4.3)) - '@phenomnomnominal/tsquery': 6.1.4(typescript@5.9.3) + '@nx/devkit': 23.0.1(nx@23.0.1(@swc/core@1.15.30(@swc/helpers@0.5.21))) + '@nx/js': 23.0.1(@babel/traverse@7.29.7)(@swc/core@1.15.30(@swc/helpers@0.5.21))(nx@23.0.1(@swc/core@1.15.30(@swc/helpers@0.5.21))) + '@phenomnomnominal/tsquery': 6.2.0(typescript@5.9.3) identity-obj-proxy: 3.0.0 jest-config: 30.3.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)) jest-resolve: 30.3.0 jest-util: 30.3.0 - minimatch: 10.2.4 + minimatch: 10.2.5 picocolors: 1.1.1 resolve.exports: 2.0.3 - semver: 7.7.4 + semver: 7.8.4 tslib: 2.8.1 yargs-parser: 21.1.1 + optionalDependencies: + jest: 29.7.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)) + ts-jest: 29.1.3(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(jest@29.7.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)))(typescript@5.9.3) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' + - '@swc/cli' - '@swc/core' - '@types/node' - babel-plugin-macros @@ -22463,33 +22214,33 @@ snapshots: - typescript - verdaccio - '@nx/js@22.7.0(@babel/traverse@7.29.7)(@swc/core@1.15.30(@swc/helpers@0.5.21))(nx@22.7.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(debug@4.4.3))': + '@nx/js@23.0.1(@babel/traverse@7.29.7)(@swc/core@1.15.30(@swc/helpers@0.5.21))(nx@23.0.1(@swc/core@1.15.30(@swc/helpers@0.5.21)))': dependencies: '@babel/core': 7.29.7 - '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.7) - '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.7) - '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.7) - '@babel/preset-env': 7.29.2(@babel/core@7.29.7) - '@babel/preset-typescript': 7.28.5(@babel/core@7.29.7) + '@babel/plugin-proposal-decorators': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7) + '@babel/preset-env': 7.29.7(@babel/core@7.29.7) + '@babel/preset-typescript': 7.29.7(@babel/core@7.29.7) '@babel/runtime': 7.29.2 - '@nx/devkit': 22.7.0(nx@22.7.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(debug@4.4.3)) - '@nx/workspace': 22.7.0(@swc/core@1.15.30(@swc/helpers@0.5.21)) + '@nx/devkit': 23.0.1(nx@23.0.1(@swc/core@1.15.30(@swc/helpers@0.5.21))) + '@nx/workspace': 23.0.1(@swc/core@1.15.30(@swc/helpers@0.5.21)) '@zkochan/js-yaml': 0.0.7 babel-plugin-const-enum: 1.2.0(@babel/core@7.29.7) babel-plugin-macros: 3.1.0 babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.29.7)(@babel/traverse@7.29.7) chalk: 4.1.2 columnify: 1.6.0 - detect-port: 1.6.1 - ignore: 5.3.2 + detect-port: 2.1.0 + ignore: 7.0.5 js-tokens: 4.0.0 - jsonc-parser: 3.2.0 + jsonc-parser: 3.3.1 npm-run-path: 4.0.1 picocolors: 1.1.1 picomatch: 4.0.4 - semver: 7.7.4 + semver: 7.8.4 source-map-support: 0.5.19 - tinyglobby: 0.2.16 + tinyglobby: 0.2.17 tslib: 2.8.1 transitivePeerDependencies: - '@babel/traverse' @@ -22499,43 +22250,43 @@ snapshots: - nx - supports-color - '@nx/nx-darwin-arm64@22.7.0': + '@nx/nx-darwin-arm64@23.0.1': optional: true - '@nx/nx-darwin-x64@22.7.0': + '@nx/nx-darwin-x64@23.0.1': optional: true - '@nx/nx-freebsd-x64@22.7.0': + '@nx/nx-freebsd-x64@23.0.1': optional: true - '@nx/nx-linux-arm-gnueabihf@22.7.0': + '@nx/nx-linux-arm-gnueabihf@23.0.1': optional: true - '@nx/nx-linux-arm64-gnu@22.7.0': + '@nx/nx-linux-arm64-gnu@23.0.1': optional: true - '@nx/nx-linux-arm64-musl@22.7.0': + '@nx/nx-linux-arm64-musl@23.0.1': optional: true - '@nx/nx-linux-x64-gnu@22.7.0': + '@nx/nx-linux-x64-gnu@23.0.1': optional: true - '@nx/nx-linux-x64-musl@22.7.0': + '@nx/nx-linux-x64-musl@23.0.1': optional: true - '@nx/nx-win32-arm64-msvc@22.7.0': + '@nx/nx-win32-arm64-msvc@23.0.1': optional: true - '@nx/nx-win32-x64-msvc@22.7.0': + '@nx/nx-win32-x64-msvc@23.0.1': optional: true - '@nx/workspace@22.7.0(@swc/core@1.15.30(@swc/helpers@0.5.21))': + '@nx/workspace@23.0.1(@swc/core@1.15.30(@swc/helpers@0.5.21))': dependencies: - '@nx/devkit': 22.7.0(nx@22.7.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(debug@4.4.3)) + '@nx/devkit': 23.0.1(nx@23.0.1(@swc/core@1.15.30(@swc/helpers@0.5.21))) '@zkochan/js-yaml': 0.0.7 chalk: 4.1.2 enquirer: 2.3.6 - nx: 22.7.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(debug@4.4.3) + nx: 23.0.1(@swc/core@1.15.30(@swc/helpers@0.5.21)) picomatch: 4.0.4 semver: 7.8.4 tslib: 2.8.1 @@ -23293,7 +23044,7 @@ snapshots: tslib: 2.8.1 tsyringe: 4.10.0 - '@phenomnomnominal/tsquery@6.1.4(typescript@5.9.3)': + '@phenomnomnominal/tsquery@6.2.0(typescript@5.9.3)': dependencies: '@types/esquery': 1.5.4 esquery: 1.7.0 @@ -23302,10 +23053,7 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@pkgr/core@0.2.9': {} - - '@pkgr/core@0.3.6': - optional: true + '@pkgr/core@0.3.6': {} '@popperjs/core@2.11.8': {} @@ -23402,7 +23150,7 @@ snapshots: '@rolldown/binding-wasm32-wasi@1.0.0-rc.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: - '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -23686,10 +23434,10 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@storybook/addon-docs@10.2.10(@types/react@18.3.28)(esbuild@0.28.1)(rollup@4.59.0)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.99.0)(terser@5.47.1)(yaml@2.8.3))(webpack@5.105.4(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1))': + '@storybook/addon-docs@10.2.10(@types/react@18.3.28)(esbuild@0.28.1)(rollup@4.59.0)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.99.0)(terser@5.47.1)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1))': dependencies: '@mdx-js/react': 3.1.1(@types/react@18.3.28)(react@18.3.1) - '@storybook/csf-plugin': 10.2.10(esbuild@0.28.1)(rollup@4.59.0)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.99.0)(terser@5.47.1)(yaml@2.8.3))(webpack@5.105.4(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) + '@storybook/csf-plugin': 10.2.10(esbuild@0.28.1)(rollup@4.59.0)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.99.0)(terser@5.47.1)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) '@storybook/icons': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/react-dom-shim': 10.2.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) react: 18.3.1 @@ -23751,14 +23499,14 @@ snapshots: storybook: 10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ts-dedent: 2.2.0 - '@storybook/csf-plugin@10.2.10(esbuild@0.28.1)(rollup@4.59.0)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.99.0)(terser@5.47.1)(yaml@2.8.3))(webpack@5.105.4(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1))': + '@storybook/csf-plugin@10.2.10(esbuild@0.28.1)(rollup@4.59.0)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.99.0)(terser@5.47.1)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1))': dependencies: storybook: 10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) unplugin: 2.3.11 optionalDependencies: esbuild: 0.28.1 rollup: 4.59.0 - vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.99.0)(terser@5.47.1)(yaml@2.8.3) + vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.99.0)(terser@5.47.1)(yaml@2.9.0) webpack: 5.105.4(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1) '@storybook/global@5.0.0': {} @@ -24006,11 +23754,6 @@ snapshots: '@tufjs/canonical-json': 2.0.0 minimatch: 10.2.4 - '@tybys/wasm-util@0.10.1': - dependencies: - tslib: 2.8.1 - optional: true - '@tybys/wasm-util@0.10.2': dependencies: tslib: 2.8.1 @@ -24954,10 +24697,7 @@ snapshots: '@typescript-eslint/types': 8.58.2 eslint-visitor-keys: 5.0.1 - '@ungap/structured-clone@1.3.0': {} - - '@ungap/structured-clone@1.3.1': - optional: true + '@ungap/structured-clone@1.3.1': {} '@unrs/resolver-binding-android-arm-eabi@1.12.2': optional: true @@ -25033,13 +24773,13 @@ snapshots: dependencies: vite: 7.3.5(@types/node@20.11.17)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.3) - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.3))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.43.1)(yaml@2.9.0))': dependencies: - vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.3) + vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.43.1)(yaml@2.9.0) - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.47.1)(yaml@2.8.3))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.47.1)(yaml@2.9.0))': dependencies: - vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.47.1)(yaml@2.8.3) + vite: 7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.47.1)(yaml@2.9.0) optional: true '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.5(@types/node@20.12.8)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.3))': @@ -25520,8 +25260,6 @@ snapshots: acorn@8.17.0: {} - address@1.2.2: {} - address@2.0.3: {} adjust-sourcemap-loader@4.0.0: @@ -25991,7 +25729,7 @@ snapshots: axe-core@4.11.3: {} - axios@1.16.0(debug@4.4.3): + axios@1.16.0: dependencies: follow-redirects: 1.16.0(debug@4.4.3) form-data: 4.0.6 @@ -26117,9 +25855,9 @@ snapshots: babel-plugin-const-enum@1.2.0(@babel/core@7.29.7): dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.7) - '@babel/traverse': 7.29.0 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) + '@babel/traverse': 7.29.7 transitivePeerDependencies: - supports-color @@ -26132,7 +25870,7 @@ snapshots: babel-plugin-istanbul@6.1.1: dependencies: - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.6 istanbul-lib-instrument: 5.2.1 @@ -26262,7 +26000,7 @@ snapshots: babel-plugin-transform-typescript-metadata@0.3.2(@babel/core@7.29.7)(@babel/traverse@7.29.7): dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 optionalDependencies: '@babel/traverse': 7.29.7 @@ -26977,7 +26715,7 @@ snapshots: cldr-data-downloader@1.1.0: dependencies: - axios: 1.16.0(debug@4.4.3) + axios: 1.16.0 mkdirp: 1.0.4 nopt: 3.0.6 q: 1.0.1 @@ -27846,12 +27584,9 @@ snapshots: detect-node@2.1.0: {} - detect-port@1.6.1: + detect-port@2.1.0: dependencies: - address: 1.2.2 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color + address: 2.0.3 detective-amd@5.0.2: dependencies: @@ -28591,14 +28326,14 @@ snapshots: stylelint: 16.22.0(typescript@5.9.3) stylelint-config-standard: 38.0.0(stylelint@16.22.0(typescript@5.9.3)) - eslint-config-devextreme@1.1.11(4b96114756c692b5f27fe0b434b0b820): + eslint-config-devextreme@1.1.11(3326f177fdbc23aca8abf2cbc262d15f): dependencies: '@stylistic/eslint-plugin': 5.10.0(eslint@9.39.4(jiti@2.6.1)) '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3) '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3) eslint: 9.39.4(jiti@2.6.1) eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-jest: 29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.8.3)))(typescript@5.8.3) + eslint-plugin-jest: 29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)))(typescript@5.8.3) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-no-only-tests: 3.3.0 eslint-plugin-qunit: 8.2.6(eslint@9.39.4(jiti@2.6.1)) @@ -28629,14 +28364,14 @@ snapshots: stylelint: 16.22.0(typescript@4.9.5) stylelint-config-standard: 38.0.0(stylelint@16.22.0(typescript@4.9.5)) - eslint-config-devextreme@1.1.11(77dee72e16455f879ff54a28c4ae5760): + eslint-config-devextreme@1.1.11(64f1ac9f0cad481ebbdffba01b0af57a): dependencies: '@stylistic/eslint-plugin': 5.10.0(eslint@9.39.4(jiti@2.6.1)) - '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3) eslint: 9.39.4(jiti@2.6.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-jest: 29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.9.3)))(typescript@5.9.3) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-jest: 29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)))(typescript@5.8.3) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-no-only-tests: 3.3.0 eslint-plugin-qunit: 8.2.6(eslint@9.39.4(jiti@2.6.1)) @@ -28644,9 +28379,9 @@ snapshots: eslint-plugin-react-perf: 3.3.3(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-rulesdir: 0.2.2 eslint-plugin-spellcheck: 0.0.20(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-vue: 10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))) - stylelint: 16.22.0(typescript@5.9.3) - stylelint-config-standard: 38.0.0(stylelint@16.22.0(typescript@5.9.3)) + eslint-plugin-vue: 10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))) + stylelint: 16.22.0(typescript@5.8.3) + stylelint-config-standard: 38.0.0(stylelint@16.22.0(typescript@5.8.3)) eslint-config-devextreme@1.1.11(791322f479eadf2c17aee9b712f42d27): dependencies: @@ -28667,25 +28402,6 @@ snapshots: stylelint: 16.22.0(typescript@4.9.5) stylelint-config-standard: 38.0.0(stylelint@16.22.0(typescript@4.9.5)) - eslint-config-devextreme@1.1.11(a0ddd35370eff9a9db851227fa5860e1): - dependencies: - '@stylistic/eslint-plugin': 5.10.0(eslint@9.39.4(jiti@2.6.1)) - '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3) - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3) - eslint: 9.39.4(jiti@2.6.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-jest: 29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.8.3)))(typescript@5.8.3) - eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-no-only-tests: 3.3.0 - eslint-plugin-qunit: 8.2.6(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-react-perf: 3.3.3(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-rulesdir: 0.2.2 - eslint-plugin-spellcheck: 0.0.20(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-vue: 10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))) - stylelint: 16.22.0(typescript@5.8.3) - stylelint-config-standard: 38.0.0(stylelint@16.22.0(typescript@5.8.3)) - eslint-config-devextreme@1.1.11(c34ec7971d22e8cf41745c85af89a33d): dependencies: '@stylistic/eslint-plugin': 5.10.0(eslint@9.39.4(jiti@2.6.1)) @@ -28724,6 +28440,25 @@ snapshots: stylelint: 16.22.0(typescript@4.9.5) stylelint-config-standard: 38.0.0(stylelint@16.22.0(typescript@4.9.5)) + eslint-config-devextreme@1.1.11(f19ad25a54c4777ebfabafe65d911a45): + dependencies: + '@stylistic/eslint-plugin': 5.10.0(eslint@9.39.4(jiti@2.6.1)) + '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.4(jiti@2.6.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-jest: 29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)))(typescript@5.9.3) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-no-only-tests: 3.3.0 + eslint-plugin-qunit: 8.2.6(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-react-perf: 3.3.3(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-rulesdir: 0.2.2 + eslint-plugin-spellcheck: 0.0.20(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-vue: 10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))) + stylelint: 16.22.0(typescript@5.9.3) + stylelint-config-standard: 38.0.0(stylelint@16.22.0(typescript@5.9.3)) + eslint-import-resolver-node@0.3.10: dependencies: debug: 3.2.7 @@ -28905,24 +28640,24 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-jest@29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.8.3)))(typescript@5.8.3): + eslint-plugin-jest@29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)))(typescript@5.8.3): dependencies: '@typescript-eslint/utils': 8.58.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3) eslint: 9.39.4(jiti@2.6.1) optionalDependencies: '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3) - jest: 30.2.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.8.3)) + jest: 30.2.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)) typescript: 5.8.3 transitivePeerDependencies: - supports-color - eslint-plugin-jest@29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.8.3)))(typescript@5.8.3): + eslint-plugin-jest@29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)))(typescript@5.8.3): dependencies: '@typescript-eslint/utils': 8.58.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3) eslint: 9.39.4(jiti@2.6.1) optionalDependencies: '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3) - jest: 30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.8.3)) + jest: 30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -28949,13 +28684,13 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-jest@29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.9.3)))(typescript@5.9.3): + eslint-plugin-jest@29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)))(typescript@5.9.3): dependencies: '@typescript-eslint/utils': 8.58.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.4(jiti@2.6.1) optionalDependencies: '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - jest: 30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.9.3)) + jest: 30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -30456,10 +30191,6 @@ snapshots: dependencies: hookified: 1.15.1 - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - hasown@2.0.3: dependencies: function-bind: 1.1.2 @@ -31592,28 +31323,6 @@ snapshots: - ts-node optional: true - jest-cli@30.2.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.8.3)): - dependencies: - '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.8.3)) - '@jest/test-result': 30.2.0 - '@jest/types': 30.2.0 - chalk: 4.1.2 - exit-x: 0.2.2 - import-local: 3.2.0 - jest-config: 30.2.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.8.3)) - jest-util: 30.2.0 - jest-validate: 30.2.0 - yargs: 17.7.2 - optionalDependencies: - node-notifier: 9.0.1 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - esbuild-register - - supports-color - - ts-node - optional: true - jest-cli@30.2.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)): dependencies: '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)) @@ -31636,37 +31345,15 @@ snapshots: - ts-node optional: true - jest-cli@30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.8.3)): - dependencies: - '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.8.3)) - '@jest/test-result': 30.2.0 - '@jest/types': 30.2.0 - chalk: 4.1.2 - exit-x: 0.2.2 - import-local: 3.2.0 - jest-config: 30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.8.3)) - jest-util: 30.2.0 - jest-validate: 30.2.0 - yargs: 17.7.2 - optionalDependencies: - node-notifier: 9.0.1 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - esbuild-register - - supports-color - - ts-node - optional: true - - jest-cli@30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.8.3)): + jest-cli@30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)): dependencies: - '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.8.3)) + '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)) '@jest/test-result': 30.2.0 '@jest/types': 30.2.0 chalk: 4.1.2 exit-x: 0.2.2 import-local: 3.2.0 - jest-config: 30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.8.3)) + jest-config: 30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)) jest-util: 30.2.0 jest-validate: 30.2.0 yargs: 17.7.2 @@ -31680,15 +31367,15 @@ snapshots: - ts-node optional: true - jest-cli@30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.9.3)): + jest-cli@30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)): dependencies: - '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.9.3)) + '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)) '@jest/test-result': 30.2.0 '@jest/types': 30.2.0 chalk: 4.1.2 exit-x: 0.2.2 import-local: 3.2.0 - jest-config: 30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.9.3)) + jest-config: 30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)) jest-util: 30.2.0 jest-validate: 30.2.0 yargs: 17.7.2 @@ -31953,40 +31640,6 @@ snapshots: - supports-color optional: true - jest-config@30.2.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.8.3)): - dependencies: - '@babel/core': 7.29.7 - '@jest/get-type': 30.1.0 - '@jest/pattern': 30.0.1 - '@jest/test-sequencer': 30.2.0 - '@jest/types': 30.2.0 - babel-jest: 30.2.0(@babel/core@7.29.7) - chalk: 4.1.2 - ci-info: 4.4.0 - deepmerge: 4.3.1 - glob: 10.5.0 - graceful-fs: 4.2.11 - jest-circus: 30.2.0(babel-plugin-macros@3.1.0) - jest-docblock: 30.2.0 - jest-environment-node: 30.2.0 - jest-regex-util: 30.0.1 - jest-resolve: 30.2.0 - jest-runner: 30.2.0 - jest-util: 30.2.0 - jest-validate: 30.2.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 30.2.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.12.8 - ts-node: 10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.8.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - optional: true - jest-config@30.2.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)): dependencies: '@babel/core': 7.29.7 @@ -32055,40 +31708,6 @@ snapshots: - supports-color optional: true - jest-config@30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.8.3)): - dependencies: - '@babel/core': 7.29.7 - '@jest/get-type': 30.1.0 - '@jest/pattern': 30.0.1 - '@jest/test-sequencer': 30.2.0 - '@jest/types': 30.2.0 - babel-jest: 30.2.0(@babel/core@7.29.7) - chalk: 4.1.2 - ci-info: 4.4.0 - deepmerge: 4.3.1 - glob: 10.5.0 - graceful-fs: 4.2.11 - jest-circus: 30.2.0(babel-plugin-macros@3.1.0) - jest-docblock: 30.2.0 - jest-environment-node: 30.2.0 - jest-regex-util: 30.0.1 - jest-resolve: 30.2.0 - jest-runner: 30.2.0 - jest-util: 30.2.0 - jest-validate: 30.2.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 30.2.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.19.37 - ts-node: 10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.8.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - optional: true - jest-config@30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)): dependencies: '@babel/core': 7.29.7 @@ -32123,143 +31742,7 @@ snapshots: - supports-color optional: true - jest-config@30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.8.3)): - dependencies: - '@babel/core': 7.29.7 - '@jest/get-type': 30.1.0 - '@jest/pattern': 30.0.1 - '@jest/test-sequencer': 30.2.0 - '@jest/types': 30.2.0 - babel-jest: 30.2.0(@babel/core@7.29.7) - chalk: 4.1.2 - ci-info: 4.4.0 - deepmerge: 4.3.1 - glob: 10.5.0 - graceful-fs: 4.2.11 - jest-circus: 30.2.0(babel-plugin-macros@3.1.0) - jest-docblock: 30.2.0 - jest-environment-node: 30.2.0 - jest-regex-util: 30.0.1 - jest-resolve: 30.2.0 - jest-runner: 30.2.0 - jest-util: 30.2.0 - jest-validate: 30.2.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 30.2.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.19.37 - ts-node: 10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.8.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - optional: true - - jest-config@30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.8.3)): - dependencies: - '@babel/core': 7.29.7 - '@jest/get-type': 30.1.0 - '@jest/pattern': 30.0.1 - '@jest/test-sequencer': 30.2.0 - '@jest/types': 30.2.0 - babel-jest: 30.2.0(@babel/core@7.29.7) - chalk: 4.1.2 - ci-info: 4.4.0 - deepmerge: 4.3.1 - glob: 10.5.0 - graceful-fs: 4.2.11 - jest-circus: 30.2.0(babel-plugin-macros@3.1.0) - jest-docblock: 30.2.0 - jest-environment-node: 30.2.0 - jest-regex-util: 30.0.1 - jest-resolve: 30.2.0 - jest-runner: 30.2.0 - jest-util: 30.2.0 - jest-validate: 30.2.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 30.2.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.19.37 - ts-node: 10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.8.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - optional: true - - jest-config@30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.9.3)): - dependencies: - '@babel/core': 7.29.7 - '@jest/get-type': 30.1.0 - '@jest/pattern': 30.0.1 - '@jest/test-sequencer': 30.2.0 - '@jest/types': 30.2.0 - babel-jest: 30.2.0(@babel/core@7.29.7) - chalk: 4.1.2 - ci-info: 4.4.0 - deepmerge: 4.3.1 - glob: 10.5.0 - graceful-fs: 4.2.11 - jest-circus: 30.2.0(babel-plugin-macros@3.1.0) - jest-docblock: 30.2.0 - jest-environment-node: 30.2.0 - jest-regex-util: 30.0.1 - jest-resolve: 30.2.0 - jest-runner: 30.2.0 - jest-util: 30.2.0 - jest-validate: 30.2.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 30.2.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.19.37 - ts-node: 10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.9.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - optional: true - - jest-config@30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.8.3)): - dependencies: - '@babel/core': 7.29.7 - '@jest/get-type': 30.1.0 - '@jest/pattern': 30.0.1 - '@jest/test-sequencer': 30.2.0 - '@jest/types': 30.2.0 - babel-jest: 30.2.0(@babel/core@7.29.7) - chalk: 4.1.2 - ci-info: 4.4.0 - deepmerge: 4.3.1 - glob: 10.5.0 - graceful-fs: 4.2.11 - jest-circus: 30.2.0(babel-plugin-macros@3.1.0) - jest-docblock: 30.2.0 - jest-environment-node: 30.2.0 - jest-regex-util: 30.0.1 - jest-resolve: 30.2.0 - jest-runner: 30.2.0 - jest-util: 30.2.0 - jest-validate: 30.2.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 30.2.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 25.9.3 - ts-node: 10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.8.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - optional: true - - jest-config@30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.9.3)): + jest-config@30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)): dependencies: '@babel/core': 7.29.7 '@jest/get-type': 30.1.0 @@ -32287,7 +31770,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 25.9.3 - ts-node: 10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.9.3) + ts-node: 10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -32803,7 +32286,7 @@ snapshots: '@babel/core': 7.29.7 '@babel/generator': 7.29.7 '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.7) - '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.7) + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) '@babel/types': 7.29.7 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 @@ -32854,8 +32337,8 @@ snapshots: dependencies: '@babel/core': 7.29.7 '@babel/generator': 7.29.7 - '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.7) - '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.7) + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) '@babel/types': 7.29.7 '@jest/expect-utils': 30.3.0 '@jest/get-type': 30.1.0 @@ -32872,7 +32355,7 @@ snapshots: jest-util: 30.3.0 pretty-format: 30.3.0 semver: 7.8.4 - synckit: 0.11.12 + synckit: 0.11.13 transitivePeerDependencies: - supports-color @@ -32991,7 +32474,7 @@ snapshots: jest-worker@30.3.0: dependencies: '@types/node': 20.19.37 - '@ungap/structured-clone': 1.3.0 + '@ungap/structured-clone': 1.3.1 jest-util: 30.3.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -33068,22 +32551,6 @@ snapshots: - ts-node optional: true - jest@30.2.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.8.3)): - dependencies: - '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.8.3)) - '@jest/types': 30.2.0 - import-local: 3.2.0 - jest-cli: 30.2.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.8.3)) - optionalDependencies: - node-notifier: 9.0.1 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - esbuild-register - - supports-color - - ts-node - optional: true - jest@30.2.0(@types/node@20.12.8)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)): dependencies: '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)) @@ -33100,28 +32567,12 @@ snapshots: - ts-node optional: true - jest@30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.8.3)): - dependencies: - '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.8.3)) - '@jest/types': 30.2.0 - import-local: 3.2.0 - jest-cli: 30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.8.3)) - optionalDependencies: - node-notifier: 9.0.1 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - esbuild-register - - supports-color - - ts-node - optional: true - - jest@30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.8.3)): + jest@30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)): dependencies: - '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.8.3)) + '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)) '@jest/types': 30.2.0 import-local: 3.2.0 - jest-cli: 30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.8.3)) + jest-cli: 30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)) optionalDependencies: node-notifier: 9.0.1 transitivePeerDependencies: @@ -33132,12 +32583,12 @@ snapshots: - ts-node optional: true - jest@30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.9.3)): + jest@30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)): dependencies: - '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.9.3)) + '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)) '@jest/types': 30.2.0 import-local: 3.2.0 - jest-cli: 30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.9.3)) + jest-cli: 30.2.0(@types/node@25.9.3)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3)) optionalDependencies: node-notifier: 9.0.1 transitivePeerDependencies: @@ -33245,8 +32696,6 @@ snapshots: json5@2.2.3: {} - jsonc-parser@3.2.0: {} - jsonc-parser@3.3.1: {} jsonfile@4.0.0: @@ -34735,7 +34184,7 @@ snapshots: nwsapi@2.2.23: {} - nx@22.7.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(debug@4.4.3): + nx@23.0.1(@swc/core@1.15.30(@swc/helpers@0.5.21)): dependencies: '@emnapi/core': 1.4.5 '@emnapi/runtime': 1.4.5 @@ -34750,7 +34199,7 @@ snapshots: ansi-styles: 4.3.0 argparse: 2.0.1 asynckit: 0.4.0 - axios: 1.16.0(debug@4.4.3) + axios: 1.16.0 balanced-match: 4.0.3 base64-js: 1.5.1 bl: 4.1.0 @@ -34794,7 +34243,7 @@ snapshots: has-flag: 4.0.0 has-symbols: 1.1.0 has-tostringtag: 1.0.2 - hasown: 2.0.2 + hasown: 2.0.4 ieee754: 1.2.1 ignore: 7.0.5 inherits: 2.0.4 @@ -34803,21 +34252,22 @@ snapshots: is-interactive: 1.0.0 is-unicode-supported: 0.1.0 is-wsl: 2.2.0 + isexe: 2.0.0 json5: 2.2.3 - jsonc-parser: 3.2.0 + jsonc-parser: 3.3.1 lines-and-columns: 2.0.3 log-symbols: 4.1.0 math-intrinsics: 1.1.0 mime-db: 1.52.0 mime-types: 2.1.35 mimic-fn: 2.1.0 - minimatch: 10.2.4 + minimatch: 10.2.5 minimist: 1.2.8 npm-run-path: 4.0.1 once: 1.4.0 onetime: 5.1.2 open: 8.4.2 - ora: 5.3.0 + ora: 5.4.1 path-key: 3.1.1 picocolors: 1.1.1 proxy-from-env: 2.1.0 @@ -34836,28 +34286,28 @@ snapshots: supports-color: 7.2.0 tar-stream: 2.2.0 tmp: 0.2.7 - tree-kill: 1.2.2 tsconfig-paths: 4.2.0 tslib: 2.8.1 util-deprecate: 1.0.2 wcwidth: 1.0.1 + which: 3.0.1 wrap-ansi: 7.0.0 wrappy: 1.0.2 y18n: 5.0.8 - yaml: 2.8.3 + yaml: 2.9.0 yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@nx/nx-darwin-arm64': 22.7.0 - '@nx/nx-darwin-x64': 22.7.0 - '@nx/nx-freebsd-x64': 22.7.0 - '@nx/nx-linux-arm-gnueabihf': 22.7.0 - '@nx/nx-linux-arm64-gnu': 22.7.0 - '@nx/nx-linux-arm64-musl': 22.7.0 - '@nx/nx-linux-x64-gnu': 22.7.0 - '@nx/nx-linux-x64-musl': 22.7.0 - '@nx/nx-win32-arm64-msvc': 22.7.0 - '@nx/nx-win32-x64-msvc': 22.7.0 + '@nx/nx-darwin-arm64': 23.0.1 + '@nx/nx-darwin-x64': 23.0.1 + '@nx/nx-freebsd-x64': 23.0.1 + '@nx/nx-linux-arm-gnueabihf': 23.0.1 + '@nx/nx-linux-arm64-gnu': 23.0.1 + '@nx/nx-linux-arm64-musl': 23.0.1 + '@nx/nx-linux-x64-gnu': 23.0.1 + '@nx/nx-linux-x64-musl': 23.0.1 + '@nx/nx-win32-arm64-msvc': 23.0.1 + '@nx/nx-win32-x64-msvc': 23.0.1 '@swc/core': 1.15.30(@swc/helpers@0.5.21) transitivePeerDependencies: - debug @@ -35024,17 +34474,6 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ora@5.3.0: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - ora@5.4.1: dependencies: bl: 4.1.0 @@ -37685,14 +37124,9 @@ snapshots: sync-message-port@1.2.0: {} - synckit@0.11.12: - dependencies: - '@pkgr/core': 0.2.9 - synckit@0.11.13: dependencies: '@pkgr/core': 0.3.6 - optional: true syntax-error@1.4.0: dependencies: @@ -38188,11 +37622,6 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - tinyglobby@0.2.16: - dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 - tinyglobby@0.2.17: dependencies: fdir: 6.5.0(picomatch@4.0.4) @@ -38368,7 +37797,7 @@ snapshots: json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.7.4 + semver: 7.8.4 typescript: 4.9.5 yargs-parser: 21.1.1 optionalDependencies: @@ -38386,7 +37815,7 @@ snapshots: json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.7.4 + semver: 7.8.4 typescript: 4.9.5 yargs-parser: 21.1.1 optionalDependencies: @@ -38404,7 +37833,7 @@ snapshots: json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.7.4 + semver: 7.8.4 typescript: 5.9.3 yargs-parser: 21.1.1 optionalDependencies: @@ -38498,27 +37927,6 @@ snapshots: optionalDependencies: '@swc/core': 1.15.30(@swc/helpers@0.5.21) - ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.8.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.12 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.12.8 - acorn: 8.17.0 - acorn-walk: 8.3.5 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.4 - make-error: 1.3.6 - typescript: 5.8.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.15.30(@swc/helpers@0.5.21) - optional: true - ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.12.8)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -38539,69 +37947,6 @@ snapshots: optionalDependencies: '@swc/core': 1.15.30(@swc/helpers@0.5.21) - ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.8.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.12 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.19.37 - acorn: 8.17.0 - acorn-walk: 8.3.5 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.4 - make-error: 1.3.6 - typescript: 5.8.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.15.30(@swc/helpers@0.5.21) - optional: true - - ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.8.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.12 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 25.9.3 - acorn: 8.17.0 - acorn-walk: 8.3.5 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.4 - make-error: 1.3.6 - typescript: 5.8.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.15.30(@swc/helpers@0.5.21) - optional: true - - ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@25.9.3)(typescript@5.9.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.12 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 25.9.3 - acorn: 8.17.0 - acorn-walk: 8.3.5 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.4 - make-error: 1.3.6 - typescript: 5.9.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.15.30(@swc/helpers@0.5.21) - optional: true - tsc-alias@1.8.16: dependencies: chokidar: 3.6.0 @@ -39173,6 +38518,25 @@ snapshots: terser: 5.43.1 yaml: 2.8.3 + vite@7.3.5(@types/node@20.11.17)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.43.1)(yaml@2.9.0): + dependencies: + esbuild: 0.28.1 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.10 + rollup: 4.59.0 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 20.11.17 + fsevents: 2.3.3 + jiti: 2.6.1 + less: 4.4.0 + lightningcss: 1.32.0 + sass: 1.90.0 + sass-embedded: 1.93.3 + terser: 5.43.1 + yaml: 2.9.0 + vite@7.3.5(@types/node@20.12.8)(jiti@2.6.1)(less@4.4.2)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.3): dependencies: esbuild: 0.28.1 @@ -39192,7 +38556,7 @@ snapshots: terser: 5.46.0 yaml: 2.8.3 - vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.43.1)(yaml@2.8.3): + vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.4.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.43.1)(yaml@2.9.0): dependencies: esbuild: 0.28.1 fdir: 6.5.0(picomatch@4.0.4) @@ -39209,9 +38573,9 @@ snapshots: sass: 1.90.0 sass-embedded: 1.93.3 terser: 5.43.1 - yaml: 2.8.3 + yaml: 2.9.0 - vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.47.1)(yaml@2.8.3): + vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.47.1)(yaml@2.9.0): dependencies: esbuild: 0.28.1 fdir: 6.5.0(picomatch@4.0.4) @@ -39228,10 +38592,10 @@ snapshots: sass: 1.90.0 sass-embedded: 1.93.3 terser: 5.47.1 - yaml: 2.8.3 + yaml: 2.9.0 optional: true - vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.99.0)(terser@5.47.1)(yaml@2.8.3): + vite@7.3.5(@types/node@25.9.3)(jiti@2.6.1)(less@4.6.6)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.99.0)(terser@5.47.1)(yaml@2.9.0): dependencies: esbuild: 0.28.1 fdir: 6.5.0(picomatch@4.0.4) @@ -39248,7 +38612,7 @@ snapshots: sass: 1.99.0 sass-embedded: 1.93.3 terser: 5.47.1 - yaml: 2.8.3 + yaml: 2.9.0 optional: true vite@8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(jiti@2.6.1)(less@4.6.6)(sass-embedded@1.93.3)(sass@1.99.0)(terser@5.47.1)(yaml@2.8.3): @@ -39953,6 +39317,10 @@ snapshots: dependencies: isexe: 2.0.0 + which@3.0.1: + dependencies: + isexe: 2.0.0 + which@6.0.1: dependencies: isexe: 4.0.0 @@ -40067,6 +39435,8 @@ snapshots: yaml@2.8.3: {} + yaml@2.9.0: {} + yargs-parser@20.2.9: {} yargs-parser@21.1.1: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 2318c776e960..afa4ac3389e8 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -128,3 +128,18 @@ patchedDependencies: minimumReleaseAgeExclude: - "eslint-config-devextreme" - devextreme-quill@1.7.10 + - '@nx/devkit@23.0.1' + - '@nx/jest@23.0.1' + - '@nx/js@23.0.1' + - '@nx/nx-darwin-arm64@23.0.1' + - '@nx/nx-darwin-x64@23.0.1' + - '@nx/nx-freebsd-x64@23.0.1' + - '@nx/nx-linux-arm-gnueabihf@23.0.1' + - '@nx/nx-linux-arm64-gnu@23.0.1' + - '@nx/nx-linux-arm64-musl@23.0.1' + - '@nx/nx-linux-x64-gnu@23.0.1' + - '@nx/nx-linux-x64-musl@23.0.1' + - '@nx/nx-win32-arm64-msvc@23.0.1' + - '@nx/nx-win32-x64-msvc@23.0.1' + - '@nx/workspace@23.0.1' + - nx@23.0.1 diff --git a/tools/scripts/build-all.ts b/tools/scripts/build-all.ts index e2d83f9bfcf4..67549b23f747 100644 --- a/tools/scripts/build-all.ts +++ b/tools/scripts/build-all.ts @@ -42,14 +42,14 @@ sh.exec(`pnpm exec nx run devextreme-metadata:make-aspnet-metadata`); injectDescriptions(); sh.exec('pnpm exec nx build devextreme-scss'); -sh.exec('pnpm exec nx build-dist devextreme --skipNxCache', { +sh.exec('pnpm exec nx build-dist devextreme', { env: { ...sh.env, BUILD_INTERNAL_PACKAGE: 'false' } }); -sh.exec('pnpm exec nx build devextreme-themebuilder --skipNxCache'); +sh.exec('pnpm exec nx build devextreme-themebuilder'); // Copy artifacts for DXBuild (Installation) sh.pushd(path.join(ROOT_DIR, 'packages/devextreme/artifacts')); From 8097ab849353419412d96b5ec8f3f19a41c29212 Mon Sep 17 00:00:00 2001 From: EugeniyKiyashko Date: Wed, 24 Jun 2026 17:24:18 +0400 Subject: [PATCH 2/2] no message --- .github/workflows/build_all.yml | 3 --- .github/workflows/testcafe_tests.yml | 15 +++++++++------ .github/workflows/visual-tests-demos.yml | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index dff78fbb2a02..5e450e462390 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -28,9 +28,6 @@ jobs: - name: Get sources uses: actions/checkout@v6 - - name: Pin Nx machine id - uses: ./.github/actions/pin-nx-machine-id - - name: Use Node.js uses: actions/setup-node@v6 with: diff --git a/.github/workflows/testcafe_tests.yml b/.github/workflows/testcafe_tests.yml index eb855a258037..8f521ae04256 100644 --- a/.github/workflows/testcafe_tests.yml +++ b/.github/workflows/testcafe_tests.yml @@ -33,7 +33,10 @@ jobs: with: filters: | styles: - - 'packages/devextreme-scss/**' + - 'packages/devextreme-scss/scss/**' + - 'packages/devextreme-scss/icons/**' + - 'packages/devextreme-scss/images/**' + - 'packages/devextreme-scss/fonts/**' - 'packages/devextreme/js/**/themes/**' - 'e2e/testcafe-devextreme/helpers/accessibility/**' @@ -223,13 +226,13 @@ jobs: { "name": "material - compact", "theme": "material.blue.light.compact" }, { "componentFolder": "cardView", "name": "cardView" }, - { "componentFolder": "dataGrid", "name": "dataGrid (1/4)", "indices": "1/4", "cache": true }, - { "componentFolder": "dataGrid", "name": "dataGrid (2/4)", "indices": "2/4", "cache": true }, - { "componentFolder": "dataGrid", "name": "dataGrid (3/4)", "indices": "3/4", "cache": true }, - { "componentFolder": "dataGrid", "name": "dataGrid (4/4)", "indices": "4/4", "cache": true }, + { "componentFolder": "dataGrid", "name": "dataGrid (1/4)", "indices": "1/4", "cache": true, "concurrency": 6 }, + { "componentFolder": "dataGrid", "name": "dataGrid (2/4)", "indices": "2/4", "cache": true, "concurrency": 6 }, + { "componentFolder": "dataGrid", "name": "dataGrid (3/4)", "indices": "3/4", "cache": true, "concurrency": 6 }, + { "componentFolder": "dataGrid", "name": "dataGrid (4/4)", "indices": "4/4", "cache": true, "concurrency": 6 }, { "componentFolder": "editors", "name": "editors" }, - { "componentFolder": "navigation", "name": "navigation" }, + { "componentFolder": "navigation", "name": "navigation", "concurrency": 6 }, { "componentFolder": "scheduler/common", "name": "scheduler / common (1/3)", "indices": "1/3" }, { "componentFolder": "scheduler/common", "name": "scheduler / common (2/3)", "indices": "2/3" }, diff --git a/.github/workflows/visual-tests-demos.yml b/.github/workflows/visual-tests-demos.yml index 15e4cf8b7374..98801e6b5ec5 100644 --- a/.github/workflows/visual-tests-demos.yml +++ b/.github/workflows/visual-tests-demos.yml @@ -789,7 +789,7 @@ jobs: CHANGEDFILEINFOSPATH: changed-files.json BROWSERS: ${{ steps.chrome-flags.outputs.flags }} #DEBUG: hammerhead:*,testcafe:* - CONCURRENCY: 6 + CONCURRENCY: 4 TCQUARANTINE: true CONSTEL: ${{ matrix.CONSTEL }} THEME: ${{ matrix.THEME }}