diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7f562a630..e98ba12a7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,9 +35,8 @@ jobs: node-version-file: 'package.json' cache: 'pnpm' - - name: Set the node version in NX_CI_EXECUTION_ENV - # Added the - at the end to function as a separator to improve readability in the PR comment from the Nx cloud app - run: echo "NX_CI_EXECUTION_ENV=Node $(node --version) -" >> $GITHUB_ENV + - name: Set the resolved node version in NX_CI_EXECUTION_ENV + run: echo "NX_CI_EXECUTION_ENV=Node $(node --version)" >> $GITHUB_ENV - name: Start Nx Cloud CI Run run: pnpm dlx nx-cloud start-ci-run --distribute-on="6 custom-linux-medium-plus-js" --stop-agents-after="e2e-suite" @@ -100,9 +99,8 @@ jobs: node-version: ${{ matrix.node }} cache: 'pnpm' - - name: Set the node version in NX_CI_EXECUTION_ENV - # Added the - at the end to function as a separator to improve readability in the PR comment from the Nx cloud app - run: echo "NX_CI_EXECUTION_ENV=Node $(node --version) -" >> $GITHUB_ENV + - name: Set the resolved node version in NX_CI_EXECUTION_ENV + run: echo "NX_CI_EXECUTION_ENV=Node $(node --version)" >> $GITHUB_ENV - name: Install dependencies (skipping postinstall) # We use --ignore-scripts to skip automatic postinstall and give us more control over distributing build tasks diff --git a/.github/workflows/update-native-event-names-for-renovate.yml b/.github/workflows/update-native-event-names-for-renovate.yml new file mode 100644 index 000000000..44948933e --- /dev/null +++ b/.github/workflows/update-native-event-names-for-renovate.yml @@ -0,0 +1,87 @@ +# This workflow is used to augment the capabilities of the renovate +# GitHub app by updating the native event names that are sourced from +# the `@mdn/browser-compat-data` package whenever that dependency is updated. + +name: Renovate Update Native Event Names + +on: + pull_request: + branches: [main] + paths: + - 'package.json' + +concurrency: + group: ${{ github.workflow }}-${{ github.event.number || github.ref }} + cancel-in-progress: true + +jobs: + maybe_update_native_event_names: + # Only run if it was the renovate bot that triggered the workflow (otherwise we'll create a loop) + if: contains('["renovate[bot]"]', github.actor) == true + name: Update if required + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + # To allow us to perform the git diff we need the git history + fetch-depth: 0 + # To ensure we can push from a different user (and therefore cause actions to rerun) + persist-credentials: false + + - name: Check if @mdn/browser-compat-data was changed as part of the latest commit by renovate bot on the PR + id: relevant-packages-check + run: | + declare -a packages=( + "@mdn/browser-compat-data" + ) + + for package in "${packages[@]}" + do + # It's important we have the leading and trailing (escaped) " here so we know it is an exact match of the package name + git diff HEAD~1 -G"\"$package\"" --exit-code package.json && echo "$package unchanged" || echo "::set-output name=was-changed::true" + done + + - uses: pnpm/action-setup@v4 + if: ${{ steps.relevant-packages-check.outputs.was-changed == 'true' }} + name: Install pnpm + with: + run_install: false + + - name: Install Node.js per package.json + if: ${{ steps.relevant-packages-check.outputs.was-changed == 'true' }} + uses: actions/setup-node@v4 + with: + # Use the volta.node property as the source of truth + node-version-file: 'package.json' + + - name: Update native event names if @mdn/browser-compat-data was changed and commit the changes + if: ${{ steps.relevant-packages-check.outputs.was-changed == 'true' }} + env: + # We cannot use secrets.GITHUB_TOKEN for this because it is not permitted to kick off subsequent actions worfklow runs, so we use a PAT instead + GITHUB_TOKEN: ${{ secrets.JAMES_HENRY_GITHUB_TOKEN }} + run: | + # Checkout the PR branch using the github CLI + gh pr checkout ${{ github.event.pull_request.number }} + + pnpm install --ignore-scripts + + # Reset any changes that happened before updating the event names (e.g. to the package.json and lock file) so that we don't commit them + git reset --hard + + # Regenerate the file containing the event names + pnpm update-native-event-names + + # Commit all event name changes to the PR (see note on not being able to use secrets.GITHUB_TOKEN for this) + git config --global user.email "james@henry.sc" + git config --global user.name "JamesHenry" + git remote set-url origin https://x-access-token:$GITHUB_TOKEN@github.com/$GITHUB_REPOSITORY.git + + # Check if there are any changes to commit after regenerating the event names + if git diff --quiet; then + echo "No native event name changes detected" + else + # Add everything that changed after generating the event names + git add --all + git commit -m "chore: update native event names" + git push + fi diff --git a/CHANGELOG.md b/CHANGELOG.md index 88f2eddc6..a81cd98b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,27 @@ +## 19.2.0 (2025-03-02) + +### 🚀 Features + +- **eslint-plugin:** add rule require-lifecycle-on-prototype ([#2259](https://github.com/angular-eslint/angular-eslint/pull/2259)) + +### 🩹 Fixes + +- update dependency @angular/compiler to v19.2.0 ([#2268](https://github.com/angular-eslint/angular-eslint/pull/2268)) +- update dependency eslint to v9.21.0 ([#2243](https://github.com/angular-eslint/angular-eslint/pull/2243)) +- update typescript-eslint packages to v8.25.0 ([#2263](https://github.com/angular-eslint/angular-eslint/pull/2263)) +- **eslint-plugin:** [no-output-native] update native event names ([#2236](https://github.com/angular-eslint/angular-eslint/pull/2236)) +- **eslint-plugin-template:** [prefer-self-closing-tags] do not treat comments as whitespace ([#2256](https://github.com/angular-eslint/angular-eslint/pull/2256)) +- **eslint-plugin-template:** [prefer-self-closing-tags] allow nested ng-content ([#2257](https://github.com/angular-eslint/angular-eslint/pull/2257)) +- **eslint-plugin-template:** [prefer-static-string-properties] do not check structural directives ([#2253](https://github.com/angular-eslint/angular-eslint/pull/2253)) +- **eslint-plugin-template:** find inline templates on components in blocks ([#2238](https://github.com/angular-eslint/angular-eslint/pull/2238)) +- **prefer-static-string-properties:** resolve bug with directives ([#2271](https://github.com/angular-eslint/angular-eslint/pull/2271)) +- **prefer-static-string-properties:** exclude special attributes ([#2273](https://github.com/angular-eslint/angular-eslint/pull/2273)) + +### ❤️ Thank You + +- Dave @reduckted +- Marie Briand @mbriand-lucca + ## 19.1.0 (2025-02-09) ### 🚀 Features diff --git a/README.md b/README.md index 38b2837f6..19a249a16 100644 --- a/README.md +++ b/README.md @@ -232,7 +232,7 @@ Please see here for our philosophy on using a linter to enforce code formatting ## Linting with the VSCode extension for ESLint -**We strongly recommend using v3 of the vscode-eslint extension.** At the time of writing (May 2024), this is in prerelease. You can enable it by opening up the extension profile page within VSCode and clicking on the "switch to prerelease" button (if your currently installed version is older than v3). +**We strongly recommend using v3 (or later) of the vscode-eslint extension.**. You can enable it by opening up the [extension profile page within VSCode](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint). The extension will now be smart enough to pick up from your configuration files what files you care about linting (from both flat configs and eslintrc (as long as you follow the guidance of using overrides outline in this repo)). diff --git a/docs/CONFIGURING_FLAT_CONFIG.md b/docs/CONFIGURING_FLAT_CONFIG.md index 4cb8b39f7..2d1a2ee3c 100644 --- a/docs/CONFIGURING_FLAT_CONFIG.md +++ b/docs/CONFIGURING_FLAT_CONFIG.md @@ -23,11 +23,11 @@ The thing is: **ESLint understands neither of these things out of the box.** Fortunately, however, ESLint has clearly defined points of extensibility that we can leverage to make this all work. -> For detailed information about ESLint plugins, parsers etc please review the official ESLint eslintrc config documentation: https://eslint.org/docs/latest/use/configure/ +> For detailed information about ESLint plugins, parsers etc. please review the official ESLint eslintrc config documentation: https://eslint.org/docs/latest/use/configure/ **The key principle of our configuration required for Angular projects is that we need to run different blocks of configuration for different file types/extensions**. In other words, we don't want the same rules to apply on TypeScript files that we do on HTML/inline-templates. -Therefore, our flat config will contain two entries, one for TS, one for HTML. We could provide these two entries directly in an exported array, but `typescript-eslint` provides and awesome typed utility function which makes writing our flat configs a lot nicer, so we will instead require the function and pass in multiple objects for our configuration. +Therefore, our flat config will contain two entries, one for TS, one for HTML. We could provide these two entries directly in an exported array, but `typescript-eslint` provides an awesome typed utility function which makes writing our flat configs a lot nicer, so we will instead require the function and pass in multiple objects for our configuration. **Workspace root level eslint.config.js** diff --git a/e2e/src/__snapshots__/eslint-8--inline-template-fixer.test.ts.snap b/e2e/src/__snapshots__/eslint-8--inline-template-fixer.test.ts.snap index 872ae5dd3..608a09d7b 100644 --- a/e2e/src/__snapshots__/eslint-8--inline-template-fixer.test.ts.snap +++ b/e2e/src/__snapshots__/eslint-8--inline-template-fixer.test.ts.snap @@ -29,7 +29,7 @@ exports[`eslint-8--inline-template-fixer should generate the expected inline tem "@typescript-eslint/eslint-plugin": "7.11.0", "@typescript-eslint/parser": "7.11.0", "eslint": "8.57.0", - "jasmine-core": "~5.5.0", + "jasmine-core": "~5.6.0", "karma": "~6.4.0", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", diff --git a/e2e/src/__snapshots__/eslint-8--new-workspace-create-application-false-ng-add-then-project.test.ts.snap b/e2e/src/__snapshots__/eslint-8--new-workspace-create-application-false-ng-add-then-project.test.ts.snap index 6bf011a42..1dd5826aa 100644 --- a/e2e/src/__snapshots__/eslint-8--new-workspace-create-application-false-ng-add-then-project.test.ts.snap +++ b/e2e/src/__snapshots__/eslint-8--new-workspace-create-application-false-ng-add-then-project.test.ts.snap @@ -14,7 +14,7 @@ exports[`eslint-8--new-workspace-create-application-false-ng-add-then-project sh "@typescript-eslint/eslint-plugin": "7.11.0", "@typescript-eslint/parser": "7.11.0", "eslint": "8.57.0", - "jasmine-core": "~5.5.0", + "jasmine-core": "~5.6.0", "karma": "~6.4.0", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", diff --git a/e2e/src/__snapshots__/eslint-8--new-workspace-create-application-false-project-then-ng-add.test.ts.snap b/e2e/src/__snapshots__/eslint-8--new-workspace-create-application-false-project-then-ng-add.test.ts.snap index a8228b8cf..fea054e5f 100644 --- a/e2e/src/__snapshots__/eslint-8--new-workspace-create-application-false-project-then-ng-add.test.ts.snap +++ b/e2e/src/__snapshots__/eslint-8--new-workspace-create-application-false-project-then-ng-add.test.ts.snap @@ -14,7 +14,7 @@ exports[`eslint-8--new-workspace-create-application-false-project-then-ng-add sh "@typescript-eslint/eslint-plugin": "7.11.0", "@typescript-eslint/parser": "7.11.0", "eslint": "8.57.0", - "jasmine-core": "~5.5.0", + "jasmine-core": "~5.6.0", "karma": "~6.4.0", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", diff --git a/e2e/src/__snapshots__/eslint-8--new-workspace.test.ts.snap b/e2e/src/__snapshots__/eslint-8--new-workspace.test.ts.snap index 73c783a01..d36e3f4b8 100644 --- a/e2e/src/__snapshots__/eslint-8--new-workspace.test.ts.snap +++ b/e2e/src/__snapshots__/eslint-8--new-workspace.test.ts.snap @@ -14,7 +14,7 @@ exports[`eslint-8--new-workspace should pass linting after creating a new worksp "@typescript-eslint/eslint-plugin": "7.11.0", "@typescript-eslint/parser": "7.11.0", "eslint": "8.57.0", - "jasmine-core": "~5.5.0", + "jasmine-core": "~5.6.0", "karma": "~6.4.0", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", diff --git a/e2e/src/__snapshots__/inline-template-fixer.test.ts.snap b/e2e/src/__snapshots__/inline-template-fixer.test.ts.snap index f89d54f1a..d9efbfd1c 100644 --- a/e2e/src/__snapshots__/inline-template-fixer.test.ts.snap +++ b/e2e/src/__snapshots__/inline-template-fixer.test.ts.snap @@ -22,14 +22,14 @@ exports[`inline-template-fixer should generate the expected inline template fixe "@angular/compiler-cli": "^19.X.X", "@types/jasmine": "~5.1.0", "angular-eslint": "0.0.0-e2e", - "eslint": "^9.20.0", - "jasmine-core": "~5.5.0", + "eslint": "^9.21.0", + "jasmine-core": "~5.6.0", "karma": "~6.4.0", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", "typescript": "~5.X.X", - "typescript-eslint": "8.23.0" + "typescript-eslint": "8.25.0" } `; diff --git a/e2e/src/__snapshots__/new-workspace-create-application-false-ng-add-then-project.test.ts.snap b/e2e/src/__snapshots__/new-workspace-create-application-false-ng-add-then-project.test.ts.snap index c232769e4..375a3b989 100644 --- a/e2e/src/__snapshots__/new-workspace-create-application-false-ng-add-then-project.test.ts.snap +++ b/e2e/src/__snapshots__/new-workspace-create-application-false-ng-add-then-project.test.ts.snap @@ -7,15 +7,15 @@ exports[`new-workspace-create-application-false-ng-add-then-project should pass "@angular/compiler-cli": "^19.X.X", "@types/jasmine": "~5.1.0", "angular-eslint": "0.0.0-e2e", - "eslint": "^9.20.0", - "jasmine-core": "~5.5.0", + "eslint": "^9.21.0", + "jasmine-core": "~5.6.0", "karma": "~6.4.0", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", "typescript": "~5.X.X", - "typescript-eslint": "8.23.0" + "typescript-eslint": "8.25.0" } `; diff --git a/e2e/src/__snapshots__/new-workspace-create-application-false-project-then-ng-add.test.ts.snap b/e2e/src/__snapshots__/new-workspace-create-application-false-project-then-ng-add.test.ts.snap index 809bc81a9..9e1965a5e 100644 --- a/e2e/src/__snapshots__/new-workspace-create-application-false-project-then-ng-add.test.ts.snap +++ b/e2e/src/__snapshots__/new-workspace-create-application-false-project-then-ng-add.test.ts.snap @@ -7,15 +7,15 @@ exports[`new-workspace-create-application-false-project-then-ng-add should pass "@angular/compiler-cli": "^19.X.X", "@types/jasmine": "~5.1.0", "angular-eslint": "0.0.0-e2e", - "eslint": "^9.20.0", - "jasmine-core": "~5.5.0", + "eslint": "^9.21.0", + "jasmine-core": "~5.6.0", "karma": "~6.4.0", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", "typescript": "~5.X.X", - "typescript-eslint": "8.23.0" + "typescript-eslint": "8.25.0" } `; diff --git a/e2e/src/__snapshots__/new-workspace-type-module.test.ts.snap b/e2e/src/__snapshots__/new-workspace-type-module.test.ts.snap index a6b0457e3..d4367ea6d 100644 --- a/e2e/src/__snapshots__/new-workspace-type-module.test.ts.snap +++ b/e2e/src/__snapshots__/new-workspace-type-module.test.ts.snap @@ -7,8 +7,8 @@ exports[`new-workspace-type-module should pass linting after creating a new work "@angular/compiler-cli": "^19.X.X", "@types/jasmine": "~5.1.0", "angular-eslint": "0.0.0-e2e", - "eslint": "^9.20.0", - "jasmine-core": "~5.5.0", + "eslint": "^9.21.0", + "jasmine-core": "~5.6.0", "karma": "~6.4.0", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", @@ -16,7 +16,7 @@ exports[`new-workspace-type-module should pass linting after creating a new work "karma-jasmine-html-reporter": "~2.1.0", "ng-packagr": "^19.X.X", "typescript": "~5.X.X", - "typescript-eslint": "8.23.0" + "typescript-eslint": "8.25.0" } `; diff --git a/e2e/src/__snapshots__/new-workspace.test.ts.snap b/e2e/src/__snapshots__/new-workspace.test.ts.snap index 324dc6a5a..d9f64bf1b 100644 --- a/e2e/src/__snapshots__/new-workspace.test.ts.snap +++ b/e2e/src/__snapshots__/new-workspace.test.ts.snap @@ -7,8 +7,8 @@ exports[`new-workspace should pass linting after creating a new workspace from s "@angular/compiler-cli": "^19.X.X", "@types/jasmine": "~5.1.0", "angular-eslint": "0.0.0-e2e", - "eslint": "^9.20.0", - "jasmine-core": "~5.5.0", + "eslint": "^9.21.0", + "jasmine-core": "~5.6.0", "karma": "~6.4.0", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", @@ -16,7 +16,7 @@ exports[`new-workspace should pass linting after creating a new workspace from s "karma-jasmine-html-reporter": "~2.1.0", "ng-packagr": "^19.X.X", "typescript": "~5.X.X", - "typescript-eslint": "8.23.0" + "typescript-eslint": "8.25.0" } `; diff --git a/package.json b/package.json index 6bc37ac4c..70d440fbd 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,9 @@ "private": true, "description": "The tooling which enables ESLint to work with Angular projects", "volta": { - "node": "20.18.2" + "node": "20.18.3" }, - "packageManager": "pnpm@9.15.5", + "packageManager": "pnpm@10.5.2", "contributors": [ "James Henry " ], @@ -34,6 +34,7 @@ "check-rule-lists": "nx run-many -t check-rule-lists", "update-rule-lists": "nx run-many -t update-rule-lists", "update-rule-configs": "nx run-many -t update-rule-configs", + "update-native-event-names": "nx run utils:update-native-event-names", "prepare": "husky" }, "config": { @@ -47,37 +48,37 @@ ] }, "devDependencies": { - "@angular/cli": "19.1.6", - "@angular/compiler": "19.1.5", + "@angular/cli": "19.2.0", + "@angular/compiler": "19.2.0", "@commitlint/cli": "19.7.1", "@commitlint/config-conventional": "19.7.1", - "@nx/devkit": "20.3.3", - "@nx/esbuild": "20.3.3", - "@nx/eslint": "20.3.3", - "@nx/eslint-plugin": "20.3.3", - "@nx/jest": "20.3.3", - "@nx/js": "20.3.3", - "@nx/plugin": "20.3.3", - "@nx/workspace": "20.3.3", - "@schematics/angular": "19.1.6", + "@mdn/browser-compat-data": "5.6.43", + "@nx/devkit": "20.4.6", + "@nx/esbuild": "20.4.6", + "@nx/eslint": "20.4.6", + "@nx/eslint-plugin": "20.4.6", + "@nx/jest": "20.4.6", + "@nx/js": "20.4.6", + "@nx/plugin": "20.4.6", + "@nx/workspace": "20.4.6", + "@schematics/angular": "19.2.0", "@swc-node/register": "1.10.9", "@swc/cli": "0.6.0", - "@swc/core": "1.10.15", + "@swc/core": "1.11.5", "@swc/helpers": "0.5.15", "@types/eslint": "9.6.1", "@types/eslint-scope": "3.7.7", "@types/jest": "29.5.12", - "@types/node": "20.17.17", + "@types/node": "20.17.22", "@types/semver": "^7.5.8", "@types/yargs": "^17.0.33", - "@typescript-eslint/rule-tester": "8.23.0", - "@typescript-eslint/types": "8.23.0", - "@typescript-eslint/utils": "8.23.0", - "chalk": "4.1.2", + "@typescript-eslint/rule-tester": "8.25.0", + "@typescript-eslint/types": "8.25.0", + "@typescript-eslint/utils": "8.25.0", "cz-conventional-changelog": "3.3.0", "esbuild": "^0.25.0", - "eslint": "9.20.0", - "eslint-config-prettier": "10.0.1", + "eslint": "9.21.0", + "eslint-config-prettier": "10.0.2", "execa": "5.1.1", "husky": "9.1.7", "jest": "29.7.0", @@ -86,8 +87,9 @@ "jsonc-eslint-parser": "^2.1.0", "lint-staged": "15.4.3", "ncp": "2.0.0", - "nx": "20.3.3", - "prettier": "3.5.0", + "nx": "20.4.6", + "picocolors": "1.1.1", + "prettier": "3.5.2", "prettier-v2-for-jest-inline-snapshots": "npm:prettier@^2", "rimraf": "5.0.10", "semver": "^7.6.2", @@ -96,7 +98,7 @@ "tslib": "^2.4.1", "tsx": "^4.7.3", "typescript": "5.7.3", - "typescript-eslint": "8.23.0", + "typescript-eslint": "8.25.0", "verdaccio": "6.0.5", "yargs": "17.7.2" }, diff --git a/packages/angular-eslint/CHANGELOG.md b/packages/angular-eslint/CHANGELOG.md index c522d2391..ac620ab30 100644 --- a/packages/angular-eslint/CHANGELOG.md +++ b/packages/angular-eslint/CHANGELOG.md @@ -1,3 +1,17 @@ +## 19.2.0 (2025-03-02) + +### 🚀 Features + +- **eslint-plugin:** add rule require-lifecycle-on-prototype ([#2259](https://github.com/angular-eslint/angular-eslint/pull/2259)) + +### 🩹 Fixes + +- **eslint-plugin-template:** find inline templates on components in blocks ([#2238](https://github.com/angular-eslint/angular-eslint/pull/2238)) + +### ❤️ Thank You + +- Dave @reduckted + ## 19.1.0 (2025-02-09) ### 🚀 Features diff --git a/packages/angular-eslint/package.json b/packages/angular-eslint/package.json index c6fa5342b..cec4460fb 100644 --- a/packages/angular-eslint/package.json +++ b/packages/angular-eslint/package.json @@ -1,6 +1,6 @@ { "name": "angular-eslint", - "version": "19.1.0", + "version": "19.2.0", "description": "The tooling which enables ESLint to work with Angular projects", "license": "MIT", "main": "dist/index.js", diff --git a/packages/angular-eslint/src/configs/ts-all.ts b/packages/angular-eslint/src/configs/ts-all.ts index 7c2659c69..f8afc489b 100644 --- a/packages/angular-eslint/src/configs/ts-all.ts +++ b/packages/angular-eslint/src/configs/ts-all.ts @@ -46,6 +46,7 @@ export default ( '@angular-eslint/prefer-signals': 'error', '@angular-eslint/prefer-standalone': 'error', '@angular-eslint/relative-url-prefix': 'error', + '@angular-eslint/require-lifecycle-on-prototype': 'error', '@angular-eslint/require-localize-metadata': 'error', '@angular-eslint/runtime-localize': 'error', '@angular-eslint/sort-lifecycle-methods': 'error', diff --git a/packages/angular-eslint/tsconfig.spec.json b/packages/angular-eslint/tsconfig.spec.json index 9e3919185..4a8e7c54f 100644 --- a/packages/angular-eslint/tsconfig.spec.json +++ b/packages/angular-eslint/tsconfig.spec.json @@ -2,7 +2,8 @@ "extends": "../../tsconfig.base.json", "compilerOptions": { "outDir": "../../dist/out-tsc/angular-eslint", - "types": ["jest", "node"] + "types": ["jest", "node"], + "sourceMap": true }, "include": [ "**/*.spec.ts", diff --git a/packages/builder/CHANGELOG.md b/packages/builder/CHANGELOG.md index 0eb92a91e..20563a0d3 100644 --- a/packages/builder/CHANGELOG.md +++ b/packages/builder/CHANGELOG.md @@ -1,3 +1,13 @@ +## 19.2.0 (2025-03-02) + +### 🩹 Fixes + +- **eslint-plugin-template:** find inline templates on components in blocks ([#2238](https://github.com/angular-eslint/angular-eslint/pull/2238)) + +### ❤️ Thank You + +- Dave @reduckted + ## 19.1.0 (2025-02-09) This was a version bump only for builder to align it with other projects, there were no code changes. diff --git a/packages/builder/package.json b/packages/builder/package.json index e71026128..f2bee75d5 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@angular-eslint/builder", - "version": "19.1.0", + "version": "19.2.0", "description": "Angular CLI builder for ESLint", "license": "MIT", "main": "dist/index.js", diff --git a/packages/builder/tsconfig.spec.json b/packages/builder/tsconfig.spec.json index 4314ead62..3b9782cf1 100644 --- a/packages/builder/tsconfig.spec.json +++ b/packages/builder/tsconfig.spec.json @@ -2,7 +2,8 @@ "extends": "../../tsconfig.base.json", "compilerOptions": { "outDir": "../../dist/out-tsc/builder", - "types": ["jest", "node"] + "types": ["jest", "node"], + "sourceMap": true }, "include": [ "**/*.spec.ts", diff --git a/packages/bundled-angular-compiler/CHANGELOG.md b/packages/bundled-angular-compiler/CHANGELOG.md index 88f937eb1..81b295fbf 100644 --- a/packages/bundled-angular-compiler/CHANGELOG.md +++ b/packages/bundled-angular-compiler/CHANGELOG.md @@ -1,3 +1,7 @@ +## 19.2.0 (2025-03-02) + +This was a version bump only for bundled-angular-compiler to align it with other projects, there were no code changes. + ## 19.1.0 (2025-02-09) This was a version bump only for bundled-angular-compiler to align it with other projects, there were no code changes. diff --git a/packages/bundled-angular-compiler/package.json b/packages/bundled-angular-compiler/package.json index 802d87dd5..95635bb30 100644 --- a/packages/bundled-angular-compiler/package.json +++ b/packages/bundled-angular-compiler/package.json @@ -1,6 +1,6 @@ { "name": "@angular-eslint/bundled-angular-compiler", - "version": "19.1.0", + "version": "19.2.0", "description": "A CJS bundled version of @angular/compiler", "license": "MIT", "main": "dist/index.js", diff --git a/packages/eslint-plugin-template/CHANGELOG.md b/packages/eslint-plugin-template/CHANGELOG.md index 2fa66c5da..8f4f34e67 100644 --- a/packages/eslint-plugin-template/CHANGELOG.md +++ b/packages/eslint-plugin-template/CHANGELOG.md @@ -1,3 +1,19 @@ +## 19.2.0 (2025-03-02) + +### 🩹 Fixes + +- **prefer-static-string-properties:** exclude special attributes ([#2273](https://github.com/angular-eslint/angular-eslint/pull/2273)) +- **prefer-static-string-properties:** resolve bug with directives ([#2271](https://github.com/angular-eslint/angular-eslint/pull/2271)) +- **eslint-plugin-template:** find inline templates on components in blocks ([#2238](https://github.com/angular-eslint/angular-eslint/pull/2238)) +- **eslint-plugin-template:** [prefer-static-string-properties] do not check structural directives ([#2253](https://github.com/angular-eslint/angular-eslint/pull/2253)) +- **eslint-plugin-template:** [prefer-self-closing-tags] allow nested ng-content ([#2257](https://github.com/angular-eslint/angular-eslint/pull/2257)) +- **eslint-plugin-template:** [prefer-self-closing-tags] do not treat comments as whitespace ([#2256](https://github.com/angular-eslint/angular-eslint/pull/2256)) + +### ❤️ Thank You + +- Dave @reduckted +- Marie Briand @mbriand-lucca + ## 19.1.0 (2025-02-09) ### 🚀 Features diff --git a/packages/eslint-plugin-template/docs/rules/attributes-order.md b/packages/eslint-plugin-template/docs/rules/attributes-order.md index 7d959b320..d3ce4485a 100644 --- a/packages/eslint-plugin-template/docs/rules/attributes-order.md +++ b/packages/eslint-plugin-template/docs/rules/attributes-order.md @@ -28,6 +28,9 @@ The rule accepts an options object with the following properties: ```ts interface Options { + /** + * Default: `false` + */ alphabetical?: boolean; /** * Default: `["STRUCTURAL_DIRECTIVE","TEMPLATE_REFERENCE","ATTRIBUTE_BINDING","INPUT_BINDING","TWO_WAY_BINDING","OUTPUT_BINDING"]` diff --git a/packages/eslint-plugin-template/docs/rules/eqeqeq.md b/packages/eslint-plugin-template/docs/rules/eqeqeq.md index 6cd6f6485..135e3df44 100644 --- a/packages/eslint-plugin-template/docs/rules/eqeqeq.md +++ b/packages/eslint-plugin-template/docs/rules/eqeqeq.md @@ -30,6 +30,9 @@ The rule accepts an options object with the following properties: ```ts interface Options { + /** + * Default: `false` + */ allowNullOrUndefined?: boolean; } diff --git a/packages/eslint-plugin-template/docs/rules/label-has-associated-control.md b/packages/eslint-plugin-template/docs/rules/label-has-associated-control.md index bd07d188b..5bce6f989 100644 --- a/packages/eslint-plugin-template/docs/rules/label-has-associated-control.md +++ b/packages/eslint-plugin-template/docs/rules/label-has-associated-control.md @@ -27,6 +27,9 @@ The rule accepts an options object with the following properties: ```ts interface Options { + /** + * Default: `false` + */ checkIds?: boolean; /** * Default: `["input","meter","output","progress","select","textarea"]` diff --git a/packages/eslint-plugin-template/docs/rules/no-call-expression.md b/packages/eslint-plugin-template/docs/rules/no-call-expression.md index 365bb6fd8..631f63788 100644 --- a/packages/eslint-plugin-template/docs/rules/no-call-expression.md +++ b/packages/eslint-plugin-template/docs/rules/no-call-expression.md @@ -31,7 +31,13 @@ interface Options { * Default: `[]` */ allowList?: string[]; + /** + * Default: `undefined` + */ allowPrefix?: string; + /** + * Default: `undefined` + */ allowSuffix?: string; } diff --git a/packages/eslint-plugin-template/docs/rules/no-duplicate-attributes.md b/packages/eslint-plugin-template/docs/rules/no-duplicate-attributes.md index ec07303d8..ba3b35be1 100644 --- a/packages/eslint-plugin-template/docs/rules/no-duplicate-attributes.md +++ b/packages/eslint-plugin-template/docs/rules/no-duplicate-attributes.md @@ -37,6 +37,8 @@ interface Options { allowTwoWayDataBinding?: boolean; /** * Whether or not Angular style precedence is allowed as an exception to the rule. See https://angular.dev/guide/templates/class-binding#styling-precedence + * + * Default: `false` */ allowStylePrecedenceDuplicates?: boolean; /** diff --git a/packages/eslint-plugin-template/docs/rules/no-inline-styles.md b/packages/eslint-plugin-template/docs/rules/no-inline-styles.md index 4420da39b..d10af8d2d 100644 --- a/packages/eslint-plugin-template/docs/rules/no-inline-styles.md +++ b/packages/eslint-plugin-template/docs/rules/no-inline-styles.md @@ -27,7 +27,13 @@ The rule accepts an options object with the following properties: ```ts interface Options { + /** + * Default: `false` + */ allowNgStyle?: boolean; + /** + * Default: `false` + */ allowBindToStyle?: boolean; } diff --git a/packages/eslint-plugin-template/docs/rules/prefer-self-closing-tags.md b/packages/eslint-plugin-template/docs/rules/prefer-self-closing-tags.md index 40569ad05..4e7fafcd1 100644 --- a/packages/eslint-plugin-template/docs/rules/prefer-self-closing-tags.md +++ b/packages/eslint-plugin-template/docs/rules/prefer-self-closing-tags.md @@ -287,6 +287,34 @@ The rule does not have any configuration options. ~~~~~~~~~~~~~ ``` +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/template/prefer-self-closing-tags": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```html + + +~~~~~~~~~~~~~ +``` +
@@ -605,6 +633,58 @@ The rule does not have any configuration options. #### ✅ Valid Code +```html +  +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/template/prefer-self-closing-tags": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```html + +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/template/prefer-self-closing-tags": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + ```html + + +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/template/prefer-self-closing-tags": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```html + +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/template/prefer-self-closing-tags": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```html +Fallback +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/template/prefer-self-closing-tags": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + **Filename: src/index.html** ```html @@ -690,7 +850,7 @@ The rule does not have any configuration options. #### ✅ Valid Code ```html - + ``` diff --git a/packages/eslint-plugin-template/docs/rules/prefer-static-string-properties.md b/packages/eslint-plugin-template/docs/rules/prefer-static-string-properties.md index 6df36f473..efa4c7c50 100644 --- a/packages/eslint-plugin-template/docs/rules/prefer-static-string-properties.md +++ b/packages/eslint-plugin-template/docs/rules/prefer-static-string-properties.md @@ -277,6 +277,188 @@ The rule does not have any configuration options. ``` +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/template/prefer-static-string-properties": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```html + +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/template/prefer-static-string-properties": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```html + +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/template/prefer-static-string-properties": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```html + +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/template/prefer-static-string-properties": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```html + +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/template/prefer-static-string-properties": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```html + +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/template/prefer-static-string-properties": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```html + +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/template/prefer-static-string-properties": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```html + +``` +
diff --git a/packages/eslint-plugin-template/package.json b/packages/eslint-plugin-template/package.json index b7b2a41bf..0419d4f52 100644 --- a/packages/eslint-plugin-template/package.json +++ b/packages/eslint-plugin-template/package.json @@ -1,6 +1,6 @@ { "name": "@angular-eslint/eslint-plugin-template", - "version": "19.1.0", + "version": "19.2.0", "description": "ESLint plugin for Angular Templates", "license": "MIT", "main": "dist/index.js", diff --git a/packages/eslint-plugin-template/src/processors.ts b/packages/eslint-plugin-template/src/processors.ts index 26777d12f..d64a5ba68 100644 --- a/packages/eslint-plugin-template/src/processors.ts +++ b/packages/eslint-plugin-template/src/processors.ts @@ -64,9 +64,7 @@ export function preprocessComponentFile( /* setParentNodes */ true, ); - const classDeclarations = sourceFile.statements.filter((s) => - ts.isClassDeclaration(s), - ) as ts.ClassDeclaration[]; + const classDeclarations = getClassDeclarationFromSourceFile(sourceFile); if (!classDeclarations || !classDeclarations.length) { return noopResult; } @@ -199,6 +197,61 @@ export function preprocessComponentFile( } } +function getClassDeclarationFromSourceFile( + sourceFile: ts.SourceFile, +): ts.ClassDeclaration[] { + const classDeclarations: ts.ClassDeclaration[] = []; + + visit(sourceFile); + + return classDeclarations; + + function visit(node: ts.Node) { + if (ts.isClassDeclaration(node)) { + classDeclarations.push(node); + return; + } + + // Class declarations are usually at the top-level, but there are + // some situations where they might be nested, such as in test files. + // If the node could have a class declaration somewhere in its + // descendant nodes, then we will recurse down into each child node. + + // Keywords, tokens and trivia all come before `FirstNode`. They won't + // contain child nodes anyway, but we can skip them to save some time. + // Likewise, we can skip nodes that are part of JSDoc comments. + if ( + node.kind < ts.SyntaxKind.FirstNode || + node.kind > ts.SyntaxKind.FirstJSDocNode + ) { + return; + } + + // Type nodes can be skipped. + if ( + node.kind >= ts.SyntaxKind.TypePredicate && + node.kind <= ts.SyntaxKind.ImportType + ) { + return; + } + + // Some specific kinds of nodes can be skipped because + // we know that they cannot contain class declarations. + switch (node.kind) { + case ts.SyntaxKind.InterfaceDeclaration: + case ts.SyntaxKind.EnumDeclaration: + case ts.SyntaxKind.ImportEqualsDeclaration: + case ts.SyntaxKind.ImportDeclaration: + case ts.SyntaxKind.ImportClause: + return; + } + + // For everything else, we'll play it safe + // and recurse down into the child nodes. + ts.forEachChild(node, visit); + } +} + export function postprocessComponentFile( multiDimensionalMessages: { ruleId: string; diff --git a/packages/eslint-plugin-template/src/rules/prefer-self-closing-tags.ts b/packages/eslint-plugin-template/src/rules/prefer-self-closing-tags.ts index e984123b7..f31c9d728 100644 --- a/packages/eslint-plugin-template/src/rules/prefer-self-closing-tags.ts +++ b/packages/eslint-plugin-template/src/rules/prefer-self-closing-tags.ts @@ -3,7 +3,6 @@ import type { TmplAstElement, TmplAstTemplate, } from '@angular-eslint/bundled-angular-compiler'; -import { TmplAstText } from '@angular-eslint/bundled-angular-compiler'; import { getTemplateParserServices } from '@angular-eslint/utils'; import { createESLintRule } from '../utils/create-eslint-rule'; import { getDomElements } from '../utils/get-dom-elements'; @@ -31,7 +30,7 @@ export default createESLintRule({ create(context) { const parserServices = getTemplateParserServices(context); - // angular 18 doesnt support self closing tags in index.html + // angular 18 doesn't support self closing tags in index.html if (/src[\\/]index\.html$/.test(context.physicalFilename)) { // If it is, return an empty object to skip this rule return {}; @@ -55,30 +54,37 @@ export default createESLintRule({ function processElementOrTemplateNode( node: TmplAstElement | TmplAstTemplate, ) { - const { children, startSourceSpan, endSourceSpan } = node; + const { startSourceSpan, endSourceSpan } = node; - const noContent = - !children.length || - children.every((node) => { - // If the node is only whitespace, we can consider it empty. - // We need to look at the text from the source code, rather - // than the `TmplAstText.value` property. The `value` property - // contains the HTML-decoded value, so if the raw text contains - // ` `, that is decoded to a space, but we don't want to - // treat that as empty text. - return ( - node instanceof TmplAstText && - context.sourceCode.text - .slice(node.sourceSpan.start.offset, node.sourceSpan.end.offset) - .trim() === '' - ); - }); - const noCloseTag = + if ( !endSourceSpan || (startSourceSpan.start.offset === endSourceSpan.start.offset && - startSourceSpan.end.offset === endSourceSpan.end.offset); + startSourceSpan.end.offset === endSourceSpan.end.offset) + ) { + // No close tag. + return; + } - if (!noContent || noCloseTag) { + // If the element only contains whitespace, we can consider it + // empty. We cannot use the children to reliably determine whether + // the element only contains whitespace because the template + // parser will HTML-decoded the text. For example, if the raw + // content contains ` `, that is decoded to a space, but + // we need to treat that as content that should be kept. + // + // Likewise, if the node only contains comments, those comments + // will not appear in the syntax tree, which results in the + // content appearing empty. + // + // So instead of using the syntax tree, we'll look at the + // source code and get the text that appears between the + // start element and the end element. + if ( + context.sourceCode.text + .slice(startSourceSpan.end.offset, endSourceSpan.start.offset) + .trim() !== '' + ) { + // The element has content. return; } @@ -101,26 +107,32 @@ export default createESLintRule({ function processContentNode(node: TmplAstContent) { const { sourceSpan } = node; const ngContentCloseTag = '
'; - if (sourceSpan.toString().includes(ngContentCloseTag)) { - const whiteSpaceContent = sourceSpan - .toString() - .match(/]*>(\s*)<\/ng-content>/m) - ?.at(1); - const hasContent = typeof whiteSpaceContent === 'undefined'; - if (hasContent) { - return; + const source = sourceSpan.toString(); + if (source.endsWith(ngContentCloseTag)) { + // Content nodes don't have information about `startSourceSpan` + // and `endSourceSpan`, so we need to calculate where the inner + // HTML is ourselves. We know that the source ends with + // "
", so we know where inner HTML ends. + // We just need to find where the inner HTML starts. + const startOfInnerHTML = findStartOfNgContentInnerHTML(source); + // If the start of the inner HTML is also where the close tag starts, + // then there is no inner HTML and we can avoid slicing the string. + if (startOfInnerHTML < source.length - ngContentCloseTag.length) { + if ( + source.slice(startOfInnerHTML, -ngContentCloseTag.length).trim() + .length > 0 + ) { + return; + } } - const openingTagLastChar = - // This is more than the minimum length of a ng-content element - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - sourceSpan - .toString() - .at(-2 - ngContentCloseTag.length - whiteSpaceContent.length)!; + // The source will always have at least "({ fix: (fixer) => fixer.replaceTextRange( [ - sourceSpan.end.offset - - ngContentCloseTag.length - - whiteSpaceContent.length - - 1, + sourceSpan.start.offset + startOfInnerHTML - 1, sourceSpan.end.offset, ], closingTagPrefix + '/>', @@ -155,6 +164,32 @@ function isContentNode( return 'name' in node && node.name === 'ng-content'; } +function findStartOfNgContentInnerHTML(html: string): number { + let quote: string | undefined; + + // The HTML will always start with at least "': + return i + 1; + case '"': + case "'": + quote = char; + break; + } + } + } + + return html.length; +} + function getClosingTagPrefix(openingTagLastChar: string): string { const hasOwnWhitespace = openingTagLastChar.trim() === ''; return hasOwnWhitespace ? '' : ' '; diff --git a/packages/eslint-plugin-template/src/rules/prefer-static-string-properties.ts b/packages/eslint-plugin-template/src/rules/prefer-static-string-properties.ts index 837dc63a9..49236bd9b 100644 --- a/packages/eslint-plugin-template/src/rules/prefer-static-string-properties.ts +++ b/packages/eslint-plugin-template/src/rules/prefer-static-string-properties.ts @@ -30,8 +30,20 @@ export default createESLintRule({ const parserServices = getTemplateParserServices(context); return { - BoundAttribute({ name, sourceSpan, value }: TmplAstBoundAttribute) { + ['BoundAttribute.inputs']({ + name, + sourceSpan, + keySpan, + value, + }: TmplAstBoundAttribute) { + // Exclude @xxx (Animation) and xx.color + // When attribute start with "*", keySpan details is null so *ngSwitchCase is excluded + const isBindingProperty = + keySpan?.details && + !keySpan.details.includes('@') && + !keySpan.details.includes('.'); if ( + isBindingProperty && value instanceof ASTWithSource && value.ast instanceof LiteralPrimitive && typeof value.ast.value === 'string' @@ -42,6 +54,7 @@ export default createESLintRule({ // quotes when we convert it to a property assignment. const quote = value.source?.trimStart().at(0) === '"' ? "'" : '"'; const literal = value.ast.value; + context.report({ loc: parserServices.convertNodeSourceSpanToLoc(sourceSpan), messageId: 'preferStaticStringProperties', diff --git a/packages/eslint-plugin-template/tests/processors.spec.ts b/packages/eslint-plugin-template/tests/processors.spec.ts index b197945c0..49d71d357 100644 --- a/packages/eslint-plugin-template/tests/processors.spec.ts +++ b/packages/eslint-plugin-template/tests/processors.spec.ts @@ -431,6 +431,82 @@ describe('extract-inline-html', () => { ]); }); }); + + describe('components within blocks', () => { + it(`should support extracting inline templates from components that are not at the top-level`, () => { + const input = ` + import { Component } from '@angular/core'; + + describe('nested', () => { + describe('arrow', () => { + @Component({ + selector: 'app-a', + template: '

Arrow

', + styleUrls: ['./a.component.scss'] + }) + class ArrowComponent {} + }); + + describe('function', function () { + @Component({ + selector: 'app-b', + template: '

Function

', + styleUrls: ['./b.component.scss'] + }) + class FunctionComponent {} + }); + + (() => { + @Component({ + selector: 'app-b', + template: '

Parenthesized

', + styleUrls: ['./b.component.scss'] + }) + class ParenthesizedComponent {} + }); + }); + + // The following statements test the early-exiting + // logic in the processor when it walks the + // syntax tree to find class declarations. + + type A = number; + + let b: string[] = [1, 2, 3]; + + enum C { + D = 1, + } + + interface E { + f: string; + } + `; + expect( + processors['extract-inline-html'].preprocess( + input, + 'multiple-in-blocks.spec.ts', + ), + ).toEqual([ + input, + { + filename: + 'inline-template-multiple-in-blocks.spec.ts-1.component.html', + text: '

Arrow

', + }, + { + filename: + 'inline-template-multiple-in-blocks.spec.ts-2.component.html', + text: '

Function

', + }, + { + filename: + 'inline-template-multiple-in-blocks.spec.ts-3.component.html', + text: '

Parenthesized

', + }, + ]); + }); + }); }); describe('postprocess()', () => { diff --git a/packages/eslint-plugin-template/tests/rules/prefer-self-closing-tags/cases.ts b/packages/eslint-plugin-template/tests/rules/prefer-self-closing-tags/cases.ts index 87b107e5c..e15bf8555 100644 --- a/packages/eslint-plugin-template/tests/rules/prefer-self-closing-tags/cases.ts +++ b/packages/eslint-plugin-template/tests/rules/prefer-self-closing-tags/cases.ts @@ -28,14 +28,21 @@ export const valid: readonly (string | ValidTestCase)[] = [ '', '', `Fallback content`, + ` `, + ` `, `

Fallback content

`, + ` + + `, + ``, + `Fallback`, { code: '', filename: 'src/index.html' }, ' ', - ' ', + ' ', ]; export const invalid: readonly InvalidTestCase[] = [ @@ -171,4 +178,18 @@ export const invalid: readonly InvalidTestCase[] = [ `, messageId, }), + convertAnnotatedSourceToFailureCase({ + description: + 'it should fail on ng-content elements with no content and > in the selector', + annotatedSource: ` + + + ~~~~~~~~~~~~~ + `, + annotatedOutput: ` + + + `, + messageId, + }), ]; diff --git a/packages/eslint-plugin-template/tests/rules/prefer-static-string-properties/cases.ts b/packages/eslint-plugin-template/tests/rules/prefer-static-string-properties/cases.ts index b41828929..d4dbce1b8 100644 --- a/packages/eslint-plugin-template/tests/rules/prefer-static-string-properties/cases.ts +++ b/packages/eslint-plugin-template/tests/rules/prefer-static-string-properties/cases.ts @@ -17,6 +17,13 @@ export const valid: readonly (string | ValidTestCase)[] = [ '', '', '', + ``, + ``, + ``, + ``, + ``, + ``, + ``, ]; export const invalid: readonly InvalidTestCase[] = [ diff --git a/packages/eslint-plugin-template/tsconfig.spec.json b/packages/eslint-plugin-template/tsconfig.spec.json index 688bfd8b7..3cd2d1219 100644 --- a/packages/eslint-plugin-template/tsconfig.spec.json +++ b/packages/eslint-plugin-template/tsconfig.spec.json @@ -3,7 +3,8 @@ "compilerOptions": { "outDir": "../../dist/out-tsc/eslint-plugin-template", "types": ["jest", "node"], - "resolveJsonModule": true + "resolveJsonModule": true, + "sourceMap": true }, "include": [ "**/*.spec.ts", diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md index 5df00e736..54137471a 100644 --- a/packages/eslint-plugin/CHANGELOG.md +++ b/packages/eslint-plugin/CHANGELOG.md @@ -1,3 +1,17 @@ +## 19.2.0 (2025-03-02) + +### 🚀 Features + +- **eslint-plugin:** add rule require-lifecycle-on-prototype ([#2259](https://github.com/angular-eslint/angular-eslint/pull/2259)) + +### 🩹 Fixes + +- **eslint-plugin-template:** find inline templates on components in blocks ([#2238](https://github.com/angular-eslint/angular-eslint/pull/2238)) + +### ❤️ Thank You + +- Dave @reduckted + ## 19.1.0 (2025-02-09) ### 🚀 Features diff --git a/packages/eslint-plugin/README.md b/packages/eslint-plugin/README.md index bc2ffa126..67d6134bf 100644 --- a/packages/eslint-plugin/README.md +++ b/packages/eslint-plugin/README.md @@ -24,6 +24,7 @@ Please see https://github.com/angular-eslint/angular-eslint for full usage instr | [`contextual-lifecycle`](https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/contextual-lifecycle.md) | Ensures that lifecycle methods are used in a correct context | :white_check_mark: | | | | [`no-async-lifecycle-method`](https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-async-lifecycle-method.md) | Angular Lifecycle methods should not be async. Angular does not wait for async lifecycle but the code incorrectly suggests it does. | | | | | [`no-attribute-decorator`](https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-attribute-decorator.md) | The @Attribute decorator is used to obtain a single value for an attribute. This is a much less common use-case than getting a stream of values (using @Input), so often the @Attribute decorator is mistakenly used when @Input was what was intended. This rule disallows usage of @Attribute decorator altogether in order to prevent these mistakes. | | | | +| [`require-lifecycle-on-prototype`](https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/require-lifecycle-on-prototype.md) | Ensures that lifecycle methods are defined on the object's prototype instead of on an instance. | | | | | [`sort-lifecycle-methods`](https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/sort-lifecycle-methods.md) | Ensures that lifecycle methods are declared in order of execution | | | | diff --git a/packages/eslint-plugin/docs/rules/component-selector.md b/packages/eslint-plugin/docs/rules/component-selector.md index e66184ab4..7ebf1ebd5 100644 --- a/packages/eslint-plugin/docs/rules/component-selector.md +++ b/packages/eslint-plugin/docs/rules/component-selector.md @@ -28,8 +28,17 @@ The rule accepts an options object with the following properties: ```ts interface Options { + /** + * Default: `""` + */ type?: string | ("element" | "attribute")[]; + /** + * Default: `""` + */ prefix?: string | unknown[]; + /** + * Default: `""` + */ style?: "camelCase" | "kebab-case"; } diff --git a/packages/eslint-plugin/docs/rules/directive-selector.md b/packages/eslint-plugin/docs/rules/directive-selector.md index 7aa18cf4c..b842d6ead 100644 --- a/packages/eslint-plugin/docs/rules/directive-selector.md +++ b/packages/eslint-plugin/docs/rules/directive-selector.md @@ -27,8 +27,17 @@ The rule accepts an options object with the following properties: ```ts interface Options { + /** + * Default: `""` + */ type?: string | ("element" | "attribute")[]; + /** + * Default: `""` + */ prefix?: string | unknown[]; + /** + * Default: `""` + */ style?: "camelCase" | "kebab-case"; } diff --git a/packages/eslint-plugin/docs/rules/prefer-signals.md b/packages/eslint-plugin/docs/rules/prefer-signals.md index efd8e0d93..4db7d80b3 100644 --- a/packages/eslint-plugin/docs/rules/prefer-signals.md +++ b/packages/eslint-plugin/docs/rules/prefer-signals.md @@ -40,6 +40,9 @@ interface Options { * Default: `true` */ preferQuerySignals?: boolean; + /** + * Default: `false` + */ useTypeChecking?: boolean; /** * Default: `[]` diff --git a/packages/eslint-plugin/docs/rules/require-lifecycle-on-prototype.md b/packages/eslint-plugin/docs/rules/require-lifecycle-on-prototype.md new file mode 100644 index 000000000..e6d1d71a5 --- /dev/null +++ b/packages/eslint-plugin/docs/rules/require-lifecycle-on-prototype.md @@ -0,0 +1,1533 @@ + + +
+ +# `@angular-eslint/require-lifecycle-on-prototype` + +Ensures that lifecycle methods are defined on the object's prototype instead of on an instance. + +- Type: problem + +
+ +## Rule Options + +The rule does not have any configuration options. + +
+ +## Usage Examples + +> The following examples are generated automatically from the actual unit tests within the plugin, so you can be assured that their behavior is accurate based on the current commit. + +
+ +
+❌ - Toggle examples of incorrect code for this rule + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +@Component({}) +class Test { + ngOnChanges = func; + ~~~~~~~~~~~ +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +@Component({}) +class Test { + ngOnInit = func; + ~~~~~~~~ +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +@Component({}) +class Test { + ngDoCheck = func; + ~~~~~~~~~ +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +@Component({}) +class Test { + ngAfterContentInit = func; + ~~~~~~~~~~~~~~~~~~ +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +@Component({}) +class Test { + ngAfterContentChecked = func; + ~~~~~~~~~~~~~~~~~~~~~ +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +@Component({}) +class Test { + ngAfterViewInit = func; + ~~~~~~~~~~~~~~~ +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +@Component({}) +class Test { + ngAfterViewChecked = func; + ~~~~~~~~~~~~~~~~~~ +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +@Component({}) +class Test { + ngOnDestroy = func; + ~~~~~~~~~~~ +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +@Directive({}) +class Test { + ngOnChanges = func; + ~~~~~~~~~~~ +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +@Directive({}) +class Test { + ngOnInit = func; + ~~~~~~~~ +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +@Directive({}) +class Test { + ngDoCheck = func; + ~~~~~~~~~ +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +@Directive({}) +class Test { + ngAfterContentInit = func; + ~~~~~~~~~~~~~~~~~~ +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +@Directive({}) +class Test { + ngAfterContentChecked = func; + ~~~~~~~~~~~~~~~~~~~~~ +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +@Directive({}) +class Test { + ngAfterViewInit = func; + ~~~~~~~~~~~~~~~ +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +@Directive({}) +class Test { + ngAfterViewChecked = func; + ~~~~~~~~~~~~~~~~~~ +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +@Directive({}) +class Test { + ngOnDestroy = func; + ~~~~~~~~~~~ +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +@Injectable({}) +class Test { + ngOnDestroy = func; + ~~~~~~~~~~~ +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +@Pipe({}) +class Test { + ngOnDestroy = func; + ~~~~~~~~~~~ +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +class Test { + constructor() { + this.ngOnDestroy = func; + ~~~~~~~~~~~ + } +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +class Test { + constructor() { + this['ngOnDestroy'] = func; + ~~~~~~~~~~~~~ + } +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +class Test { + run() { + this.ngOnDestroy = func; + ~~~~~~~~~~~ + } +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +function hook(component) { + component.ngOnDestroy = func; + ~~~~~~~~~~~ +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +function hook(component) { + (component as any).ngOnDestroy = func; + ~~~~~~~~~~~ +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ❌ Invalid Code + +```ts +class Test { + ['ngOnDestroy'] = func; + ~~~~~~~~~~~~~ +} +``` + +
+ +
+ +--- + +
+ +
+✅ - Toggle examples of correct code for this rule + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Component({}) +class Test { + ngAfterContentChecked() {} +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Component({}) +class Test { + ngAfterContentInit() {} +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Component({}) +class Test { + ngAfterViewChecked() {} +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Component({}) +class Test { + ngAfterViewInit() {} +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Component({}) +class Test { + ngOnChanges() {} +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Component({}) +class Test { + ngOnDestroy() {} +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Component({}) +class Test { + ngOnInit() {} +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Component({}) +class Test { + ngDoCheck() {} +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Directive({}) +class Test { + ngAfterContentChecked() {} +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Directive({}) +class Test { + ngAfterContentInit() {} +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Directive({}) +class Test { + ngAfterViewChecked() {} +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Directive({}) +class Test { + ngAfterViewInit() {} +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Directive({}) +class Test { + ngOnChanges() {} +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Directive({}) +class Test { + ngOnDestroy() {} +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Directive({}) +class Test { + ngOnInit() {} +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Directive({}) +class Test { + ngDoCheck() {} +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Injectable({}) +class Test { + ngOnDestroy() {} +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Pipe({}) +class Test { + ngOnDestroy() {} +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Component({}) +class Test {} +function hook(type) { + type.prototype.ngOnDestroy = () => {}; +} +hook(Test); +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Component({}) +class Test {} +function hook(type) { + (type.prototype as any).ngOnDestroy = () => {}; +} +hook(Test); +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Component({}) +class Test {} +function hook(type) { + type['prototype'].ngOnDestroy = () => {}; +} +hook(Test); +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Component({}) +class Test {} +function hook(type) { + (type.prototype as unknown as { ngOnDestroy: () => void}).ngOnDestroy = () => {}; +} +hook(Test); +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Component({}) +class Test { + onDestroy = () => {} +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Component({}) +class Test { + constructor() { + this.onDestroy = () => {} + } +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Component({}) +class Test { + constructor() { + this['onDestroy'] = () => {} + } +} +``` + +
+ +--- + +
+ +#### Default Config + +```json +{ + "rules": { + "@angular-eslint/require-lifecycle-on-prototype": [ + "error" + ] + } +} +``` + +
+ +#### ✅ Valid Code + +```ts +@Component({}) +class Test { + constructor() { + let ngOnDestroy; + ngOnDestroy = () => {}; + } +} +``` + +
+ +
diff --git a/packages/eslint-plugin/docs/rules/require-localize-metadata.md b/packages/eslint-plugin/docs/rules/require-localize-metadata.md index 98b1cee44..dc2f0ae8f 100644 --- a/packages/eslint-plugin/docs/rules/require-localize-metadata.md +++ b/packages/eslint-plugin/docs/rules/require-localize-metadata.md @@ -27,7 +27,13 @@ The rule accepts an options object with the following properties: ```ts interface Options { + /** + * Default: `false` + */ requireDescription?: boolean; + /** + * Default: `false` + */ requireMeaning?: boolean; } diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 36bf24131..70fa065e8 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@angular-eslint/eslint-plugin", - "version": "19.1.0", + "version": "19.2.0", "description": "ESLint plugin for Angular applications, following https://angular.dev/style-guide", "license": "MIT", "main": "dist/index.js", diff --git a/packages/eslint-plugin/src/configs/all.json b/packages/eslint-plugin/src/configs/all.json index f1b94a661..4cd036f49 100644 --- a/packages/eslint-plugin/src/configs/all.json +++ b/packages/eslint-plugin/src/configs/all.json @@ -32,6 +32,7 @@ "@angular-eslint/prefer-signals": "error", "@angular-eslint/prefer-standalone": "error", "@angular-eslint/relative-url-prefix": "error", + "@angular-eslint/require-lifecycle-on-prototype": "error", "@angular-eslint/require-localize-metadata": "error", "@angular-eslint/runtime-localize": "error", "@angular-eslint/sort-lifecycle-methods": "error", diff --git a/packages/eslint-plugin/src/index.ts b/packages/eslint-plugin/src/index.ts index 1577000ec..0c0fbe8e7 100644 --- a/packages/eslint-plugin/src/index.ts +++ b/packages/eslint-plugin/src/index.ts @@ -88,6 +88,9 @@ import preferStandalone, { import relativeUrlPrefix, { RULE_NAME as relativeUrlPrefixRuleName, } from './rules/relative-url-prefix'; +import requireLifecycleOnPrototype, { + RULE_NAME as requireLifecycleOnPrototypeRuleName, +} from './rules/require-lifecycle-on-prototype'; import requireLocalizeMetadata, { RULE_NAME as requireLocalizeMetadataRuleName, } from './rules/require-localize-metadata'; @@ -153,6 +156,7 @@ export = { [preferStandaloneRuleName]: preferStandalone, [preferOutputReadonlyRuleName]: preferOutputReadonly, [relativeUrlPrefixRuleName]: relativeUrlPrefix, + [requireLifecycleOnPrototypeRuleName]: requireLifecycleOnPrototype, [requireLocalizeMetadataRuleName]: requireLocalizeMetadata, [runtimeLocalizeRuleName]: runtimeLocalize, [sortLifecycleMethodsRuleName]: sortLifecycleMethods, diff --git a/packages/eslint-plugin/src/rules/require-lifecycle-on-prototype.ts b/packages/eslint-plugin/src/rules/require-lifecycle-on-prototype.ts new file mode 100644 index 000000000..f0a2d29b9 --- /dev/null +++ b/packages/eslint-plugin/src/rules/require-lifecycle-on-prototype.ts @@ -0,0 +1,82 @@ +import { AST_NODE_TYPES } from '@typescript-eslint/utils'; +import type { TSESTree } from '@typescript-eslint/utils'; +import { createESLintRule } from '../utils/create-eslint-rule'; +import { ASTUtils, toPattern } from '@angular-eslint/utils'; + +export type Options = []; + +const ISSUE_LINK = 'https://github.com/angular/angular/issues/38241'; + +export type MessageIds = 'defineOnPrototype'; +export const RULE_NAME = 'require-lifecycle-on-prototype'; + +const angularLifecycleMethodsPattern = toPattern([ + ...ASTUtils.ANGULAR_LIFECYCLE_METHODS, +]); +const propertyDefinitionSelector = `PropertyDefinition > ${createAngularLifecycleMethodsPattern('key')}`; +const assignmentSelector = `AssignmentExpression[operator="="] > MemberExpression.left > ${createAngularLifecycleMethodsPattern('property')}`; + +function createAngularLifecycleMethodsPattern(parentProperty: string): string { + return `:matches(Literal.${parentProperty}[value=${angularLifecycleMethodsPattern}], Identifier.${parentProperty}[name=${angularLifecycleMethodsPattern}])`; +} + +export default createESLintRule({ + name: RULE_NAME, + meta: { + type: 'problem', + docs: { + description: + "Ensures that lifecycle methods are defined on the object's prototype instead of on an instance.", + }, + schema: [], + messages: { + defineOnPrototype: `The {{ method }} lifecycle method should be defined on the object's prototype. See more at ${ISSUE_LINK}`, + }, + }, + defaultOptions: [], + create(context) { + return { + [propertyDefinitionSelector]( + node: TSESTree.Literal | TSESTree.Identifier, + ) { + context.report({ + node, + messageId: 'defineOnPrototype', + data: { + method: + node.type === AST_NODE_TYPES.Literal ? node.value : node.name, + }, + }); + }, + [assignmentSelector](node: TSESTree.Literal | TSESTree.Identifier) { + // Assigning to the prototype is OK. + if (!isPrototype((node.parent as TSESTree.MemberExpression).object)) { + context.report({ + node, + messageId: 'defineOnPrototype', + data: { + method: + node.type === AST_NODE_TYPES.Literal ? node.value : node.name, + }, + }); + } + }, + }; + }, +}); + +function isPrototype(node: TSESTree.Node): boolean { + while (node.type === AST_NODE_TYPES.TSAsExpression) { + node = node.expression; + } + if (node.type === AST_NODE_TYPES.MemberExpression) { + switch (node.property.type) { + case AST_NODE_TYPES.Identifier: + return node.property.name === 'prototype'; + + case AST_NODE_TYPES.Literal: + return node.property.value === 'prototype'; + } + } + return false; +} diff --git a/packages/eslint-plugin/tests/rules/require-lifecycle-on-prototype/cases.ts b/packages/eslint-plugin/tests/rules/require-lifecycle-on-prototype/cases.ts new file mode 100644 index 000000000..3c7d29bbf --- /dev/null +++ b/packages/eslint-plugin/tests/rules/require-lifecycle-on-prototype/cases.ts @@ -0,0 +1,476 @@ +import { convertAnnotatedSourceToFailureCase } from '@angular-eslint/test-utils'; +import type { + InvalidTestCase, + ValidTestCase, +} from '@typescript-eslint/rule-tester'; +import type { + MessageIds, + Options, +} from '../../../src/rules/require-lifecycle-on-prototype'; + +const messageId: MessageIds = 'defineOnPrototype'; + +export const valid: readonly (string | ValidTestCase)[] = [ + ` + @Component({}) + class Test { + ngAfterContentChecked() {} + } + `, + ` + @Component({}) + class Test { + ngAfterContentInit() {} + } + `, + ` + @Component({}) + class Test { + ngAfterViewChecked() {} + } + `, + ` + @Component({}) + class Test { + ngAfterViewInit() {} + } + `, + ` + @Component({}) + class Test { + ngOnChanges() {} + } + `, + ` + @Component({}) + class Test { + ngOnDestroy() {} + } + `, + ` + @Component({}) + class Test { + ngOnInit() {} + } + `, + ` + @Component({}) + class Test { + ngDoCheck() {} + } + `, + ` + @Directive({}) + class Test { + ngAfterContentChecked() {} + } + `, + ` + @Directive({}) + class Test { + ngAfterContentInit() {} + } + `, + ` + @Directive({}) + class Test { + ngAfterViewChecked() {} + } + `, + ` + @Directive({}) + class Test { + ngAfterViewInit() {} + } + `, + ` + @Directive({}) + class Test { + ngOnChanges() {} + } + `, + ` + @Directive({}) + class Test { + ngOnDestroy() {} + } + `, + ` + @Directive({}) + class Test { + ngOnInit() {} + } + `, + ` + @Directive({}) + class Test { + ngDoCheck() {} + } + `, + ` + @Injectable({}) + class Test { + ngOnDestroy() {} + } + `, + ` + @Pipe({}) + class Test { + ngOnDestroy() {} + } + `, + ` + @Component({}) + class Test {} + function hook(type) { + type.prototype.ngOnDestroy = () => {}; + } + hook(Test); + `, + ` + @Component({}) + class Test {} + function hook(type) { + (type.prototype as any).ngOnDestroy = () => {}; + } + hook(Test); + `, + ` + @Component({}) + class Test {} + function hook(type) { + type['prototype'].ngOnDestroy = () => {}; + } + hook(Test); + `, + ` + @Component({}) + class Test {} + function hook(type) { + (type.prototype as unknown as { ngOnDestroy: () => void}).ngOnDestroy = () => {}; + } + hook(Test); + `, + ` + @Component({}) + class Test { + onDestroy = () => {} + } + `, + ` + @Component({}) + class Test { + constructor() { + this.onDestroy = () => {} + } + } + `, + ` + @Component({}) + class Test { + constructor() { + this['onDestroy'] = () => {} + } + } + `, + ` + @Component({}) + class Test { + constructor() { + let ngOnDestroy; + ngOnDestroy = () => {}; + } + } + `, +]; + +export const invalid: readonly InvalidTestCase[] = [ + convertAnnotatedSourceToFailureCase({ + description: `should fail when component has ngOnChanges property initialized to value.`, + annotatedSource: ` + @Component({}) + class Test { + ngOnChanges = func; + ~~~~~~~~~~~ + } + `, + messageId, + data: { method: 'ngOnChanges' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when component has ngOnInit property initialized to value.`, + annotatedSource: ` + @Component({}) + class Test { + ngOnInit = func; + ~~~~~~~~ + } + `, + messageId, + data: { method: 'ngOnInit' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when component has ngDoCheck property initialized to value.`, + annotatedSource: ` + @Component({}) + class Test { + ngDoCheck = func; + ~~~~~~~~~ + } + `, + messageId, + data: { method: 'ngDoCheck' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when component has ngAfterContentInit property initialized to value.`, + annotatedSource: ` + @Component({}) + class Test { + ngAfterContentInit = func; + ~~~~~~~~~~~~~~~~~~ + } + `, + messageId, + data: { method: 'ngAfterContentInit' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when component has ngAfterContentChecked property initialized to value.`, + annotatedSource: ` + @Component({}) + class Test { + ngAfterContentChecked = func; + ~~~~~~~~~~~~~~~~~~~~~ + } + `, + messageId, + data: { method: 'ngAfterContentChecked' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when component has ngAfterViewInit property initialized to value.`, + annotatedSource: ` + @Component({}) + class Test { + ngAfterViewInit = func; + ~~~~~~~~~~~~~~~ + } + `, + messageId, + data: { method: 'ngAfterViewInit' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when component has ngAfterViewChecked property initialized to value.`, + annotatedSource: ` + @Component({}) + class Test { + ngAfterViewChecked = func; + ~~~~~~~~~~~~~~~~~~ + } + `, + messageId, + data: { method: 'ngAfterViewChecked' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when component has ngOnDestroy property initialized to value.`, + annotatedSource: ` + @Component({}) + class Test { + ngOnDestroy = func; + ~~~~~~~~~~~ + } + `, + messageId, + data: { method: 'ngOnDestroy' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when directive has ngOnChanges property initialized to value.`, + annotatedSource: ` + @Directive({}) + class Test { + ngOnChanges = func; + ~~~~~~~~~~~ + } + `, + messageId, + data: { method: 'ngOnChanges' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when directive has ngOnInit property initialized to value.`, + annotatedSource: ` + @Directive({}) + class Test { + ngOnInit = func; + ~~~~~~~~ + } + `, + messageId, + data: { method: 'ngOnInit' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when directive has ngDoCheck property initialized to value.`, + annotatedSource: ` + @Directive({}) + class Test { + ngDoCheck = func; + ~~~~~~~~~ + } + `, + messageId, + data: { method: 'ngDoCheck' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when directive has ngAfterContentInit property initialized to value.`, + annotatedSource: ` + @Directive({}) + class Test { + ngAfterContentInit = func; + ~~~~~~~~~~~~~~~~~~ + } + `, + messageId, + data: { method: 'ngAfterContentInit' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when directive has ngAfterContentChecked property initialized to value.`, + annotatedSource: ` + @Directive({}) + class Test { + ngAfterContentChecked = func; + ~~~~~~~~~~~~~~~~~~~~~ + } + `, + messageId, + data: { method: 'ngAfterContentChecked' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when directive has ngAfterViewInit property initialized to value.`, + annotatedSource: ` + @Directive({}) + class Test { + ngAfterViewInit = func; + ~~~~~~~~~~~~~~~ + } + `, + messageId, + data: { method: 'ngAfterViewInit' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when directive has ngAfterViewChecked property initialized to value.`, + annotatedSource: ` + @Directive({}) + class Test { + ngAfterViewChecked = func; + ~~~~~~~~~~~~~~~~~~ + } + `, + messageId, + data: { method: 'ngAfterViewChecked' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when directive has ngOnDestroy property initialized to value.`, + annotatedSource: ` + @Directive({}) + class Test { + ngOnDestroy = func; + ~~~~~~~~~~~ + } + `, + messageId, + data: { method: 'ngOnDestroy' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when injectable has ngOnDestroy property initialized to value.`, + annotatedSource: ` + @Injectable({}) + class Test { + ngOnDestroy = func; + ~~~~~~~~~~~ + } + `, + messageId, + data: { method: 'ngOnDestroy' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when pipe has ngOnDestroy property initialized to value.`, + annotatedSource: ` + @Pipe({}) + class Test { + ngOnDestroy = func; + ~~~~~~~~~~~ + } + `, + messageId, + data: { method: 'ngOnDestroy' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when lifecycle property is initialized in constructor.`, + annotatedSource: ` + class Test { + constructor() { + this.ngOnDestroy = func; + ~~~~~~~~~~~ + } + } + `, + messageId, + data: { method: 'ngOnDestroy' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when lifecycle property is initialized in constructor using literal notation.`, + annotatedSource: ` + class Test { + constructor() { + this['ngOnDestroy'] = func; + ~~~~~~~~~~~~~ + } + } + `, + messageId, + data: { method: 'ngOnDestroy' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when lifecycle property is initialized in method.`, + annotatedSource: ` + class Test { + run() { + this.ngOnDestroy = func; + ~~~~~~~~~~~ + } + } + `, + messageId, + data: { method: 'ngOnDestroy' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when lifecycle property is set outside of class.`, + annotatedSource: ` + function hook(component) { + component.ngOnDestroy = func; + ~~~~~~~~~~~ + } + `, + messageId, + data: { method: 'ngOnDestroy' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when cast is used to set lifecycle property.`, + annotatedSource: ` + function hook(component) { + (component as any).ngOnDestroy = func; + ~~~~~~~~~~~ + } + `, + messageId, + data: { method: 'ngOnDestroy' }, + }), + convertAnnotatedSourceToFailureCase({ + description: `should fail when literal notation is used for property name.`, + annotatedSource: ` + class Test { + ['ngOnDestroy'] = func; + ~~~~~~~~~~~~~ + } + `, + messageId, + data: { method: 'ngOnDestroy' }, + }), +]; diff --git a/packages/eslint-plugin/tests/rules/require-lifecycle-on-prototype/spec.ts b/packages/eslint-plugin/tests/rules/require-lifecycle-on-prototype/spec.ts new file mode 100644 index 000000000..47f8cef9e --- /dev/null +++ b/packages/eslint-plugin/tests/rules/require-lifecycle-on-prototype/spec.ts @@ -0,0 +1,12 @@ +import { RuleTester } from '@angular-eslint/test-utils'; +import rule, { + RULE_NAME, +} from '../../../src/rules/require-lifecycle-on-prototype'; +import { invalid, valid } from './cases'; + +const ruleTester = new RuleTester(); + +ruleTester.run(RULE_NAME, rule, { + valid, + invalid, +}); diff --git a/packages/eslint-plugin/tsconfig.spec.json b/packages/eslint-plugin/tsconfig.spec.json index 2d8509fbe..d098af5ee 100644 --- a/packages/eslint-plugin/tsconfig.spec.json +++ b/packages/eslint-plugin/tsconfig.spec.json @@ -3,7 +3,8 @@ "compilerOptions": { "outDir": "../../dist/out-tsc/eslint-plugin", "types": ["jest", "node"], - "resolveJsonModule": true + "resolveJsonModule": true, + "sourceMap": true }, "include": [ "**/*.spec.ts", diff --git a/packages/nx-plugin/tsconfig.spec.json b/packages/nx-plugin/tsconfig.spec.json index 34aed5a5f..4e8a44413 100644 --- a/packages/nx-plugin/tsconfig.spec.json +++ b/packages/nx-plugin/tsconfig.spec.json @@ -2,7 +2,8 @@ "extends": "../../tsconfig.base.json", "compilerOptions": { "outDir": "../../dist/out-tsc/nx-plugin", - "types": ["jest", "node"] + "types": ["jest", "node"], + "sourceMap": true }, "include": [ "**/*.spec.ts", diff --git a/packages/schematics/CHANGELOG.md b/packages/schematics/CHANGELOG.md index dd9f966a1..ef04418a3 100644 --- a/packages/schematics/CHANGELOG.md +++ b/packages/schematics/CHANGELOG.md @@ -1,3 +1,16 @@ +## 19.2.0 (2025-03-02) + +### 🩹 Fixes + +- update typescript-eslint packages to v8.25.0 ([#2263](https://github.com/angular-eslint/angular-eslint/pull/2263)) +- update dependency eslint to v9.21.0 ([#2243](https://github.com/angular-eslint/angular-eslint/pull/2243)) +- **eslint-plugin-template:** find inline templates on components in blocks ([#2238](https://github.com/angular-eslint/angular-eslint/pull/2238)) +- update typescript-eslint packages to v8.24.0 ([#2240](https://github.com/angular-eslint/angular-eslint/pull/2240)) + +### ❤️ Thank You + +- Dave @reduckted + ## 19.1.0 (2025-02-09) ### 🩹 Fixes diff --git a/packages/schematics/package.json b/packages/schematics/package.json index 9505c6df1..93d358ae0 100644 --- a/packages/schematics/package.json +++ b/packages/schematics/package.json @@ -1,6 +1,6 @@ { "name": "@angular-eslint/schematics", - "version": "19.1.0", + "version": "19.2.0", "description": "Angular Schematics for angular-eslint", "license": "MIT", "main": "dist/index.js", @@ -45,8 +45,8 @@ "strip-json-comments": "3.1.1" }, "devDependencies": { - "@typescript-eslint/utils": "8.23.0", - "eslint": "9.20.0" + "@typescript-eslint/utils": "8.25.0", + "eslint": "9.21.0" }, "gitHead": "e2006e5e9c99e5a943d1a999e0efa5247d29ec24" } diff --git a/packages/schematics/tsconfig.spec.json b/packages/schematics/tsconfig.spec.json index 35fc600d3..3eb94c0a5 100644 --- a/packages/schematics/tsconfig.spec.json +++ b/packages/schematics/tsconfig.spec.json @@ -2,7 +2,8 @@ "extends": "../../tsconfig.base.json", "compilerOptions": { "outDir": "../../dist/out-tsc/schematics", - "types": ["jest", "node"] + "types": ["jest", "node"], + "sourceMap": true }, "include": [ "**/*.test.ts", diff --git a/packages/template-parser/CHANGELOG.md b/packages/template-parser/CHANGELOG.md index d8d5ad75d..dc3d22b03 100644 --- a/packages/template-parser/CHANGELOG.md +++ b/packages/template-parser/CHANGELOG.md @@ -1,3 +1,13 @@ +## 19.2.0 (2025-03-02) + +### 🩹 Fixes + +- **eslint-plugin-template:** find inline templates on components in blocks ([#2238](https://github.com/angular-eslint/angular-eslint/pull/2238)) + +### ❤️ Thank You + +- Dave @reduckted + ## 19.1.0 (2025-02-09) This was a version bump only for template-parser to align it with other projects, there were no code changes. diff --git a/packages/template-parser/package.json b/packages/template-parser/package.json index ac2356d26..1b0e64e9e 100644 --- a/packages/template-parser/package.json +++ b/packages/template-parser/package.json @@ -1,6 +1,6 @@ { "name": "@angular-eslint/template-parser", - "version": "19.1.0", + "version": "19.2.0", "description": "Angular Template parser for ESLint", "license": "MIT", "main": "dist/index.js", diff --git a/packages/template-parser/tsconfig.spec.json b/packages/template-parser/tsconfig.spec.json index 35fc600d3..3eb94c0a5 100644 --- a/packages/template-parser/tsconfig.spec.json +++ b/packages/template-parser/tsconfig.spec.json @@ -2,7 +2,8 @@ "extends": "../../tsconfig.base.json", "compilerOptions": { "outDir": "../../dist/out-tsc/schematics", - "types": ["jest", "node"] + "types": ["jest", "node"], + "sourceMap": true }, "include": [ "**/*.test.ts", diff --git a/packages/test-utils/CHANGELOG.md b/packages/test-utils/CHANGELOG.md index dfc2fbceb..01e880e9f 100644 --- a/packages/test-utils/CHANGELOG.md +++ b/packages/test-utils/CHANGELOG.md @@ -1,3 +1,13 @@ +## 19.2.0 (2025-03-02) + +### 🩹 Fixes + +- **eslint-plugin-template:** find inline templates on components in blocks ([#2238](https://github.com/angular-eslint/angular-eslint/pull/2238)) + +### ❤️ Thank You + +- Dave @reduckted + ## 19.1.0 (2025-02-09) This was a version bump only for test-utils to align it with other projects, there were no code changes. diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index ff4f47af0..4cbddcdd3 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@angular-eslint/test-utils", - "version": "19.1.0", + "version": "19.2.0", "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/test-utils/tsconfig.spec.json b/packages/test-utils/tsconfig.spec.json index f214cb941..d91c64e62 100644 --- a/packages/test-utils/tsconfig.spec.json +++ b/packages/test-utils/tsconfig.spec.json @@ -2,7 +2,8 @@ "extends": "../../tsconfig.base.json", "compilerOptions": { "outDir": "../../dist/out-tsc/test-utils", - "types": ["jest", "node"] + "types": ["jest", "node"], + "sourceMap": true }, "include": [ "**/*.spec.ts", diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index 98bc37d1b..3a20f5c31 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -1,3 +1,14 @@ +## 19.2.0 (2025-03-02) + +### 🩹 Fixes + +- **eslint-plugin:** [no-output-native] update native event names ([#2236](https://github.com/angular-eslint/angular-eslint/pull/2236)) +- **eslint-plugin-template:** find inline templates on components in blocks ([#2238](https://github.com/angular-eslint/angular-eslint/pull/2238)) + +### ❤️ Thank You + +- Dave @reduckted + ## 19.1.0 (2025-02-09) This was a version bump only for utils to align it with other projects, there were no code changes. diff --git a/packages/utils/package.json b/packages/utils/package.json index 0e787cb4e..47a0a375b 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@angular-eslint/utils", - "version": "19.1.0", + "version": "19.2.0", "license": "MIT", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/utils/project.json b/packages/utils/project.json index 7845446e0..6aa1a2af5 100644 --- a/packages/utils/project.json +++ b/packages/utils/project.json @@ -2,6 +2,16 @@ "name": "utils", "$schema": "../../node_modules/nx/schemas/project-schema.json", "type": "library", - "targets": {}, - "implicitDependencies": ["bundled-angular-compiler"] + "implicitDependencies": ["bundled-angular-compiler"], + "namedInputs": { + "projectSpecificFiles": [ + "{workspaceRoot}/tools/scripts/update-native-event-names.ts" + ] + }, + "targets": { + "update-native-event-names": { + "outputs": ["{projectRoot}/src/eslint-plugin/get-native-event-names"], + "command": "npx tsx ./tools/scripts/update-native-event-names.ts" + } + } } diff --git a/packages/utils/src/eslint-plugin/get-native-event-names.ts b/packages/utils/src/eslint-plugin/get-native-event-names.ts index dab352ab2..5152397d4 100644 --- a/packages/utils/src/eslint-plugin/get-native-event-names.ts +++ b/packages/utils/src/eslint-plugin/get-native-event-names.ts @@ -1,21 +1,15 @@ +/** + * DO NOT EDIT THIS FILE + * + * In order to update this config, please run `pnpm update-native-event-names`. + */ + let nativeEventNames: ReadonlySet | null = null; /** * Check MDN events page for details https://developer.mozilla.org/en-US/docs/Web/Events * - * Events sourse: - * @link https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager - * @link https://developer.mozilla.org/en-US/docs/Web/API/Document - * @link https://developer.mozilla.org/en-US/docs/Web/API/Element - * @link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement - * @link https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement - * @link https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement - * @link https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder - * @link https://developer.mozilla.org/en-US/docs/Web/API/Node - * @link https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition - * @link https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement - * @link https://developer.mozilla.org/en-US/docs/Web/API/SVGElement - * @link https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices + * Event names sourced from @mdn/browser-compat-data@5.6.43 */ export function getNativeEventNames(): ReadonlySet { return ( @@ -29,8 +23,6 @@ export function getNativeEventNames(): ReadonlySet { 'animationiteration', 'animationstart', 'appinstalled', - 'audioend', - 'audiostart', 'auxclick', 'beforeinput', 'beforeinstallprompt', @@ -42,33 +34,35 @@ export function getNativeEventNames(): ReadonlySet { 'beforexrselect', 'beginEvent', 'blur', + 'bounce', 'cancel', 'canplay', 'canplaythrough', 'change', - 'chargingchange', - 'chargingtimechange', 'click', + 'close', + 'command', 'compositionend', 'compositionstart', 'compositionupdate', 'contentvisibilityautostatechange', + 'contextlost', 'contextmenu', + 'contextrestored', 'copy', + 'cuechange', 'cut', - 'dataavailable', 'dblclick', - 'devicechange', 'devicemotion', 'deviceorientation', 'deviceorientationabsolute', - 'dischargingtimechange', 'DOMActivate', 'DOMContentLoaded', 'DOMMouseScroll', 'drag', 'dragend', 'dragenter', + 'dragexit', 'dragleave', 'dragover', 'dragstart', @@ -76,14 +70,16 @@ export function getNativeEventNames(): ReadonlySet { 'durationchange', 'emptied', 'encrypted', - 'end', 'ended', 'endEvent', + 'enterpictureinpicture', 'error', + 'finish', 'focus', 'focusin', 'focusout', 'formdata', + 'freeze', 'fullscreenchange', 'fullscreenerror', 'gamepadconnected', @@ -94,11 +90,12 @@ export function getNativeEventNames(): ReadonlySet { 'gotpointercapture', 'hashchange', 'input', + 'invalid', 'keydown', 'keypress', 'keyup', 'languagechange', - 'levelchange', + 'leavepictureinpicture', 'load', 'loadeddata', 'loadedmetadata', @@ -115,7 +112,6 @@ export function getNativeEventNames(): ReadonlySet { 'mouseup', 'mousewheel', 'MozMousePixelScroll', - 'nomatch', 'offline', 'online', 'orientationchange', @@ -147,22 +143,21 @@ export function getNativeEventNames(): ReadonlySet { 'repeatEvent', 'reset', 'resize', - 'result', 'resume', 'scroll', 'scrollend', + 'scrollsnapchange', + 'scrollsnapchanging', + 'search', 'securitypolicyviolation', 'seeked', 'seeking', + 'select', 'selectionchange', 'selectstart', - 'soundend', - 'soundstart', - 'speechend', - 'speechstart', + 'slotchange', 'stalled', 'start', - 'stop', 'storage', 'submit', 'suspend', @@ -186,6 +181,10 @@ export function getNativeEventNames(): ReadonlySet { 'vrdisplaydisconnect', 'vrdisplaypresentchange', 'waiting', + 'waitingforkey', + 'webglcontextcreationerror', + 'webglcontextlost', + 'webglcontextrestored', 'webkitmouseforcechanged', 'webkitmouseforcedown', 'webkitmouseforceup', diff --git a/packages/utils/tsconfig.spec.json b/packages/utils/tsconfig.spec.json index 491f69f38..c88fbe6b2 100644 --- a/packages/utils/tsconfig.spec.json +++ b/packages/utils/tsconfig.spec.json @@ -2,7 +2,8 @@ "extends": "../../tsconfig.base.json", "compilerOptions": { "outDir": "../../dist/out-tsc/utils", - "types": ["jest", "node"] + "types": ["jest", "node"], + "sourceMap": true }, "include": [ "**/*.spec.ts", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 957882fb5..ac7c502d9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,9 +5,9 @@ settings: excludeLinksFromLockfile: false overrides: - '@typescript-eslint/parser': 8.23.0 - '@typescript-eslint/rule-tester': 8.23.0 - '@typescript-eslint/utils': 8.23.0 + '@typescript-eslint/parser': 8.25.0 + '@typescript-eslint/rule-tester': 8.25.0 + '@typescript-eslint/utils': 8.25.0 patchedDependencies: '@typescript-eslint/rule-tester': @@ -19,53 +19,56 @@ importers: .: devDependencies: '@angular/cli': - specifier: 19.1.6 - version: 19.1.6(@types/node@20.17.17) + specifier: 19.2.0 + version: 19.2.0(@types/node@20.17.22) '@angular/compiler': - specifier: 19.1.5 - version: 19.1.5 + specifier: 19.2.0 + version: 19.2.0 '@commitlint/cli': specifier: 19.7.1 - version: 19.7.1(@types/node@20.17.17)(typescript@5.7.3) + version: 19.7.1(@types/node@20.17.22)(typescript@5.7.3) '@commitlint/config-conventional': specifier: 19.7.1 version: 19.7.1 + '@mdn/browser-compat-data': + specifier: 5.6.43 + version: 5.6.43 '@nx/devkit': - specifier: 20.3.3 - version: 20.3.3(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))) + specifier: 20.4.6 + version: 20.4.6(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))) '@nx/esbuild': - specifier: 20.3.3 - version: 20.3.3(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(esbuild@0.25.0)(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) + specifier: 20.4.6 + version: 20.4.6(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(esbuild@0.25.0)(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) '@nx/eslint': - specifier: 20.3.3 - version: 20.3.3(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(@zkochan/js-yaml@0.0.7)(eslint@9.20.0(jiti@2.4.2))(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) + specifier: 20.4.6 + version: 20.4.6(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(@zkochan/js-yaml@0.0.7)(eslint@9.21.0(jiti@2.4.2))(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)))(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) '@nx/eslint-plugin': - specifier: 20.3.3 - version: 20.3.3(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(@typescript-eslint/parser@8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3))(eslint-config-prettier@10.0.1(eslint@9.20.0(jiti@2.4.2)))(eslint@9.20.0(jiti@2.4.2))(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) + specifier: 20.4.6 + version: 20.4.6(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-config-prettier@10.0.2(eslint@9.21.0(jiti@2.4.2)))(eslint@9.21.0(jiti@2.4.2))(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) '@nx/jest': - specifier: 20.3.3 - version: 20.3.3(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) + specifier: 20.4.6 + version: 20.4.6(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(babel-plugin-macros@3.1.0)(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)))(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) '@nx/js': - specifier: 20.3.3 - version: 20.3.3(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) + specifier: 20.4.6 + version: 20.4.6(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) '@nx/plugin': - specifier: 20.3.3 - version: 20.3.3(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(@zkochan/js-yaml@0.0.7)(eslint@9.20.0(jiti@2.4.2))(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) + specifier: 20.4.6 + version: 20.4.6(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(@zkochan/js-yaml@0.0.7)(babel-plugin-macros@3.1.0)(eslint@9.21.0(jiti@2.4.2))(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)))(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) '@nx/workspace': - specifier: 20.3.3 - version: 20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)) + specifier: 20.4.6 + version: 20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)) '@schematics/angular': - specifier: 19.1.6 - version: 19.1.6 + specifier: 19.2.0 + version: 19.2.0 '@swc-node/register': specifier: 1.10.9 - version: 1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3) + version: 1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3) '@swc/cli': specifier: 0.6.0 - version: 0.6.0(@swc/core@1.10.15(@swc/helpers@0.5.15)) + version: 0.6.0(@swc/core@1.11.5(@swc/helpers@0.5.15)) '@swc/core': - specifier: 1.10.15 - version: 1.10.15(@swc/helpers@0.5.15) + specifier: 1.11.5 + version: 1.11.5(@swc/helpers@0.5.15) '@swc/helpers': specifier: 0.5.15 version: 0.5.15 @@ -79,8 +82,8 @@ importers: specifier: 29.5.12 version: 29.5.12 '@types/node': - specifier: 20.17.17 - version: 20.17.17 + specifier: 20.17.22 + version: 20.17.22 '@types/semver': specifier: ^7.5.8 version: 7.5.8 @@ -88,29 +91,26 @@ importers: specifier: ^17.0.33 version: 17.0.33 '@typescript-eslint/rule-tester': - specifier: 8.23.0 - version: 8.23.0(patch_hash=5of34inynujuq2pxgvttl34roe)(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) + specifier: 8.25.0 + version: 8.25.0(patch_hash=5of34inynujuq2pxgvttl34roe)(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) '@typescript-eslint/types': - specifier: 8.23.0 - version: 8.23.0 + specifier: 8.25.0 + version: 8.25.0 '@typescript-eslint/utils': - specifier: 8.23.0 - version: 8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) - chalk: - specifier: 4.1.2 - version: 4.1.2 + specifier: 8.25.0 + version: 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) cz-conventional-changelog: specifier: 3.3.0 - version: 3.3.0(@types/node@20.17.17)(typescript@5.7.3) + version: 3.3.0(@types/node@20.17.22)(typescript@5.7.3) esbuild: specifier: ^0.25.0 version: 0.25.0 eslint: - specifier: 9.20.0 - version: 9.20.0(jiti@2.4.2) + specifier: 9.21.0 + version: 9.21.0(jiti@2.4.2) eslint-config-prettier: - specifier: 10.0.1 - version: 10.0.1(eslint@9.20.0(jiti@2.4.2)) + specifier: 10.0.2 + version: 10.0.2(eslint@9.21.0(jiti@2.4.2)) execa: specifier: 5.1.1 version: 5.1.1 @@ -119,7 +119,7 @@ importers: version: 9.1.7 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@20.17.17)(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3)) + version: 29.7.0(@types/node@20.17.22)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3)) json-schema-to-typescript: specifier: 15.0.4 version: 15.0.4 @@ -136,11 +136,14 @@ importers: specifier: 2.0.0 version: 2.0.0 nx: - specifier: 20.3.3 - version: 20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)) + specifier: 20.4.6 + version: 20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)) + picocolors: + specifier: 1.1.1 + version: 1.1.1 prettier: - specifier: 3.5.0 - version: 3.5.0 + specifier: 3.5.2 + version: 3.5.2 prettier-v2-for-jest-inline-snapshots: specifier: npm:prettier@^2 version: prettier@2.8.8 @@ -155,19 +158,19 @@ importers: version: 1.2.2 ts-jest: specifier: 29.2.4 - version: 29.2.4(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.25.0)(jest@29.7.0(@types/node@20.17.17)(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3)))(typescript@5.7.3) + version: 29.2.4(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.25.0)(jest@29.7.0(@types/node@20.17.22)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3)))(typescript@5.7.3) tslib: specifier: ^2.4.1 version: 2.8.1 tsx: specifier: ^4.7.3 - version: 4.19.2 + version: 4.19.3 typescript: specifier: 5.7.3 version: 5.7.3 typescript-eslint: - specifier: 8.23.0 - version: 8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) + specifier: 8.25.0 + version: 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) verdaccio: specifier: 6.0.5 version: 6.0.5(encoding@0.1.13)(typanion@3.14.0) @@ -200,19 +203,19 @@ importers: version: link:../template-parser '@typescript-eslint/types': specifier: ^8.0.0 - version: 8.23.0 + version: 8.25.0 '@typescript-eslint/utils': - specifier: 8.23.0 - version: 8.23.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + specifier: 8.25.0 + version: 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) eslint: specifier: ^8.57.0 || ^9.0.0 - version: 9.18.0(jiti@2.4.2) + version: 9.21.0(jiti@2.4.2) typescript: specifier: '*' version: 5.7.3 typescript-eslint: specifier: ^8.0.0 - version: 8.16.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + version: 8.16.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) packages/builder: dependencies: @@ -240,8 +243,8 @@ importers: specifier: workspace:* version: link:../utils '@typescript-eslint/utils': - specifier: 8.23.0 - version: 8.23.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.5.4) + specifier: 8.25.0 + version: 8.25.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.5.4) eslint: specifier: ^8.57.0 || ^9.0.0 version: 9.15.0(jiti@2.4.2) @@ -265,8 +268,8 @@ importers: specifier: ^7.11.0 || ^8.0.0 version: 8.16.0 '@typescript-eslint/utils': - specifier: 8.23.0 - version: 8.23.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.5.4) + specifier: 8.25.0 + version: 8.25.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.5.4) aria-query: specifier: 5.3.2 version: 5.3.2 @@ -317,11 +320,11 @@ importers: version: 3.1.1 devDependencies: '@typescript-eslint/utils': - specifier: 8.23.0 - version: 8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) + specifier: 8.25.0 + version: 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) eslint: - specifier: 9.20.0 - version: 9.20.0(jiti@2.4.2) + specifier: 9.21.0 + version: 9.21.0(jiti@2.4.2) packages/template-parser: dependencies: @@ -344,14 +347,14 @@ importers: specifier: workspace:* version: link:../template-parser '@typescript-eslint/parser': - specifier: 8.23.0 - version: 8.23.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.5.4) + specifier: 8.25.0 + version: 8.25.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.5.4) '@typescript-eslint/rule-tester': - specifier: 8.23.0 - version: 8.23.0(patch_hash=5of34inynujuq2pxgvttl34roe)(eslint@9.15.0(jiti@2.4.2))(typescript@5.5.4) + specifier: 8.25.0 + version: 8.25.0(patch_hash=5of34inynujuq2pxgvttl34roe)(eslint@9.15.0(jiti@2.4.2))(typescript@5.5.4) '@typescript-eslint/utils': - specifier: 8.23.0 - version: 8.23.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.5.4) + specifier: 8.25.0 + version: 8.25.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.5.4) eslint: specifier: ^8.57.0 || ^9.0.0 version: 9.15.0(jiti@2.4.2) @@ -365,8 +368,8 @@ importers: specifier: workspace:* version: link:../bundled-angular-compiler '@typescript-eslint/utils': - specifier: 8.23.0 - version: 8.23.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.5.4) + specifier: 8.25.0 + version: 8.25.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.5.4) eslint: specifier: ^8.57.0 || ^9.0.0 version: 9.15.0(jiti@2.4.2) @@ -384,8 +387,8 @@ packages: resolution: {integrity: sha512-oC2CyKf9olKvthEwp2wmkKw+H9NhpnK9cWYHvajWeCRJ8A4DLaKwfMuZ9lioi92QPourrJzoikgp7C6m2AuuZQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/architect@0.1901.6': - resolution: {integrity: sha512-JiMrs3T1A7RyF5bh0PLGKDjTR8sa/kh8w63+dW0azcNok30tKjLjwJRPTpePokWefjmRgfKaf/iZ8yfFBnpGpA==} + '@angular-devkit/architect@0.1902.0': + resolution: {integrity: sha512-F/3O38QOYCwNqECNQauKb56GYdST9SrRSiqTNc5xpnUL//A09kaucmKSZ2VJAVY7K/rktSQn5viiQ3rTJLiZgA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@angular-devkit/core@19.0.0': @@ -406,8 +409,8 @@ packages: chokidar: optional: true - '@angular-devkit/core@19.1.6': - resolution: {integrity: sha512-4s1RpYFGb/yP6OZ1dnYmU7maFYdhZS9pnUHKKiL9rSDhUHkX+VZlf9WFFrHv2RMWg+evrrwPtiFOTMBLShUi8g==} + '@angular-devkit/core@19.2.0': + resolution: {integrity: sha512-qd2nYoHZOYWRsu4MjXG8KiDtfM9ZDRR2rDGa+rDZ3CYAsngCrPmqOebun10dncUjwAidX49P4S2U2elOmX3VYQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -423,20 +426,20 @@ packages: resolution: {integrity: sha512-bwq8ReC92gGFTd2BeNBWCnOqIKu2YKNvwMVc7dl+D154WO2gzCaK2J5nL97qm5EjoUoXgvFRs84ysSAnLFzBxQ==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/schematics@19.1.6': - resolution: {integrity: sha512-6ljZSVTFqnk0utnXLLd82wM6nj68984n5gfrpT1PlOff6MHHNH2YCfwNSlwg6Q5UfDxhEDIT9/MTLnXd6znIRQ==} + '@angular-devkit/schematics@19.2.0': + resolution: {integrity: sha512-cGGqUGqBXIGJkeL65l70y0BflDAu/0Zi/ohbYat3hvadFfumRJnVElVfJ59JtWO7FfKQjxcwCVTyuQ/tevX/9A==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/cli@19.1.6': - resolution: {integrity: sha512-5H9Ri+YNPBnac/h1wTPQ+9mLSXfT1n99FwCtMVy6YnG+akRqOKFmPWB29hkFQAgfXi/MYIj+rQKv+d/9yWJibQ==} + '@angular/cli@19.2.0': + resolution: {integrity: sha512-LUxuku6obwigdDJozAvmXyhMcm3rSXFoZK4+Al7r/JE80pjQEE+bGpu7jCb6JsH813DTNauN+BB66qk8bXSgRw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/compiler@19.1.5': - resolution: {integrity: sha512-8dhticSq98qZanbPBqLACykR08eHbh9WyXG4VJB7Ru9465DjOd6sRM3gmGDNvNlohh30S4xJzPhVrzYXmIyqiA==} + '@angular/compiler@19.2.0': + resolution: {integrity: sha512-xGBD0C9ikH4jVDuQU3XzGqbh9Wovl8UR0wNzNd9rm4fltfC9ipz9NbfetsLPKWpPbfnUqmqMe4/pYjGEgWMonw==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/core': 19.1.5 + '@angular/core': 19.2.0 peerDependenciesMeta: '@angular/core': optional: true @@ -1146,204 +1149,102 @@ packages: '@emnapi/wasi-threads@1.0.1': resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} - '@esbuild/aix-ppc64@0.23.1': - resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.25.0': resolution: {integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.23.1': - resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.25.0': resolution: {integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.23.1': - resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.25.0': resolution: {integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.23.1': - resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.25.0': resolution: {integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.23.1': - resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.25.0': resolution: {integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.23.1': - resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.25.0': resolution: {integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.23.1': - resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.25.0': resolution: {integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.23.1': - resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.25.0': resolution: {integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.23.1': - resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.25.0': resolution: {integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.23.1': - resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.25.0': resolution: {integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.23.1': - resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.25.0': resolution: {integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.23.1': - resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.25.0': resolution: {integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.23.1': - resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.25.0': resolution: {integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.23.1': - resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.25.0': resolution: {integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.23.1': - resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.25.0': resolution: {integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.23.1': - resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.25.0': resolution: {integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.23.1': - resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.25.0': resolution: {integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==} engines: {node: '>=18'} @@ -1356,84 +1257,42 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.23.1': - resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.25.0': resolution: {integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.23.1': - resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-arm64@0.25.0': resolution: {integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.23.1': - resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.25.0': resolution: {integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.23.1': - resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.25.0': resolution: {integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.23.1': - resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.25.0': resolution: {integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.23.1': - resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.25.0': resolution: {integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.23.1': - resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.25.0': resolution: {integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==} engines: {node: '>=18'} @@ -1454,12 +1313,12 @@ packages: resolution: {integrity: sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.10.0': - resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} + '@eslint/config-array@0.19.2': + resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.11.0': - resolution: {integrity: sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==} + '@eslint/core@0.12.0': + resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/core@0.9.0': @@ -1470,28 +1329,32 @@ packages: resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.15.0': - resolution: {integrity: sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==} + '@eslint/eslintrc@3.3.0': + resolution: {integrity: sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.18.0': - resolution: {integrity: sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==} + '@eslint/js@9.15.0': + resolution: {integrity: sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.20.0': - resolution: {integrity: sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==} + '@eslint/js@9.21.0': + resolution: {integrity: sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.2.3': resolution: {integrity: sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.2.5': - resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==} + '@eslint/plugin-kit@0.2.7': + resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@humanfs/core@0.19.1': @@ -1514,8 +1377,12 @@ packages: resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} engines: {node: '>=18.18'} - '@inquirer/checkbox@4.1.1': - resolution: {integrity: sha512-os5kFd/52gZTl/W6xqMfhaKVJHQM8V/U1P8jcSaQJ/C4Qhdrf2jEXdA/HaxfQs9iiUA/0yzYhk5d3oRHTxGDDQ==} + '@humanwhocodes/retry@0.4.2': + resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} + engines: {node: '>=18.18'} + + '@inquirer/checkbox@4.1.2': + resolution: {integrity: sha512-PL9ixC5YsPXzXhAZFUPmkXGxfgjkdfZdPEPPmt4kFwQ4LBMDG9n/nHXYRGGZSKZJs+d1sGKWgS2GiPzVRKUdtQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1523,8 +1390,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.5': - resolution: {integrity: sha512-ZB2Cz8KeMINUvoeDi7IrvghaVkYT2RB0Zb31EaLWOE87u276w4wnApv0SH2qWaJ3r0VSUa3BIuz7qAV2ZvsZlg==} + '@inquirer/confirm@5.1.6': + resolution: {integrity: sha512-6ZXYK3M1XmaVBZX6FCfChgtponnL0R6I7k8Nu+kaoNkT828FVZTcca1MqmWQipaW2oNREQl5AaPCUOOCVNdRMw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1532,8 +1399,8 @@ packages: '@types/node': optional: true - '@inquirer/core@10.1.6': - resolution: {integrity: sha512-Bwh/Zk6URrHwZnSSzAZAKH7YgGYi0xICIBDFOqBQoXNNAzBHw/bgXgLmChfp+GyR3PnChcTbiCTZGC6YJNJkMA==} + '@inquirer/core@10.1.7': + resolution: {integrity: sha512-AA9CQhlrt6ZgiSy6qoAigiA1izOa751ugX6ioSjqgJ+/Gd+tEN/TORk5sUYNjXuHWfW0r1n/a6ak4u/NqHHrtA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1541,8 +1408,8 @@ packages: '@types/node': optional: true - '@inquirer/editor@4.2.6': - resolution: {integrity: sha512-l0smvr8g/KAVdXx4I92sFxZiaTG4kFc06cFZw+qqwTirwdUHMFLnouXBB9OafWhpO3cfEkEz2CdPoCmor3059A==} + '@inquirer/editor@4.2.7': + resolution: {integrity: sha512-gktCSQtnSZHaBytkJKMKEuswSk2cDBuXX5rxGFv306mwHfBPjg5UAldw9zWGoEyvA9KpRDkeM4jfrx0rXn0GyA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1550,8 +1417,8 @@ packages: '@types/node': optional: true - '@inquirer/expand@4.0.8': - resolution: {integrity: sha512-k0ouAC6L+0Yoj/j0ys2bat0fYcyFVtItDB7h+pDFKaDDSFJey/C/YY1rmIOqkmFVZ5rZySeAQuS8zLcKkKRLmg==} + '@inquirer/expand@4.0.9': + resolution: {integrity: sha512-Xxt6nhomWTAmuSX61kVgglLjMEFGa+7+F6UUtdEUeg7fg4r9vaFttUUKrtkViYYrQBA5Ia1tkOJj2koP9BuLig==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1563,8 +1430,8 @@ packages: resolution: {integrity: sha512-Ey6176gZmeqZuY/W/nZiUyvmb1/qInjcpiZjXWi6nON+nxJpD1bxtSoBxNliGISae32n6OwbY+TSXPZ1CfS4bw==} engines: {node: '>=18'} - '@inquirer/input@4.1.5': - resolution: {integrity: sha512-bB6wR5wBCz5zbIVBPnhp94BHv/G4eKbUEjlpCw676pI2chcvzTx1MuwZSCZ/fgNOdqDlAxkhQ4wagL8BI1D3Zg==} + '@inquirer/input@4.1.6': + resolution: {integrity: sha512-1f5AIsZuVjPT4ecA8AwaxDFNHny/tSershP/cTvTDxLdiIGTeILNcKozB0LaYt6mojJLUbOYhpIxicaYf7UKIQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1572,8 +1439,8 @@ packages: '@types/node': optional: true - '@inquirer/number@3.0.8': - resolution: {integrity: sha512-CTKs+dT1gw8dILVWATn8Ugik1OHLkkfY82J+Musb57KpmF6EKyskv8zmMiEJPzOnLTZLo05X/QdMd8VH9oulXw==} + '@inquirer/number@3.0.9': + resolution: {integrity: sha512-iN2xZvH3tyIYXLXBvlVh0npk1q/aVuKXZo5hj+K3W3D4ngAEq/DkLpofRzx6oebTUhBvOgryZ+rMV0yImKnG3w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1581,8 +1448,8 @@ packages: '@types/node': optional: true - '@inquirer/password@4.0.8': - resolution: {integrity: sha512-MgA+Z7o3K1df2lGY649fyOBowHGfrKRz64dx3+b6c1w+h2W7AwBoOkHhhF/vfhbs5S4vsKNCuDzS3s9r5DpK1g==} + '@inquirer/password@4.0.9': + resolution: {integrity: sha512-xBEoOw1XKb0rIN208YU7wM7oJEHhIYkfG7LpTJAEW913GZeaoQerzf5U/LSHI45EVvjAdgNXmXgH51cUXKZcJQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1590,14 +1457,17 @@ packages: '@types/node': optional: true - '@inquirer/prompts@7.2.1': - resolution: {integrity: sha512-v2JSGri6/HXSfoGIwuKEn8sNCQK6nsB2BNpy2lSX6QH9bsECrMv93QHnj5+f+1ZWpF/VNioIV2B/PDox8EvGuQ==} + '@inquirer/prompts@7.3.2': + resolution: {integrity: sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true - '@inquirer/rawlist@4.0.8': - resolution: {integrity: sha512-hl7rvYW7Xl4un8uohQRUgO6uc2hpn7PKqfcGkCOWC0AA4waBxAv6MpGOFCEDrUaBCP+pXPVqp4LmnpWmn1E1+g==} + '@inquirer/rawlist@4.0.9': + resolution: {integrity: sha512-+5t6ebehKqgoxV8fXwE49HkSF2Rc9ijNiVGEQZwvbMI61/Q5RcD+jWD6Gs1tKdz5lkI8GRBL31iO0HjGK1bv+A==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1605,8 +1475,8 @@ packages: '@types/node': optional: true - '@inquirer/search@3.0.8': - resolution: {integrity: sha512-ihSE9D3xQAupNg/aGDZaukqoUSXG2KfstWosVmFCG7jbMQPaj2ivxWtsB+CnYY/T4D6LX1GHKixwJLunNCffww==} + '@inquirer/search@3.0.9': + resolution: {integrity: sha512-DWmKztkYo9CvldGBaRMr0ETUHgR86zE6sPDVOHsqz4ISe9o1LuiWfgJk+2r75acFclA93J/lqzhT0dTjCzHuoA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1614,8 +1484,8 @@ packages: '@types/node': optional: true - '@inquirer/select@4.0.8': - resolution: {integrity: sha512-Io2prxFyN2jOCcu4qJbVoilo19caiD3kqkD3WR0q3yDA5HUCo83v4LrRtg55ZwniYACW64z36eV7gyVbOfORjA==} + '@inquirer/select@4.0.9': + resolution: {integrity: sha512-BpJyJe7Dkhv2kz7yG7bPSbJLQuu/rqyNlF1CfiiFeFwouegfH+zh13KDyt6+d9DwucKo7hqM3wKLLyJxZMO+Xg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1748,6 +1618,9 @@ packages: peerDependencies: '@inquirer/prompts': '>= 3 < 8' + '@mdn/browser-compat-data@5.6.43': + resolution: {integrity: sha512-qLuxKpjwFhjvFkdqNb37AJpJo9J22Qdcml+92/yWdlREte3JFdayz7SqmjXLlCuizSjz9uVH+aW7dQ7KJEKg1g==} + '@napi-rs/nice-android-arm-eabi@1.0.1': resolution: {integrity: sha512-5qpvOu5IGwDo7MEKVqqyAxF90I6aLj4n07OzpARdgDRfz8UbBztTByBp0RC59r3J1Ij8uzYi6jI7r5Lws7nn6w==} engines: {node: '>= 10'} @@ -1911,30 +1784,30 @@ packages: resolution: {integrity: sha512-q9C0uHrb6B6cm3qXVM32UmpqTKuFGbtP23O2K5sLvPMz2hilKd0ptqGXSpuunOuOmPQb/aT5F/kCXFc1P2gO/A==} engines: {node: ^18.17.0 || >=20.5.0} - '@nx/devkit@20.3.3': - resolution: {integrity: sha512-YwVQQpyeMpQeXzu4/Yv6Ng3ZZxJ45RGbGqbb+VWQfDKkZIHcyR7iLLQDaLpyl34HkrLYdZez9BB8wnyn3IaxqA==} + '@nx/devkit@20.4.6': + resolution: {integrity: sha512-XGnCu4p9HUrs6pDZmfpBF5hmmvXzLvV+oZJP0slFRoi9hVdXiZ31t+Vh0AQc7zSbtPeCxEJDxY4dIJKgdesR0A==} peerDependencies: nx: '>= 19 <= 21' - '@nx/esbuild@20.3.3': - resolution: {integrity: sha512-t+7bSrbpFJxP2oU4IbeRqLaGwLP2AKIDURFzggN1J0f/7CsN/E2vDnVF5nO4WbhikA+tk7kMyokw12BJlFribA==} + '@nx/esbuild@20.4.6': + resolution: {integrity: sha512-FAp0509UPpcBZ9K+SA4he92/vJNYhdLRG1Z0rv+imvi1HrOlY5YDCYZWWrKhfXGCJmroORMMtI6XkMGDN1pJiw==} peerDependencies: esbuild: ~0.19.2 peerDependenciesMeta: esbuild: optional: true - '@nx/eslint-plugin@20.3.3': - resolution: {integrity: sha512-y1OLK0lCpkiDr0uAwH5+H4TdIRosu/A/+vBbNB9ZlaSQEeBpduNvMvBXnAts52SIVWJASKHxrkQuH2534dIaxA==} + '@nx/eslint-plugin@20.4.6': + resolution: {integrity: sha512-CsR7aiDKIBqhk5v+6m+Qmlob9CipRx7DvvbCa5tPqFvXCQjjD5/wqisxydd9VAuz84DxjlrXcbA4dqlP8ZF5Lw==} peerDependencies: - '@typescript-eslint/parser': 8.23.0 + '@typescript-eslint/parser': 8.25.0 eslint-config-prettier: ^9.0.0 peerDependenciesMeta: eslint-config-prettier: optional: true - '@nx/eslint@20.3.3': - resolution: {integrity: sha512-yWr/GUAhlpj2CywgaKvTsHHWD/YCFmxRDjOTRUvH5CB5LqkR5+5H4Mj85mb4AwOxH1JlA0Ta20KEhRS1e8hPwA==} + '@nx/eslint@20.4.6': + resolution: {integrity: sha512-lPVvUrRYaQqkwY0kg4hO0B6GJt+zihmp+zNppbHllq/v5uHZRm0+3RrmJhAdmxlubuR7A49jdQe4fHOlFySpAw==} peerDependencies: '@zkochan/js-yaml': 0.0.7 eslint: ^8.0.0 || ^9.0.0 @@ -1942,82 +1815,82 @@ packages: '@zkochan/js-yaml': optional: true - '@nx/jest@20.3.3': - resolution: {integrity: sha512-iRYJL3r92Kut4gg3ha0rlkOJ7ckxbQPP/HErq+eKX7hRFEqO7ToABkCXOrw2NEAgj82bPeJyop3ukcPcAz3cHA==} + '@nx/jest@20.4.6': + resolution: {integrity: sha512-yZOZJOQFtpdY3Fu/WYNoDx81TwvF9yfwvalFpLD19bz+2YGl7B89l0S1ZrtSRXFfKXA/w7gb0gmKwthJtQhx9Q==} - '@nx/js@20.3.3': - resolution: {integrity: sha512-IVECDcjUv3mzM4uIR/BhWs1IbmvGAw2EkGoISsaiXqffFlQpQBOqypZmKORTjQr7Qyn4kHzEJ7EyuQM9w/MYpA==} + '@nx/js@20.4.6': + resolution: {integrity: sha512-wHO6tXJNVIW0Z9zKLL/g6qee7K92XJNS4D8irpJB9sOg25fqAzKjwgcK0bPtnRhYsIjLkjh0FsTKIcznxTGnkA==} peerDependencies: verdaccio: ^5.0.4 peerDependenciesMeta: verdaccio: optional: true - '@nx/nx-darwin-arm64@20.3.3': - resolution: {integrity: sha512-4C7ShMrqp1vbH1ZgvSlkt0f35hJcqKtRcf8n/tCck46rnMkj4egXi3K1dE6uQcOorwiD1ttAr0DHcI1TTqcNXw==} + '@nx/nx-darwin-arm64@20.4.6': + resolution: {integrity: sha512-yYBkXCqx9XDS88IKlbXQUMKAmNE6OA7AwmreDabL0zKCeB5x9qit5iaGwQOYCA7PSdjFQTYvPdKK+S3ytKCJ2w==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@nx/nx-darwin-x64@20.3.3': - resolution: {integrity: sha512-OUtJ7gA09pJC+a+RcZf1bGbMM4T7a/IcPb97z1xOoxr5Wm2s8BGBQUW2CKJ5gCp5iI1pGo44F12u0G9gbYClow==} + '@nx/nx-darwin-x64@20.4.6': + resolution: {integrity: sha512-YeGCTQPmZmWYSJ3Km8rsx3YhohbQNp8grclyEp4KA7GXrPY+AKA9hcy0e5KwF4hPP41EEYkju2Xpl0XdmOfdBQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@nx/nx-freebsd-x64@20.3.3': - resolution: {integrity: sha512-q4SABgKYWPGOcdfRZne6n8HF4CzltRL5nJ3q093jQAUO93yPXtWzhQBaKZIZr6aPoqq0/NuH6xY4gNo4w9F8Bg==} + '@nx/nx-freebsd-x64@20.4.6': + resolution: {integrity: sha512-49Ad0ysTWrNARmZxc02bmWfrGT5XKEnb5+Nms+RGzQVs+5WI6yqKx2iuLGrx2CDY0FEY11Z0zFpwvrZPGnnLXw==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - '@nx/nx-linux-arm-gnueabihf@20.3.3': - resolution: {integrity: sha512-e07PJcVsBT/Aelo/Vj6hLplDZamGCZ3zOJpW3XVBhdG4DC4sn+jodsdrIASoEpmF70VB89lzQsm9GrAgQPaWOA==} + '@nx/nx-linux-arm-gnueabihf@20.4.6': + resolution: {integrity: sha512-+SMu0xYf2Qim2AC4eYn2SKLXd94UwudMIdPiwbHQUtqRnX88T8rGQKxtINdEAEmIt/KkHyceyJ7lpHGRKmFfbw==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@nx/nx-linux-arm64-gnu@20.3.3': - resolution: {integrity: sha512-1Z9chlN0/hWzliMer7TvdLT8cb6BKpGjZ15a+rQuUbO/CyLhY21Ct+lXtnaBERnNPYJpNOJlrbBDuF/9wpZ4CQ==} + '@nx/nx-linux-arm64-gnu@20.4.6': + resolution: {integrity: sha512-1u+qawDO4R8w6op2mqIECzJ8YEViPhpqyq3RiRyAchPodUgrd1rnYnYj+xgQeED4d+L+djeZfhN6000WDhZ5oA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@nx/nx-linux-arm64-musl@20.3.3': - resolution: {integrity: sha512-RrLgujPU5NfDrsDRa7Y2isxGb8XkoQeJkTMUl1xmBK2Qnf4jAUn0PH0ULWrRMNgChi4nYUTn/Sf+2m6Uyoqcfw==} + '@nx/nx-linux-arm64-musl@20.4.6': + resolution: {integrity: sha512-8sFM3Z8k2iojXpL1E/ynlp+BPD8YWCs12cc+qk/4Ke5uOILcpDQ7XZSmzYoNIxp/0fcbZ1bosE+o7Lx4sbpfjQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@nx/nx-linux-x64-gnu@20.3.3': - resolution: {integrity: sha512-/WmCnPxv1eR8tyYiFp4XoMbcXrJ8a/OIw1rpZZ5ceMKgH8lPaF2/KFf04JZZygrCKletEdqqIojBXz4AHoaueQ==} + '@nx/nx-linux-x64-gnu@20.4.6': + resolution: {integrity: sha512-9t8jPREQN8a2j09O9q9aQI4cP6UXn7tOD+UVYhlQ9EO+EsHKCcaTzszeLoatySVxzeG0RB3vutMgaa8AiS4qcA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@nx/nx-linux-x64-musl@20.3.3': - resolution: {integrity: sha512-y4BJsR0fgJrXY3P7GkWfUZAeQEHMTXvaRHvzJfBSBPmnVcVZDYNTfEQYnslp8m8ahKdlJwtflxzykJ4Bwf55fw==} + '@nx/nx-linux-x64-musl@20.4.6': + resolution: {integrity: sha512-4EO71ND0OJcvinYNc+enB3ouFeKWjCcb73xG2RdjF5s8A9/RFFK6Z3zasYTmGWR06nSLm3mi6xiyiNXWvIdZMA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@nx/nx-win32-arm64-msvc@20.3.3': - resolution: {integrity: sha512-BHqZitBaGT9ybv386B5QKxP5N66+xpTiYlKClzQ44o6Ca8QxnkugI64exBdcQyj+DRiL6HJhN14kaPJ1KrsKRA==} + '@nx/nx-win32-arm64-msvc@20.4.6': + resolution: {integrity: sha512-o8Vurr2c9SMP+a2jrBD3VUkQqmHXqi1yC+NJHMzO7GiVPaCFoJR1IizAECXIiKUXv5dB+WFQow7yzVkQQAjk6g==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@nx/nx-win32-x64-msvc@20.3.3': - resolution: {integrity: sha512-6HcbAKghEypt4aMAoDjPn2sa6FG0MyiDabpV/cVLKokK09ngyy6qQDa5vSCUSDwI542XBxqtcv0AcZi7Ez+XUQ==} + '@nx/nx-win32-x64-msvc@20.4.6': + resolution: {integrity: sha512-PtBlsTJHsHeAEawt2HrWkSEsHbwu7MlqFIrw8cS+tg7ZblpesUWva1L3Ylx0hEcQrY7UjMGDR0RVo2DKAUvKZA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@nx/plugin@20.3.3': - resolution: {integrity: sha512-NxC8HMUr++cGtNi3eKloCVBmQZLBuuNPNWDOzYmFcn3Z9WQ4G0QQx8G3erTU+G3o2YGpnjve/mLEjrdg1Ydp0Q==} + '@nx/plugin@20.4.6': + resolution: {integrity: sha512-7Jlv+BVqGoO0BolQN7P5Z87160phuE1i7H6C8xFwQnlQ3ZfwQCJzk2dkg1UyzxDkWl6lvVsqBjZPXD55gFQ3+w==} - '@nx/workspace@20.3.3': - resolution: {integrity: sha512-eN7W9H2yLDZ4ZWegdS+pChdFETMUgjsLgvGijRpZONIguo6wR+aU2LhSfj2ww8JKNJ4rcSnOw4soaaHg2W3dTQ==} + '@nx/workspace@20.4.6': + resolution: {integrity: sha512-1rRRN4MJjghDvZSfCNpTn0IDkNJrU6W3VLn8cGjmJXJj8OXxbi3bYc1Ykk+zC99UmSRQ/8+SLorkX+FgTC1ODQ==} '@oxc-resolver/binding-darwin-arm64@1.12.0': resolution: {integrity: sha512-wYe+dlF8npM7cwopOOxbdNjtmJp17e/xF5c0K2WooQXy5VOh74icydM33+Uh/SZDgwyum09/U1FVCX5GdeQk+A==} @@ -2083,8 +1956,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@schematics/angular@19.1.6': - resolution: {integrity: sha512-TxFp6iHBqXcuyZIW84HA4z3XkAMz3wTw46K3GNhzyfhFTFD0YD+DtaR3MfQ+vcj3YUYu9j44zrB9nchzugR9Ew==} + '@schematics/angular@19.2.0': + resolution: {integrity: sha512-/gdrYTr1DSUNmrUmpmne6uBnIBpJ/obHtccvz5sZckKni/KMPAr3CgGZ8JrHer3I732ucb1We9nbdtXvz+2glg==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@sec-ant/readable-stream@0.4.1': @@ -2154,68 +2027,68 @@ packages: chokidar: optional: true - '@swc/core-darwin-arm64@1.10.15': - resolution: {integrity: sha512-zFdZ6/yHqMCPk7OhLFqHy/MQ1EqJhcZMpNHd1gXYT7VRU3FaqvvKETrUlG3VYl65McPC7AhMRfXPyJ0JO/jARQ==} + '@swc/core-darwin-arm64@1.11.5': + resolution: {integrity: sha512-GEd1hzEx0mSGkJYMFMGLnrGgjL2rOsOsuYWyjyiA3WLmhD7o+n/EWBDo6mzD/9aeF8dzSPC0TnW216gJbvrNzA==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.10.15': - resolution: {integrity: sha512-8g4yiQwbr8fxOOjKXdot0dEkE5zgE8uNZudLy/ZyAhiwiZ8pbJ8/wVrDOu6dqbX7FBXAoDnvZ7fwN1jk4C8jdA==} + '@swc/core-darwin-x64@1.11.5': + resolution: {integrity: sha512-toz04z9wAClVvQSEY3xzrgyyeWBAfMWcKG4K0ugNvO56h/wczi2ZHRlnAXZW1tghKBk3z6MXqa/srfXgNhffKw==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.10.15': - resolution: {integrity: sha512-rl+eVOltl2+7WXOnvmWBpMgh6aO13G5x0U0g8hjwlmD6ku3Y9iRcThpOhm7IytMEarUp5pQxItNoPq+VUGjVHg==} + '@swc/core-linux-arm-gnueabihf@1.11.5': + resolution: {integrity: sha512-5SjmKxXdwbBpsYGTpgeXOXMIjS563/ntRGn8Zc12H/c4VfPrRLGhgbJ/48z2XVFyBLcw7BCHZyFuVX1+ZI3W0Q==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.10.15': - resolution: {integrity: sha512-qxWEQeyAJMWJqjaN4hi58WMpPdt3Tn0biSK9CYRegQtvZWCbewr6v2agtSu5AZ2rudeH6OfCWAMDQQeSgn6PJQ==} + '@swc/core-linux-arm64-gnu@1.11.5': + resolution: {integrity: sha512-pydIlInHRzRIwB0NHblz3Dx58H/bsi0I5F2deLf9iOmwPNuOGcEEZF1Qatc7YIjP5DFbXK+Dcz+pMUZb2cc2MQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.10.15': - resolution: {integrity: sha512-QcELd9/+HjZx0WCxRrKcyKGWTiQ0485kFb5w8waxcSNd0d9Lgk4EFfWWVyvIb5gIHpDQmhrgzI/yRaWQX4YSZQ==} + '@swc/core-linux-arm64-musl@1.11.5': + resolution: {integrity: sha512-LhBHKjkZq5tJF1Lh0NJFpx7ROnCWLckrlIAIdSt9XfOV+zuEXJQOj+NFcM1eNk17GFfFyUMOZyGZxzYq5dveEQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.10.15': - resolution: {integrity: sha512-S1+ZEEn3+a/MiMeQqQypbwTGoBG8/sPoCvpNbk+uValyygT+jSn3U0xVr45FbukpmMB+NhBMqfedMLqKA0QnJA==} + '@swc/core-linux-x64-gnu@1.11.5': + resolution: {integrity: sha512-dCi4xkxXlsk5sQYb3i413Cfh7+wMJeBYTvBZTD5xh+/DgRtIcIJLYJ2tNjWC4/C2i5fj+Ze9bKNSdd8weRWZ3A==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.10.15': - resolution: {integrity: sha512-qW+H9g/2zTJ4jP7NDw4VAALY0ZlNEKzYsEoSj/HKi7k3tYEHjMzsxjfsY9I8WZCft23bBdV3RTCPoxCshaj1CQ==} + '@swc/core-linux-x64-musl@1.11.5': + resolution: {integrity: sha512-K0AC4TreM5Oo/tXNXnE/Gf5+5y/HwUdd7xvUjOpZddcX/RlsbYOKWLgOtA3fdFIuta7XC+vrGKmIhm5l70DSVQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.10.15': - resolution: {integrity: sha512-AhRB11aA6LxjIqut+mg7qsu/7soQDmbK6MKR9nP3hgBszpqtXbRba58lr24xIbBCMr+dpo6kgEapWt+t5Po6Zg==} + '@swc/core-win32-arm64-msvc@1.11.5': + resolution: {integrity: sha512-wzum8sYUsvPY7kgUfuqVYTgIPYmBC8KPksoNM1fz5UfhudU0ciQuYvUBD47GIGOevaoxhLkjPH4CB95vh1mJ9w==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.10.15': - resolution: {integrity: sha512-UGdh430TQwbDn6KjgvRTg1fO022sbQ4yCCHUev0+5B8uoBwi9a89qAz3emy2m56C8TXxUoihW9Y9OMfaRwPXUw==} + '@swc/core-win32-ia32-msvc@1.11.5': + resolution: {integrity: sha512-lco7mw0TPRTpVPR6NwggJpjdUkAboGRkLrDHjIsUaR+Y5+0m5FMMkHOMxWXAbrBS5c4ph7QErp4Lma4r9Mn5og==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.10.15': - resolution: {integrity: sha512-XJzBCqO1m929qbJsOG7FZXQWX26TnEoMctS3QjuCoyBmkHxxQmZsy78KjMes1aomTcKHCyFYgrRGWgVmk7tT4Q==} + '@swc/core-win32-x64-msvc@1.11.5': + resolution: {integrity: sha512-E+DApLSC6JRK8VkDa4bNsBdD7Qoomx1HvKVZpOXl9v94hUZI5GMExl4vU5isvb+hPWL7rZ0NeI7ITnVLgLJRbA==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.10.15': - resolution: {integrity: sha512-/iFeQuNaGdK7mfJbQcObhAhsMqLT7qgMYl7jX2GEIO+VDTejESpzAyKwaMeYXExN8D6e5BRHBCe7M5YlsuzjDA==} + '@swc/core@1.11.5': + resolution: {integrity: sha512-EVY7zfpehxhTZXOfy508gb3D78ihoGGmvyiTWtlBPjgIaidP1Xw0naHMD78CWiFlZmeDjKXJufGtsEGOnZdmNA==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '*' @@ -2229,8 +2102,8 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@swc/types@0.1.17': - resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==} + '@swc/types@0.1.19': + resolution: {integrity: sha512-WkAZaAfj44kh/UFdAQcrMP1I0nwRqpt27u+08LMBYMqmQfwwMofYoMh/48NGkMMRfC4ynpfwRbJuu8ErfNloeA==} '@szmarczak/http-timer@5.0.1': resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} @@ -2313,8 +2186,8 @@ packages: '@types/lodash@4.17.13': resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==} - '@types/node@20.17.17': - resolution: {integrity: sha512-/WndGO4kIfMicEQLTi/mDANUu/iVUhT7KboZPdEqqHQ4aTS+3qT3U5gIqWDFV+XouorjfgGqvKILJeHhuQgFYg==} + '@types/node@20.17.22': + resolution: {integrity: sha512-9RV2zST+0s3EhfrMZIhrz2bhuhBwxgkbHEwP2gtGWPjBzVQjifMzJ9exw7aDZhR1wbpj8zBrfp3bo8oJcGiUUw==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -2335,30 +2208,30 @@ packages: resolution: {integrity: sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': 8.23.0 + '@typescript-eslint/parser': 8.25.0 eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/eslint-plugin@8.23.0': - resolution: {integrity: sha512-vBz65tJgRrA1Q5gWlRfvoH+w943dq9K1p1yDBY2pc+a1nbBLZp7fB9+Hk8DaALUbzjqlMfgaqlVPT1REJdkt/w==} + '@typescript-eslint/eslint-plugin@8.25.0': + resolution: {integrity: sha512-VM7bpzAe7JO/BFf40pIT1lJqS/z1F8OaSsUB3rpFJucQA4cOSuH2RVVVkFULN+En0Djgr29/jb4EQnedUo95KA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': 8.23.0 + '@typescript-eslint/parser': 8.25.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/parser@8.23.0': - resolution: {integrity: sha512-h2lUByouOXFAlMec2mILeELUbME5SZRN/7R9Cw2RD2lRQQY08MWMM+PmVVKKJNK1aIwqTo9t/0CvOxwPbRIE2Q==} + '@typescript-eslint/parser@8.25.0': + resolution: {integrity: sha512-4gbs64bnbSzu4FpgMiQ1A+D+urxkoJk/kqlDJ2W//5SygaEiAP2B4GoS7TEdxgwol2el03gckFV9lJ4QOMiiHg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/rule-tester@8.23.0': - resolution: {integrity: sha512-8pmi9mxDD2Eb4rHmBM5UqLRelixNOUQziAs7mgUAH6TVZbdu7LOCIdZcy3DaMKa76IKBF+bFLB3ESMhSetojpQ==} + '@typescript-eslint/rule-tester@8.25.0': + resolution: {integrity: sha512-Gan5digxToLdyE840pLL/s8m4UuNP0g7IGrSI46eq05TSHYxGrtnpaDdqfhNExkGa5PWuZoVSU1/jOufOhZKgQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2367,8 +2240,8 @@ packages: resolution: {integrity: sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.23.0': - resolution: {integrity: sha512-OGqo7+dXHqI7Hfm+WqkZjKjsiRtFUQHPdGMXzk5mYXhJUedO7e/Y7i8AK3MyLMgZR93TX4bIzYrfyVjLC+0VSw==} + '@typescript-eslint/scope-manager@8.25.0': + resolution: {integrity: sha512-6PPeiKIGbgStEyt4NNXa2ru5pMzQ8OYKO1hX1z53HMomrmiSB+R5FmChgQAP1ro8jMtNawz+TRQo/cSXrauTpg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/type-utils@8.16.0': @@ -2381,15 +2254,8 @@ packages: typescript: optional: true - '@typescript-eslint/type-utils@8.20.0': - resolution: {integrity: sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/type-utils@8.23.0': - resolution: {integrity: sha512-iIuLdYpQWZKbiH+RkCGc6iu+VwscP5rCtQ1lyQ7TYuKLrcZoeJVpcLiG8DliXVkUxirW/PWlmS+d6yD51L9jvA==} + '@typescript-eslint/type-utils@8.25.0': + resolution: {integrity: sha512-d77dHgHWnxmXOPJuDWO4FDWADmGQkN5+tt6SFRZz/RtCWl4pHgFl3+WdYCn16+3teG09DY6XtEpf3gGD0a186g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2399,12 +2265,8 @@ packages: resolution: {integrity: sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.20.0': - resolution: {integrity: sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/types@8.23.0': - resolution: {integrity: sha512-1sK4ILJbCmZOTt9k4vkoulT6/y5CHJ1qUYxqpF1K/DBAd8+ZUL4LlSCxOssuH5m4rUaaN0uS0HlVPvd45zjduQ==} + '@typescript-eslint/types@8.25.0': + resolution: {integrity: sha512-+vUe0Zb4tkNgznQwicsvLUJgZIRs6ITeWSCclX1q85pR1iOiaj+4uZJIUp//Z27QWu5Cseiw3O3AR8hVpax7Aw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@8.16.0': @@ -2416,20 +2278,14 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.20.0': - resolution: {integrity: sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/typescript-estree@8.23.0': - resolution: {integrity: sha512-LcqzfipsB8RTvH8FX24W4UUFk1bl+0yTOf9ZA08XngFwMg4Kj8A+9hwz8Cr/ZS4KwHrmo9PJiLZkOt49vPnuvQ==} + '@typescript-eslint/typescript-estree@8.25.0': + resolution: {integrity: sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.23.0': - resolution: {integrity: sha512-uB/+PSo6Exu02b5ZEiVtmY6RVYO7YU5xqgzTIVZwTHvvK3HsL8tZZHFaTLFtRG3CsV4A5mhOv+NZx5BlhXPyIA==} + '@typescript-eslint/utils@8.25.0': + resolution: {integrity: sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2439,12 +2295,8 @@ packages: resolution: {integrity: sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.20.0': - resolution: {integrity: sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/visitor-keys@8.23.0': - resolution: {integrity: sha512-oWWhcWDLwDfu++BGTZcmXWqpwtkwb5o7fxUIGksMQQDSdPW9prsSnfIOZMlsj4vBOSrcnjIUZMiIjODgGosFhQ==} + '@typescript-eslint/visitor-keys@8.25.0': + resolution: {integrity: sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@verdaccio/auth@8.0.0-next-8.7': @@ -2766,8 +2618,9 @@ packages: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - babel-plugin-macros@2.8.0: - resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} babel-plugin-polyfill-corejs2@0.4.12: resolution: {integrity: sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==} @@ -3130,9 +2983,9 @@ packages: cosmiconfig: '>=9' typescript: '>=5' - cosmiconfig@6.0.0: - resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} - engines: {node: '>=8'} + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} cosmiconfig@9.0.0: resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} @@ -3376,11 +3229,6 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - esbuild@0.23.1: - resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.25.0: resolution: {integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==} engines: {node: '>=18'} @@ -3405,8 +3253,8 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - eslint-config-prettier@10.0.1: - resolution: {integrity: sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==} + eslint-config-prettier@10.0.2: + resolution: {integrity: sha512-1105/17ZIMjmCOJOPNfVdbXafLCLj3hPmkmB7dLgt7XsQ/zkxSuDerE/xgO3RxoHysR1N1whmquY0lSn2O0VLg==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -3433,18 +3281,8 @@ packages: jiti: optional: true - eslint@9.18.0: - resolution: {integrity: sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - eslint@9.20.0: - resolution: {integrity: sha512-aL4F8167Hg4IvsW89ejnpTwx+B/UQRzJPGgbIOl+4XqffWsahVVsLEWoZvnrVuwpWmnRd7XeXmQI1zlKcFDteA==} + eslint@9.21.0: + resolution: {integrity: sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -3751,8 +3589,8 @@ packages: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} - get-tsconfig@4.8.1: - resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} getpass@0.1.7: resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} @@ -3994,10 +3832,6 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} - engines: {node: '>= 0.4'} - is-core-module@2.16.1: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} @@ -4786,8 +4620,8 @@ packages: resolution: {integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==} engines: {node: ^16.14.0 || >=18.0.0} - npm-package-arg@12.0.1: - resolution: {integrity: sha512-aDxjFfPV3Liw0WOBWlyZLMBqtbgbg03rmGvHDJa2Ttv7tIz+1oB5qWec4psCDFZcZi9b5XdGkPdQiJxOPzvQRQ==} + npm-package-arg@12.0.2: + resolution: {integrity: sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==} engines: {node: ^18.17.0 || >=20.5.0} npm-packlist@9.0.0: @@ -4810,8 +4644,8 @@ packages: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - nx@20.3.3: - resolution: {integrity: sha512-IUu2D8/bVa7aSr3ViRcrmpTGO2FKqzJoio6gjeq/YbyUHyjrrq5HUmHFx30Wm2vmC1BGm0MeyakTNUJzQvfAog==} + nx@20.4.6: + resolution: {integrity: sha512-gXRw3urAq4glK6B1+jxHjzXRyuNrFFI7L3ggNg34UmQ46AyT7a6FgjZp2OZ779urwnoQSTvxNfBuD4+RrB31MQ==} hasBin: true peerDependencies: '@swc-node/register': ^1.8.0 @@ -5051,8 +4885,8 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - prettier@3.5.0: - resolution: {integrity: sha512-quyMrVt6svPS7CjQ9gKb3GLEX/rl3BCL2oa/QkNcXv4YNVBC9olt3s+H7ukto06q7B1Qz46PbrKLO34PR6vXcA==} + prettier@3.5.2: + resolution: {integrity: sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==} engines: {node: '>=14'} hasBin: true @@ -5231,10 +5065,6 @@ packages: engines: {node: '>= 0.4'} hasBin: true - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - responselike@3.0.0: resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} engines: {node: '>=14.16'} @@ -5629,12 +5459,6 @@ packages: peerDependencies: typescript: '>=4.2.0' - ts-api-utils@2.0.0: - resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} - engines: {node: '>=18.12'} - peerDependencies: - typescript: '>=4.8.4' - ts-api-utils@2.0.1: resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} engines: {node: '>=18.12'} @@ -5686,8 +5510,8 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsx@4.19.2: - resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} + tsx@4.19.3: + resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==} engines: {node: '>=18.0.0'} hasBin: true @@ -5730,8 +5554,8 @@ packages: typescript: optional: true - typescript-eslint@8.23.0: - resolution: {integrity: sha512-/LBRo3HrXr5LxmrdYSOCvoAMm7p2jNizNfbIpCgvG4HMsnoprRUOce/+8VJ9BDYWW68rqIENE/haVLWPeFZBVQ==} + typescript-eslint@8.25.0: + resolution: {integrity: sha512-TxRdQQLH4g7JkoFlYG3caW5v1S6kEkz8rqt80iQJZUYPq1zD1Ra7HfQBJJ88ABRaMvHAXnwRvRB4V+6sQ9xN5Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -5742,11 +5566,6 @@ packages: engines: {node: '>=14.17'} hasBin: true - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} - engines: {node: '>=14.17'} - hasBin: true - typescript@5.7.3: resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} engines: {node: '>=14.17'} @@ -6007,9 +5826,9 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular-devkit/architect@0.1901.6': + '@angular-devkit/architect@0.1902.0': dependencies: - '@angular-devkit/core': 19.1.6 + '@angular-devkit/core': 19.2.0 rxjs: 7.8.1 transitivePeerDependencies: - chokidar @@ -6032,7 +5851,7 @@ snapshots: rxjs: 7.8.1 source-map: 0.7.4 - '@angular-devkit/core@19.1.6': + '@angular-devkit/core@19.2.0': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -6061,9 +5880,9 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular-devkit/schematics@19.1.6': + '@angular-devkit/schematics@19.2.0': dependencies: - '@angular-devkit/core': 19.1.6 + '@angular-devkit/core': 19.2.0 jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 5.4.1 @@ -6071,23 +5890,23 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/cli@19.1.6(@types/node@20.17.17)': + '@angular/cli@19.2.0(@types/node@20.17.22)': dependencies: - '@angular-devkit/architect': 0.1901.6 - '@angular-devkit/core': 19.1.6 - '@angular-devkit/schematics': 19.1.6 - '@inquirer/prompts': 7.2.1(@types/node@20.17.17) - '@listr2/prompt-adapter-inquirer': 2.0.18(@inquirer/prompts@7.2.1(@types/node@20.17.17)) - '@schematics/angular': 19.1.6 + '@angular-devkit/architect': 0.1902.0 + '@angular-devkit/core': 19.2.0 + '@angular-devkit/schematics': 19.2.0 + '@inquirer/prompts': 7.3.2(@types/node@20.17.22) + '@listr2/prompt-adapter-inquirer': 2.0.18(@inquirer/prompts@7.3.2(@types/node@20.17.22)) + '@schematics/angular': 19.2.0 '@yarnpkg/lockfile': 1.1.0 ini: 5.0.0 jsonc-parser: 3.3.1 listr2: 8.2.5 - npm-package-arg: 12.0.1 + npm-package-arg: 12.0.2 npm-pick-manifest: 10.0.0 pacote: 20.0.0 resolve: 1.22.10 - semver: 7.6.3 + semver: 7.7.1 symbol-observable: 4.0.0 yargs: 17.7.2 transitivePeerDependencies: @@ -6096,7 +5915,7 @@ snapshots: - chokidar - supports-color - '@angular/compiler@19.1.5': + '@angular/compiler@19.2.0': dependencies: tslib: 2.8.1 @@ -6188,7 +6007,7 @@ snapshots: '@babel/helper-plugin-utils': 7.25.9 debug: 4.4.0 lodash.debounce: 4.0.8 - resolve: 1.22.8 + resolve: 1.22.10 transitivePeerDependencies: - supports-color @@ -6893,11 +6712,11 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@commitlint/cli@19.7.1(@types/node@20.17.17)(typescript@5.7.3)': + '@commitlint/cli@19.7.1(@types/node@20.17.22)(typescript@5.7.3)': dependencies: '@commitlint/format': 19.5.0 '@commitlint/lint': 19.7.1 - '@commitlint/load': 19.6.1(@types/node@20.17.17)(typescript@5.7.3) + '@commitlint/load': 19.6.1(@types/node@20.17.22)(typescript@5.7.3) '@commitlint/read': 19.5.0 '@commitlint/types': 19.5.0 tinyexec: 0.3.1 @@ -6944,7 +6763,7 @@ snapshots: '@commitlint/rules': 19.6.0 '@commitlint/types': 19.5.0 - '@commitlint/load@19.5.0(@types/node@20.17.17)(typescript@5.7.3)': + '@commitlint/load@19.5.0(@types/node@20.17.22)(typescript@5.7.3)': dependencies: '@commitlint/config-validator': 19.5.0 '@commitlint/execute-rule': 19.5.0 @@ -6952,7 +6771,7 @@ snapshots: '@commitlint/types': 19.5.0 chalk: 5.4.1 cosmiconfig: 9.0.0(typescript@5.7.3) - cosmiconfig-typescript-loader: 5.1.0(@types/node@20.17.17)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3) + cosmiconfig-typescript-loader: 5.1.0(@types/node@20.17.22)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -6961,7 +6780,7 @@ snapshots: - typescript optional: true - '@commitlint/load@19.6.1(@types/node@20.17.17)(typescript@5.7.3)': + '@commitlint/load@19.6.1(@types/node@20.17.22)(typescript@5.7.3)': dependencies: '@commitlint/config-validator': 19.5.0 '@commitlint/execute-rule': 19.5.0 @@ -6969,7 +6788,7 @@ snapshots: '@commitlint/types': 19.5.0 chalk: 5.4.1 cosmiconfig: 9.0.0(typescript@5.7.3) - cosmiconfig-typescript-loader: 6.1.0(@types/node@20.17.17)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3) + cosmiconfig-typescript-loader: 6.1.0(@types/node@20.17.22)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -7058,150 +6877,78 @@ snapshots: dependencies: tslib: 2.8.1 - '@esbuild/aix-ppc64@0.23.1': - optional: true - '@esbuild/aix-ppc64@0.25.0': optional: true - '@esbuild/android-arm64@0.23.1': - optional: true - '@esbuild/android-arm64@0.25.0': optional: true - '@esbuild/android-arm@0.23.1': - optional: true - '@esbuild/android-arm@0.25.0': optional: true - '@esbuild/android-x64@0.23.1': - optional: true - '@esbuild/android-x64@0.25.0': optional: true - '@esbuild/darwin-arm64@0.23.1': - optional: true - '@esbuild/darwin-arm64@0.25.0': optional: true - '@esbuild/darwin-x64@0.23.1': - optional: true - '@esbuild/darwin-x64@0.25.0': optional: true - '@esbuild/freebsd-arm64@0.23.1': - optional: true - '@esbuild/freebsd-arm64@0.25.0': optional: true - '@esbuild/freebsd-x64@0.23.1': - optional: true - '@esbuild/freebsd-x64@0.25.0': optional: true - '@esbuild/linux-arm64@0.23.1': - optional: true - '@esbuild/linux-arm64@0.25.0': optional: true - '@esbuild/linux-arm@0.23.1': - optional: true - '@esbuild/linux-arm@0.25.0': optional: true - '@esbuild/linux-ia32@0.23.1': - optional: true - '@esbuild/linux-ia32@0.25.0': optional: true - '@esbuild/linux-loong64@0.23.1': - optional: true - '@esbuild/linux-loong64@0.25.0': optional: true - '@esbuild/linux-mips64el@0.23.1': - optional: true - '@esbuild/linux-mips64el@0.25.0': optional: true - '@esbuild/linux-ppc64@0.23.1': - optional: true - '@esbuild/linux-ppc64@0.25.0': optional: true - '@esbuild/linux-riscv64@0.23.1': - optional: true - '@esbuild/linux-riscv64@0.25.0': optional: true - '@esbuild/linux-s390x@0.23.1': - optional: true - '@esbuild/linux-s390x@0.25.0': optional: true - '@esbuild/linux-x64@0.23.1': - optional: true - '@esbuild/linux-x64@0.25.0': optional: true '@esbuild/netbsd-arm64@0.25.0': optional: true - '@esbuild/netbsd-x64@0.23.1': - optional: true - '@esbuild/netbsd-x64@0.25.0': optional: true - '@esbuild/openbsd-arm64@0.23.1': - optional: true - '@esbuild/openbsd-arm64@0.25.0': optional: true - '@esbuild/openbsd-x64@0.23.1': - optional: true - '@esbuild/openbsd-x64@0.25.0': optional: true - '@esbuild/sunos-x64@0.23.1': - optional: true - '@esbuild/sunos-x64@0.25.0': optional: true - '@esbuild/win32-arm64@0.23.1': - optional: true - '@esbuild/win32-arm64@0.25.0': optional: true - '@esbuild/win32-ia32@0.23.1': - optional: true - '@esbuild/win32-ia32@0.25.0': optional: true - '@esbuild/win32-x64@0.23.1': - optional: true - '@esbuild/win32-x64@0.25.0': optional: true @@ -7210,14 +6957,9 @@ snapshots: eslint: 9.15.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.4.1(eslint@9.18.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.4.1(eslint@9.21.0(jiti@2.4.2))': dependencies: - eslint: 9.18.0(jiti@2.4.2) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/eslint-utils@4.4.1(eslint@9.20.0(jiti@2.4.2))': - dependencies: - eslint: 9.20.0(jiti@2.4.2) + eslint: 9.21.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -7230,11 +6972,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/core@0.10.0': + '@eslint/config-array@0.19.2': dependencies: - '@types/json-schema': 7.0.15 + '@eslint/object-schema': 2.1.6 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color - '@eslint/core@0.11.0': + '@eslint/core@0.12.0': dependencies: '@types/json-schema': 7.0.15 @@ -7254,21 +7000,35 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.15.0': {} + '@eslint/eslintrc@3.3.0': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color - '@eslint/js@9.18.0': {} + '@eslint/js@9.15.0': {} - '@eslint/js@9.20.0': {} + '@eslint/js@9.21.0': {} '@eslint/object-schema@2.1.4': {} + '@eslint/object-schema@2.1.6': {} + '@eslint/plugin-kit@0.2.3': dependencies: levn: 0.4.1 - '@eslint/plugin-kit@0.2.5': + '@eslint/plugin-kit@0.2.7': dependencies: - '@eslint/core': 0.10.0 + '@eslint/core': 0.12.0 levn: 0.4.1 '@humanfs/core@0.19.1': {} @@ -7284,27 +7044,29 @@ snapshots: '@humanwhocodes/retry@0.4.1': {} - '@inquirer/checkbox@4.1.1(@types/node@20.17.17)': + '@humanwhocodes/retry@0.4.2': {} + + '@inquirer/checkbox@4.1.2(@types/node@20.17.22)': dependencies: - '@inquirer/core': 10.1.6(@types/node@20.17.17) + '@inquirer/core': 10.1.7(@types/node@20.17.22) '@inquirer/figures': 1.0.10 - '@inquirer/type': 3.0.4(@types/node@20.17.17) + '@inquirer/type': 3.0.4(@types/node@20.17.22) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.22 - '@inquirer/confirm@5.1.5(@types/node@20.17.17)': + '@inquirer/confirm@5.1.6(@types/node@20.17.22)': dependencies: - '@inquirer/core': 10.1.6(@types/node@20.17.17) - '@inquirer/type': 3.0.4(@types/node@20.17.17) + '@inquirer/core': 10.1.7(@types/node@20.17.22) + '@inquirer/type': 3.0.4(@types/node@20.17.22) optionalDependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.22 - '@inquirer/core@10.1.6(@types/node@20.17.17)': + '@inquirer/core@10.1.7(@types/node@20.17.22)': dependencies: '@inquirer/figures': 1.0.10 - '@inquirer/type': 3.0.4(@types/node@20.17.17) + '@inquirer/type': 3.0.4(@types/node@20.17.22) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -7312,96 +7074,97 @@ snapshots: wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.22 - '@inquirer/editor@4.2.6(@types/node@20.17.17)': + '@inquirer/editor@4.2.7(@types/node@20.17.22)': dependencies: - '@inquirer/core': 10.1.6(@types/node@20.17.17) - '@inquirer/type': 3.0.4(@types/node@20.17.17) + '@inquirer/core': 10.1.7(@types/node@20.17.22) + '@inquirer/type': 3.0.4(@types/node@20.17.22) external-editor: 3.1.0 optionalDependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.22 - '@inquirer/expand@4.0.8(@types/node@20.17.17)': + '@inquirer/expand@4.0.9(@types/node@20.17.22)': dependencies: - '@inquirer/core': 10.1.6(@types/node@20.17.17) - '@inquirer/type': 3.0.4(@types/node@20.17.17) + '@inquirer/core': 10.1.7(@types/node@20.17.22) + '@inquirer/type': 3.0.4(@types/node@20.17.22) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.22 '@inquirer/figures@1.0.10': {} - '@inquirer/input@4.1.5(@types/node@20.17.17)': + '@inquirer/input@4.1.6(@types/node@20.17.22)': dependencies: - '@inquirer/core': 10.1.6(@types/node@20.17.17) - '@inquirer/type': 3.0.4(@types/node@20.17.17) + '@inquirer/core': 10.1.7(@types/node@20.17.22) + '@inquirer/type': 3.0.4(@types/node@20.17.22) optionalDependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.22 - '@inquirer/number@3.0.8(@types/node@20.17.17)': + '@inquirer/number@3.0.9(@types/node@20.17.22)': dependencies: - '@inquirer/core': 10.1.6(@types/node@20.17.17) - '@inquirer/type': 3.0.4(@types/node@20.17.17) + '@inquirer/core': 10.1.7(@types/node@20.17.22) + '@inquirer/type': 3.0.4(@types/node@20.17.22) optionalDependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.22 - '@inquirer/password@4.0.8(@types/node@20.17.17)': + '@inquirer/password@4.0.9(@types/node@20.17.22)': dependencies: - '@inquirer/core': 10.1.6(@types/node@20.17.17) - '@inquirer/type': 3.0.4(@types/node@20.17.17) + '@inquirer/core': 10.1.7(@types/node@20.17.22) + '@inquirer/type': 3.0.4(@types/node@20.17.22) ansi-escapes: 4.3.2 optionalDependencies: - '@types/node': 20.17.17 - - '@inquirer/prompts@7.2.1(@types/node@20.17.17)': - dependencies: - '@inquirer/checkbox': 4.1.1(@types/node@20.17.17) - '@inquirer/confirm': 5.1.5(@types/node@20.17.17) - '@inquirer/editor': 4.2.6(@types/node@20.17.17) - '@inquirer/expand': 4.0.8(@types/node@20.17.17) - '@inquirer/input': 4.1.5(@types/node@20.17.17) - '@inquirer/number': 3.0.8(@types/node@20.17.17) - '@inquirer/password': 4.0.8(@types/node@20.17.17) - '@inquirer/rawlist': 4.0.8(@types/node@20.17.17) - '@inquirer/search': 3.0.8(@types/node@20.17.17) - '@inquirer/select': 4.0.8(@types/node@20.17.17) - '@types/node': 20.17.17 - - '@inquirer/rawlist@4.0.8(@types/node@20.17.17)': - dependencies: - '@inquirer/core': 10.1.6(@types/node@20.17.17) - '@inquirer/type': 3.0.4(@types/node@20.17.17) + '@types/node': 20.17.22 + + '@inquirer/prompts@7.3.2(@types/node@20.17.22)': + dependencies: + '@inquirer/checkbox': 4.1.2(@types/node@20.17.22) + '@inquirer/confirm': 5.1.6(@types/node@20.17.22) + '@inquirer/editor': 4.2.7(@types/node@20.17.22) + '@inquirer/expand': 4.0.9(@types/node@20.17.22) + '@inquirer/input': 4.1.6(@types/node@20.17.22) + '@inquirer/number': 3.0.9(@types/node@20.17.22) + '@inquirer/password': 4.0.9(@types/node@20.17.22) + '@inquirer/rawlist': 4.0.9(@types/node@20.17.22) + '@inquirer/search': 3.0.9(@types/node@20.17.22) + '@inquirer/select': 4.0.9(@types/node@20.17.22) + optionalDependencies: + '@types/node': 20.17.22 + + '@inquirer/rawlist@4.0.9(@types/node@20.17.22)': + dependencies: + '@inquirer/core': 10.1.7(@types/node@20.17.22) + '@inquirer/type': 3.0.4(@types/node@20.17.22) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.22 - '@inquirer/search@3.0.8(@types/node@20.17.17)': + '@inquirer/search@3.0.9(@types/node@20.17.22)': dependencies: - '@inquirer/core': 10.1.6(@types/node@20.17.17) + '@inquirer/core': 10.1.7(@types/node@20.17.22) '@inquirer/figures': 1.0.10 - '@inquirer/type': 3.0.4(@types/node@20.17.17) + '@inquirer/type': 3.0.4(@types/node@20.17.22) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.22 - '@inquirer/select@4.0.8(@types/node@20.17.17)': + '@inquirer/select@4.0.9(@types/node@20.17.22)': dependencies: - '@inquirer/core': 10.1.6(@types/node@20.17.17) + '@inquirer/core': 10.1.7(@types/node@20.17.22) '@inquirer/figures': 1.0.10 - '@inquirer/type': 3.0.4(@types/node@20.17.17) + '@inquirer/type': 3.0.4(@types/node@20.17.22) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.22 '@inquirer/type@1.5.5': dependencies: mute-stream: 1.0.0 - '@inquirer/type@3.0.4(@types/node@20.17.17)': + '@inquirer/type@3.0.4(@types/node@20.17.22)': optionalDependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.22 '@isaacs/cliui@8.0.2': dependencies: @@ -7429,27 +7192,27 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 20.17.17 + '@types/node': 20.17.22 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3))': + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.17 + '@types/node': 20.17.22 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.17.17)(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3)) + jest-config: 29.7.0(@types/node@20.17.22)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -7474,7 +7237,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.17 + '@types/node': 20.17.22 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -7492,7 +7255,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.17.17 + '@types/node': 20.17.22 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -7514,7 +7277,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 20.17.17 + '@types/node': 20.17.22 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -7584,7 +7347,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.17.17 + '@types/node': 20.17.22 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -7612,11 +7375,13 @@ snapshots: '@jsdevtools/ono@7.1.3': {} - '@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.2.1(@types/node@20.17.17))': + '@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.3.2(@types/node@20.17.22))': dependencies: - '@inquirer/prompts': 7.2.1(@types/node@20.17.17) + '@inquirer/prompts': 7.3.2(@types/node@20.17.22) '@inquirer/type': 1.5.5 + '@mdn/browser-compat-data@5.6.43': {} + '@napi-rs/nice-android-arm-eabi@1.0.1': optional: true @@ -7789,22 +7554,22 @@ snapshots: - bluebird - supports-color - '@nx/devkit@20.3.3(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))': + '@nx/devkit@20.4.6(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)))': dependencies: ejs: 3.1.10 enquirer: 2.3.6 ignore: 5.3.2 minimatch: 9.0.3 - nx: 20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)) + nx: 20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)) semver: 7.7.1 tmp: 0.2.3 tslib: 2.8.1 yargs-parser: 21.1.1 - '@nx/esbuild@20.3.3(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(esbuild@0.25.0)(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0))': + '@nx/esbuild@20.4.6(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(esbuild@0.25.0)(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0))': dependencies: - '@nx/devkit': 20.3.3(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))) - '@nx/js': 20.3.3(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) + '@nx/devkit': 20.4.6(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))) + '@nx/js': 20.4.6(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) picocolors: 1.1.1 tinyglobby: 0.2.10 tsconfig-paths: 4.2.0 @@ -7823,13 +7588,13 @@ snapshots: - typescript - verdaccio - '@nx/eslint-plugin@20.3.3(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(@typescript-eslint/parser@8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3))(eslint-config-prettier@10.0.1(eslint@9.20.0(jiti@2.4.2)))(eslint@9.20.0(jiti@2.4.2))(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0))': + '@nx/eslint-plugin@20.4.6(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-config-prettier@10.0.2(eslint@9.21.0(jiti@2.4.2)))(eslint@9.21.0(jiti@2.4.2))(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0))': dependencies: - '@nx/devkit': 20.3.3(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))) - '@nx/js': 20.3.3(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) - '@typescript-eslint/parser': 8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/type-utils': 8.20.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) + '@nx/devkit': 20.4.6(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))) + '@nx/js': 20.4.6(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) + '@typescript-eslint/parser': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/type-utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) chalk: 4.1.2 confusing-browser-globals: 1.0.11 globals: 15.12.0 @@ -7837,7 +7602,7 @@ snapshots: semver: 7.7.1 tslib: 2.8.1 optionalDependencies: - eslint-config-prettier: 10.0.1(eslint@9.20.0(jiti@2.4.2)) + eslint-config-prettier: 10.0.2(eslint@9.21.0(jiti@2.4.2)) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -7851,14 +7616,14 @@ snapshots: - typescript - verdaccio - '@nx/eslint@20.3.3(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(@zkochan/js-yaml@0.0.7)(eslint@9.20.0(jiti@2.4.2))(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0))': + '@nx/eslint@20.4.6(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(@zkochan/js-yaml@0.0.7)(eslint@9.21.0(jiti@2.4.2))(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)))(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0))': dependencies: - '@nx/devkit': 20.3.3(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))) - '@nx/js': 20.3.3(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))(typescript@5.6.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) - eslint: 9.20.0(jiti@2.4.2) + '@nx/devkit': 20.4.6(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))) + '@nx/js': 20.4.6(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) + eslint: 9.21.0(jiti@2.4.2) semver: 7.7.1 tslib: 2.8.1 - typescript: 5.6.3 + typescript: 5.7.3 optionalDependencies: '@zkochan/js-yaml': 0.0.7 transitivePeerDependencies: @@ -7872,15 +7637,15 @@ snapshots: - supports-color - verdaccio - '@nx/jest@20.3.3(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0))': + '@nx/jest@20.4.6(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(babel-plugin-macros@3.1.0)(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)))(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0))': dependencies: '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 - '@nx/devkit': 20.3.3(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))) - '@nx/js': 20.3.3(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) + '@nx/devkit': 20.4.6(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))) + '@nx/js': 20.4.6(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.7.3) identity-obj-proxy: 3.0.0 - jest-config: 29.7.0(@types/node@20.17.17)(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3)) + jest-config: 29.7.0(@types/node@20.17.22)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3)) jest-resolve: 29.7.0 jest-util: 29.7.0 minimatch: 9.0.3 @@ -7904,52 +7669,7 @@ snapshots: - typescript - verdaccio - '@nx/js@20.3.3(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))(typescript@5.6.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0))': - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-runtime': 7.25.9(@babel/core@7.26.0) - '@babel/preset-env': 7.26.0(@babel/core@7.26.0) - '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) - '@babel/runtime': 7.26.0 - '@nx/devkit': 20.3.3(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))) - '@nx/workspace': 20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)) - '@zkochan/js-yaml': 0.0.7 - babel-plugin-const-enum: 1.2.0(@babel/core@7.26.0) - babel-plugin-macros: 2.8.0 - babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.26.0)(@babel/traverse@7.25.9) - chalk: 4.1.2 - columnify: 1.6.0 - detect-port: 1.6.1 - enquirer: 2.3.6 - ignore: 5.3.2 - js-tokens: 4.0.0 - jsonc-parser: 3.2.0 - minimatch: 9.0.3 - npm-package-arg: 11.0.1 - npm-run-path: 4.0.1 - ora: 5.3.0 - semver: 7.7.1 - source-map-support: 0.5.19 - tinyglobby: 0.2.10 - ts-node: 10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.6.3) - tsconfig-paths: 4.2.0 - tslib: 2.8.1 - optionalDependencies: - verdaccio: 6.0.5(encoding@0.1.13)(typanion@3.14.0) - transitivePeerDependencies: - - '@babel/traverse' - - '@swc-node/register' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - debug - - nx - - supports-color - - typescript - - '@nx/js@20.3.3(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0))': + '@nx/js@20.4.6(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.0) @@ -7958,11 +7678,11 @@ snapshots: '@babel/preset-env': 7.26.0(@babel/core@7.26.0) '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) '@babel/runtime': 7.26.0 - '@nx/devkit': 20.3.3(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))) - '@nx/workspace': 20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)) + '@nx/devkit': 20.4.6(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))) + '@nx/workspace': 20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)) '@zkochan/js-yaml': 0.0.7 babel-plugin-const-enum: 1.2.0(@babel/core@7.26.0) - babel-plugin-macros: 2.8.0 + babel-plugin-macros: 3.1.0 babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.26.0)(@babel/traverse@7.25.9) chalk: 4.1.2 columnify: 1.6.0 @@ -7978,7 +7698,7 @@ snapshots: semver: 7.7.1 source-map-support: 0.5.19 tinyglobby: 0.2.10 - ts-node: 10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3) + ts-node: 10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3) tsconfig-paths: 4.2.0 tslib: 2.8.1 optionalDependencies: @@ -7994,42 +7714,42 @@ snapshots: - supports-color - typescript - '@nx/nx-darwin-arm64@20.3.3': + '@nx/nx-darwin-arm64@20.4.6': optional: true - '@nx/nx-darwin-x64@20.3.3': + '@nx/nx-darwin-x64@20.4.6': optional: true - '@nx/nx-freebsd-x64@20.3.3': + '@nx/nx-freebsd-x64@20.4.6': optional: true - '@nx/nx-linux-arm-gnueabihf@20.3.3': + '@nx/nx-linux-arm-gnueabihf@20.4.6': optional: true - '@nx/nx-linux-arm64-gnu@20.3.3': + '@nx/nx-linux-arm64-gnu@20.4.6': optional: true - '@nx/nx-linux-arm64-musl@20.3.3': + '@nx/nx-linux-arm64-musl@20.4.6': optional: true - '@nx/nx-linux-x64-gnu@20.3.3': + '@nx/nx-linux-x64-gnu@20.4.6': optional: true - '@nx/nx-linux-x64-musl@20.3.3': + '@nx/nx-linux-x64-musl@20.4.6': optional: true - '@nx/nx-win32-arm64-msvc@20.3.3': + '@nx/nx-win32-arm64-msvc@20.4.6': optional: true - '@nx/nx-win32-x64-msvc@20.3.3': + '@nx/nx-win32-x64-msvc@20.4.6': optional: true - '@nx/plugin@20.3.3(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(@zkochan/js-yaml@0.0.7)(eslint@9.20.0(jiti@2.4.2))(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0))': + '@nx/plugin@20.4.6(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(@zkochan/js-yaml@0.0.7)(babel-plugin-macros@3.1.0)(eslint@9.21.0(jiti@2.4.2))(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)))(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0))': dependencies: - '@nx/devkit': 20.3.3(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))) - '@nx/eslint': 20.3.3(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(@zkochan/js-yaml@0.0.7)(eslint@9.20.0(jiti@2.4.2))(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) - '@nx/jest': 20.3.3(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) - '@nx/js': 20.3.3(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) + '@nx/devkit': 20.4.6(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))) + '@nx/eslint': 20.4.6(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(@zkochan/js-yaml@0.0.7)(eslint@9.21.0(jiti@2.4.2))(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)))(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) + '@nx/jest': 20.4.6(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(babel-plugin-macros@3.1.0)(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)))(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) + '@nx/js': 20.4.6(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)))(typescript@5.7.3)(verdaccio@6.0.5(encoding@0.1.13)(typanion@3.14.0)) tslib: 2.8.1 transitivePeerDependencies: - '@babel/traverse' @@ -8048,12 +7768,12 @@ snapshots: - typescript - verdaccio - '@nx/workspace@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))': + '@nx/workspace@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))': dependencies: - '@nx/devkit': 20.3.3(nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15))) + '@nx/devkit': 20.4.6(nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15))) chalk: 4.1.2 enquirer: 2.3.6 - nx: 20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)) + nx: 20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)) tslib: 2.8.1 yargs-parser: 21.1.1 transitivePeerDependencies: @@ -8104,10 +7824,10 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@schematics/angular@19.1.6': + '@schematics/angular@19.2.0': dependencies: - '@angular-devkit/core': 19.1.6 - '@angular-devkit/schematics': 19.1.6 + '@angular-devkit/core': 19.2.0 + '@angular-devkit/schematics': 19.2.0 jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar @@ -8158,16 +7878,16 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 - '@swc-node/core@1.13.3(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)': + '@swc-node/core@1.13.3(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)': dependencies: - '@swc/core': 1.10.15(@swc/helpers@0.5.15) - '@swc/types': 0.1.17 + '@swc/core': 1.11.5(@swc/helpers@0.5.15) + '@swc/types': 0.1.19 - '@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3)': + '@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3)': dependencies: - '@swc-node/core': 1.13.3(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17) + '@swc-node/core': 1.13.3(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19) '@swc-node/sourcemap-support': 0.5.1 - '@swc/core': 1.10.15(@swc/helpers@0.5.15) + '@swc/core': 1.11.5(@swc/helpers@0.5.15) colorette: 2.0.20 debug: 4.3.7 oxc-resolver: 1.12.0 @@ -8183,9 +7903,9 @@ snapshots: source-map-support: 0.5.21 tslib: 2.8.1 - '@swc/cli@0.6.0(@swc/core@1.10.15(@swc/helpers@0.5.15))': + '@swc/cli@0.6.0(@swc/core@1.11.5(@swc/helpers@0.5.15))': dependencies: - '@swc/core': 1.10.15(@swc/helpers@0.5.15) + '@swc/core': 1.11.5(@swc/helpers@0.5.15) '@swc/counter': 0.1.3 '@xhmikosr/bin-wrapper': 13.0.5 commander: 8.3.0 @@ -8196,51 +7916,51 @@ snapshots: slash: 3.0.0 source-map: 0.7.4 - '@swc/core-darwin-arm64@1.10.15': + '@swc/core-darwin-arm64@1.11.5': optional: true - '@swc/core-darwin-x64@1.10.15': + '@swc/core-darwin-x64@1.11.5': optional: true - '@swc/core-linux-arm-gnueabihf@1.10.15': + '@swc/core-linux-arm-gnueabihf@1.11.5': optional: true - '@swc/core-linux-arm64-gnu@1.10.15': + '@swc/core-linux-arm64-gnu@1.11.5': optional: true - '@swc/core-linux-arm64-musl@1.10.15': + '@swc/core-linux-arm64-musl@1.11.5': optional: true - '@swc/core-linux-x64-gnu@1.10.15': + '@swc/core-linux-x64-gnu@1.11.5': optional: true - '@swc/core-linux-x64-musl@1.10.15': + '@swc/core-linux-x64-musl@1.11.5': optional: true - '@swc/core-win32-arm64-msvc@1.10.15': + '@swc/core-win32-arm64-msvc@1.11.5': optional: true - '@swc/core-win32-ia32-msvc@1.10.15': + '@swc/core-win32-ia32-msvc@1.11.5': optional: true - '@swc/core-win32-x64-msvc@1.10.15': + '@swc/core-win32-x64-msvc@1.11.5': optional: true - '@swc/core@1.10.15(@swc/helpers@0.5.15)': + '@swc/core@1.11.5(@swc/helpers@0.5.15)': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.17 + '@swc/types': 0.1.19 optionalDependencies: - '@swc/core-darwin-arm64': 1.10.15 - '@swc/core-darwin-x64': 1.10.15 - '@swc/core-linux-arm-gnueabihf': 1.10.15 - '@swc/core-linux-arm64-gnu': 1.10.15 - '@swc/core-linux-arm64-musl': 1.10.15 - '@swc/core-linux-x64-gnu': 1.10.15 - '@swc/core-linux-x64-musl': 1.10.15 - '@swc/core-win32-arm64-msvc': 1.10.15 - '@swc/core-win32-ia32-msvc': 1.10.15 - '@swc/core-win32-x64-msvc': 1.10.15 + '@swc/core-darwin-arm64': 1.11.5 + '@swc/core-darwin-x64': 1.11.5 + '@swc/core-linux-arm-gnueabihf': 1.11.5 + '@swc/core-linux-arm64-gnu': 1.11.5 + '@swc/core-linux-arm64-musl': 1.11.5 + '@swc/core-linux-x64-gnu': 1.11.5 + '@swc/core-linux-x64-musl': 1.11.5 + '@swc/core-win32-arm64-msvc': 1.11.5 + '@swc/core-win32-ia32-msvc': 1.11.5 + '@swc/core-win32-x64-msvc': 1.11.5 '@swc/helpers': 0.5.15 '@swc/counter@0.1.3': {} @@ -8249,7 +7969,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@swc/types@0.1.17': + '@swc/types@0.1.19': dependencies: '@swc/counter': 0.1.3 @@ -8303,7 +8023,7 @@ snapshots: '@types/conventional-commits-parser@5.0.1': dependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.22 '@types/eslint-scope@3.7.7': dependencies: @@ -8319,7 +8039,7 @@ snapshots: '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.22 '@types/http-cache-semantics@4.0.4': {} @@ -8342,7 +8062,7 @@ snapshots: '@types/lodash@4.17.13': {} - '@types/node@20.17.17': + '@types/node@20.17.22': dependencies: undici-types: 6.19.8 @@ -8358,15 +8078,15 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.16.0(@typescript-eslint/parser@8.23.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.16.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.23.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) '@typescript-eslint/scope-manager': 8.16.0 - '@typescript-eslint/type-utils': 8.16.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.23.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/type-utils': 8.16.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) '@typescript-eslint/visitor-keys': 8.16.0 - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.21.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -8376,15 +8096,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.23.0(@typescript-eslint/parser@8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.25.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.23.0 - '@typescript-eslint/type-utils': 8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.23.0 - eslint: 9.20.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.25.0 + '@typescript-eslint/type-utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.25.0 + eslint: 9.21.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -8393,46 +8113,34 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.23.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.5.4)': + '@typescript-eslint/parser@8.25.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.5.4)': dependencies: - '@typescript-eslint/scope-manager': 8.23.0 - '@typescript-eslint/types': 8.23.0 - '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.23.0 + '@typescript-eslint/scope-manager': 8.25.0 + '@typescript-eslint/types': 8.25.0 + '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.25.0 debug: 4.4.0 eslint: 9.15.0(jiti@2.4.2) typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.23.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/scope-manager': 8.23.0 - '@typescript-eslint/types': 8.23.0 - '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.23.0 + '@typescript-eslint/scope-manager': 8.25.0 + '@typescript-eslint/types': 8.25.0 + '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.25.0 debug: 4.4.0 - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.21.0(jiti@2.4.2) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/rule-tester@8.25.0(patch_hash=5of34inynujuq2pxgvttl34roe)(eslint@9.15.0(jiti@2.4.2))(typescript@5.5.4)': dependencies: - '@typescript-eslint/scope-manager': 8.23.0 - '@typescript-eslint/types': 8.23.0 - '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.23.0 - debug: 4.4.0 - eslint: 9.20.0(jiti@2.4.2) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/rule-tester@8.23.0(patch_hash=5of34inynujuq2pxgvttl34roe)(eslint@9.15.0(jiti@2.4.2))(typescript@5.5.4)': - dependencies: - '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.23.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.5.4) + '@typescript-eslint/utils': 8.25.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.5.4) ajv: 6.12.6 eslint: 9.15.0(jiti@2.4.2) json-stable-stringify-without-jsonify: 1.0.1 @@ -8442,12 +8150,12 @@ snapshots: - supports-color - typescript - '@typescript-eslint/rule-tester@8.23.0(patch_hash=5of34inynujuq2pxgvttl34roe)(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/rule-tester@8.25.0(patch_hash=5of34inynujuq2pxgvttl34roe)(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) ajv: 6.12.6 - eslint: 9.20.0(jiti@2.4.2) + eslint: 9.21.0(jiti@2.4.2) json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 semver: 7.7.1 @@ -8460,40 +8168,29 @@ snapshots: '@typescript-eslint/types': 8.16.0 '@typescript-eslint/visitor-keys': 8.16.0 - '@typescript-eslint/scope-manager@8.23.0': + '@typescript-eslint/scope-manager@8.25.0': dependencies: - '@typescript-eslint/types': 8.23.0 - '@typescript-eslint/visitor-keys': 8.23.0 + '@typescript-eslint/types': 8.25.0 + '@typescript-eslint/visitor-keys': 8.25.0 - '@typescript-eslint/type-utils@8.16.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/type-utils@8.16.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: '@typescript-eslint/typescript-estree': 8.16.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.23.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) debug: 4.4.0 - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.21.0(jiti@2.4.2) ts-api-utils: 1.4.3(typescript@5.7.3) optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.20.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3)': - dependencies: - '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) - debug: 4.4.0 - eslint: 9.20.0(jiti@2.4.2) - ts-api-utils: 2.0.0(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/type-utils@8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/type-utils@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) debug: 4.4.0 - eslint: 9.20.0(jiti@2.4.2) + eslint: 9.21.0(jiti@2.4.2) ts-api-utils: 2.0.1(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: @@ -8501,9 +8198,7 @@ snapshots: '@typescript-eslint/types@8.16.0': {} - '@typescript-eslint/types@8.20.0': {} - - '@typescript-eslint/types@8.23.0': {} + '@typescript-eslint/types@8.25.0': {} '@typescript-eslint/typescript-estree@8.16.0(typescript@5.7.3)': dependencies: @@ -8520,24 +8215,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.20.0(typescript@5.7.3)': - dependencies: - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/visitor-keys': 8.20.0 - debug: 4.4.0 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.1 - ts-api-utils: 2.0.0(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@8.23.0(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@8.25.0(typescript@5.5.4)': dependencies: - '@typescript-eslint/types': 8.23.0 - '@typescript-eslint/visitor-keys': 8.23.0 + '@typescript-eslint/types': 8.25.0 + '@typescript-eslint/visitor-keys': 8.25.0 debug: 4.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -8548,10 +8229,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.23.0(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.25.0(typescript@5.7.3)': dependencies: - '@typescript-eslint/types': 8.23.0 - '@typescript-eslint/visitor-keys': 8.23.0 + '@typescript-eslint/types': 8.25.0 + '@typescript-eslint/visitor-keys': 8.25.0 debug: 4.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -8562,35 +8243,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.23.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.5.4)': + '@typescript-eslint/utils@8.25.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.5.4)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.23.0 - '@typescript-eslint/types': 8.23.0 - '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.25.0 + '@typescript-eslint/types': 8.25.0 + '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.5.4) eslint: 9.15.0(jiti@2.4.2) typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.23.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/utils@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.23.0 - '@typescript-eslint/types': 8.23.0 - '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) - eslint: 9.18.0(jiti@2.4.2) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3)': - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.23.0 - '@typescript-eslint/types': 8.23.0 - '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) - eslint: 9.20.0(jiti@2.4.2) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.25.0 + '@typescript-eslint/types': 8.25.0 + '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.7.3) + eslint: 9.21.0(jiti@2.4.2) typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -8600,14 +8270,9 @@ snapshots: '@typescript-eslint/types': 8.16.0 eslint-visitor-keys: 4.2.0 - '@typescript-eslint/visitor-keys@8.20.0': + '@typescript-eslint/visitor-keys@8.25.0': dependencies: - '@typescript-eslint/types': 8.20.0 - eslint-visitor-keys: 4.2.0 - - '@typescript-eslint/visitor-keys@8.23.0': - dependencies: - '@typescript-eslint/types': 8.23.0 + '@typescript-eslint/types': 8.25.0 eslint-visitor-keys: 4.2.0 '@verdaccio/auth@8.0.0-next-8.7': @@ -9034,11 +8699,11 @@ snapshots: '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 - babel-plugin-macros@2.8.0: + babel-plugin-macros@3.1.0: dependencies: '@babel/runtime': 7.26.0 - cosmiconfig: 6.0.0 - resolve: 1.22.8 + cosmiconfig: 7.1.0 + resolve: 1.22.10 babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.0): dependencies: @@ -9348,10 +9013,10 @@ snapshots: commander@8.3.0: {} - commitizen@4.3.1(@types/node@20.17.17)(typescript@5.7.3): + commitizen@4.3.1(@types/node@20.17.22)(typescript@5.7.3): dependencies: cachedir: 2.3.0 - cz-conventional-changelog: 3.3.0(@types/node@20.17.17)(typescript@5.7.3) + cz-conventional-changelog: 3.3.0(@types/node@20.17.22)(typescript@5.7.3) dedent: 0.7.0 detect-indent: 6.1.0 find-node-modules: 2.1.3 @@ -9437,22 +9102,22 @@ snapshots: object-assign: 4.1.1 vary: 1.1.2 - cosmiconfig-typescript-loader@5.1.0(@types/node@20.17.17)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3): + cosmiconfig-typescript-loader@5.1.0(@types/node@20.17.22)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3): dependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.22 cosmiconfig: 9.0.0(typescript@5.7.3) jiti: 1.21.6 typescript: 5.7.3 optional: true - cosmiconfig-typescript-loader@6.1.0(@types/node@20.17.17)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3): + cosmiconfig-typescript-loader@6.1.0(@types/node@20.17.22)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3): dependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.22 cosmiconfig: 9.0.0(typescript@5.7.3) jiti: 2.4.2 typescript: 5.7.3 - cosmiconfig@6.0.0: + cosmiconfig@7.1.0: dependencies: '@types/parse-json': 4.0.2 import-fresh: 3.3.0 @@ -9469,13 +9134,13 @@ snapshots: optionalDependencies: typescript: 5.7.3 - create-jest@29.7.0(@types/node@20.17.17)(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3)): + create-jest@29.7.0(@types/node@20.17.22)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.17.17)(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3)) + jest-config: 29.7.0(@types/node@20.17.22)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -9492,16 +9157,16 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - cz-conventional-changelog@3.3.0(@types/node@20.17.17)(typescript@5.7.3): + cz-conventional-changelog@3.3.0(@types/node@20.17.22)(typescript@5.7.3): dependencies: chalk: 2.4.2 - commitizen: 4.3.1(@types/node@20.17.17)(typescript@5.7.3) + commitizen: 4.3.1(@types/node@20.17.22)(typescript@5.7.3) conventional-commit-types: 3.0.0 lodash.map: 4.6.0 longest: 2.0.1 word-wrap: 1.2.5 optionalDependencies: - '@commitlint/load': 19.5.0(@types/node@20.17.17)(typescript@5.7.3) + '@commitlint/load': 19.5.0(@types/node@20.17.22)(typescript@5.7.3) transitivePeerDependencies: - '@types/node' - typescript @@ -9536,7 +9201,9 @@ snapshots: dedent@0.7.0: {} - dedent@1.5.3: {} + dedent@1.5.3(babel-plugin-macros@3.1.0): + optionalDependencies: + babel-plugin-macros: 3.1.0 deep-is@0.1.4: {} @@ -9660,33 +9327,6 @@ snapshots: es-errors@1.3.0: {} - esbuild@0.23.1: - optionalDependencies: - '@esbuild/aix-ppc64': 0.23.1 - '@esbuild/android-arm': 0.23.1 - '@esbuild/android-arm64': 0.23.1 - '@esbuild/android-x64': 0.23.1 - '@esbuild/darwin-arm64': 0.23.1 - '@esbuild/darwin-x64': 0.23.1 - '@esbuild/freebsd-arm64': 0.23.1 - '@esbuild/freebsd-x64': 0.23.1 - '@esbuild/linux-arm': 0.23.1 - '@esbuild/linux-arm64': 0.23.1 - '@esbuild/linux-ia32': 0.23.1 - '@esbuild/linux-loong64': 0.23.1 - '@esbuild/linux-mips64el': 0.23.1 - '@esbuild/linux-ppc64': 0.23.1 - '@esbuild/linux-riscv64': 0.23.1 - '@esbuild/linux-s390x': 0.23.1 - '@esbuild/linux-x64': 0.23.1 - '@esbuild/netbsd-x64': 0.23.1 - '@esbuild/openbsd-arm64': 0.23.1 - '@esbuild/openbsd-x64': 0.23.1 - '@esbuild/sunos-x64': 0.23.1 - '@esbuild/win32-arm64': 0.23.1 - '@esbuild/win32-ia32': 0.23.1 - '@esbuild/win32-x64': 0.23.1 - esbuild@0.25.0: optionalDependencies: '@esbuild/aix-ppc64': 0.25.0 @@ -9725,9 +9365,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.0.1(eslint@9.20.0(jiti@2.4.2)): + eslint-config-prettier@10.0.2(eslint@9.21.0(jiti@2.4.2)): dependencies: - eslint: 9.20.0(jiti@2.4.2) + eslint: 9.21.0(jiti@2.4.2) eslint-scope@8.2.0: dependencies: @@ -9779,59 +9419,18 @@ snapshots: transitivePeerDependencies: - supports-color - eslint@9.18.0(jiti@2.4.2): - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) - '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.19.0 - '@eslint/core': 0.10.0 - '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.18.0 - '@eslint/plugin-kit': 0.2.5 - '@humanfs/node': 0.16.6 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.1 - '@types/estree': 1.0.6 - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.0 - escape-string-regexp: 4.0.0 - eslint-scope: 8.2.0 - eslint-visitor-keys: 4.2.0 - espree: 10.3.0 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - optionalDependencies: - jiti: 2.4.2 - transitivePeerDependencies: - - supports-color - - eslint@9.20.0(jiti@2.4.2): + eslint@9.21.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.19.0 - '@eslint/core': 0.11.0 - '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.20.0 - '@eslint/plugin-kit': 0.2.5 + '@eslint/config-array': 0.19.2 + '@eslint/core': 0.12.0 + '@eslint/eslintrc': 3.3.0 + '@eslint/js': 9.21.0 + '@eslint/plugin-kit': 0.2.7 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.1 + '@humanwhocodes/retry': 0.4.2 '@types/estree': 1.0.6 '@types/json-schema': 7.0.15 ajv: 6.12.6 @@ -10192,7 +9791,7 @@ snapshots: '@sec-ant/readable-stream': 0.4.1 is-stream: 4.0.1 - get-tsconfig@4.8.1: + get-tsconfig@4.10.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -10463,10 +10062,6 @@ snapshots: is-arrayish@0.2.1: {} - is-core-module@2.15.1: - dependencies: - hasown: 2.0.2 - is-core-module@2.16.1: dependencies: hasown: 2.0.2 @@ -10595,16 +10190,16 @@ snapshots: jest-util: 29.7.0 p-limit: 3.1.0 - jest-circus@29.7.0: + jest-circus@29.7.0(babel-plugin-macros@3.1.0): dependencies: '@jest/environment': 29.7.0 '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.17 + '@types/node': 20.17.22 chalk: 4.1.2 co: 4.6.0 - dedent: 1.5.3 + dedent: 1.5.3(babel-plugin-macros@3.1.0) is-generator-fn: 2.1.0 jest-each: 29.7.0 jest-matcher-utils: 29.7.0 @@ -10621,16 +10216,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@20.17.17)(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3)): + jest-cli@29.7.0(@types/node@20.17.22)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.17.17)(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3)) + create-jest: 29.7.0(@types/node@20.17.22)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.17.17)(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3)) + jest-config: 29.7.0(@types/node@20.17.22)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -10640,7 +10235,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@20.17.17)(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3)): + jest-config@29.7.0(@types/node@20.17.22)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3)): dependencies: '@babel/core': 7.26.0 '@jest/test-sequencer': 29.7.0 @@ -10651,7 +10246,7 @@ snapshots: deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.11 - jest-circus: 29.7.0 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) jest-environment-node: 29.7.0 jest-get-type: 29.6.3 jest-regex-util: 29.6.3 @@ -10665,8 +10260,8 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 20.17.17 - ts-node: 10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3) + '@types/node': 20.17.22 + ts-node: 10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -10695,7 +10290,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.17 + '@types/node': 20.17.22 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -10705,7 +10300,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.17.17 + '@types/node': 20.17.22 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -10744,7 +10339,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.17.17 + '@types/node': 20.17.22 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -10768,7 +10363,7 @@ snapshots: jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) jest-util: 29.7.0 jest-validate: 29.7.0 - resolve: 1.22.8 + resolve: 1.22.10 resolve.exports: 2.0.3 slash: 3.0.0 @@ -10779,7 +10374,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.17 + '@types/node': 20.17.22 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -10807,7 +10402,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.17 + '@types/node': 20.17.22 chalk: 4.1.2 cjs-module-lexer: 1.4.1 collect-v8-coverage: 1.0.2 @@ -10853,7 +10448,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.17.17 + '@types/node': 20.17.22 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -10872,7 +10467,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.17 + '@types/node': 20.17.22 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -10881,17 +10476,17 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 20.17.17 + '@types/node': 20.17.22 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@20.17.17)(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3)): + jest@29.7.0(@types/node@20.17.22)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.17.17)(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3)) + jest-cli: 29.7.0(@types/node@20.17.22)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -10935,7 +10530,7 @@ snapshots: js-yaml: 4.1.0 lodash: 4.17.21 minimist: 1.2.8 - prettier: 3.5.0 + prettier: 3.5.2 tinyglobby: 0.2.10 json-schema-traverse@0.4.1: {} @@ -11388,7 +10983,7 @@ snapshots: semver: 7.7.1 validate-npm-package-name: 5.0.1 - npm-package-arg@12.0.1: + npm-package-arg@12.0.2: dependencies: hosted-git-info: 8.0.2 proc-log: 5.0.0 @@ -11403,7 +10998,7 @@ snapshots: dependencies: npm-install-checks: 7.1.1 npm-normalize-package-bin: 4.0.0 - npm-package-arg: 12.0.1 + npm-package-arg: 12.0.2 semver: 7.7.1 npm-registry-fetch@18.0.2: @@ -11414,7 +11009,7 @@ snapshots: minipass: 7.1.2 minipass-fetch: 4.0.0 minizlib: 3.0.1 - npm-package-arg: 12.0.1 + npm-package-arg: 12.0.2 proc-log: 5.0.0 transitivePeerDependencies: - supports-color @@ -11427,7 +11022,7 @@ snapshots: dependencies: path-key: 4.0.0 - nx@20.3.3(@swc-node/register@1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3))(@swc/core@1.10.15(@swc/helpers@0.5.15)): + nx@20.4.6(@swc-node/register@1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3))(@swc/core@1.11.5(@swc/helpers@0.5.15)): dependencies: '@napi-rs/wasm-runtime': 0.2.4 '@yarnpkg/lockfile': 1.1.0 @@ -11464,18 +11059,18 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@nx/nx-darwin-arm64': 20.3.3 - '@nx/nx-darwin-x64': 20.3.3 - '@nx/nx-freebsd-x64': 20.3.3 - '@nx/nx-linux-arm-gnueabihf': 20.3.3 - '@nx/nx-linux-arm64-gnu': 20.3.3 - '@nx/nx-linux-arm64-musl': 20.3.3 - '@nx/nx-linux-x64-gnu': 20.3.3 - '@nx/nx-linux-x64-musl': 20.3.3 - '@nx/nx-win32-arm64-msvc': 20.3.3 - '@nx/nx-win32-x64-msvc': 20.3.3 - '@swc-node/register': 1.10.9(@swc/core@1.10.15(@swc/helpers@0.5.15))(@swc/types@0.1.17)(typescript@5.7.3) - '@swc/core': 1.10.15(@swc/helpers@0.5.15) + '@nx/nx-darwin-arm64': 20.4.6 + '@nx/nx-darwin-x64': 20.4.6 + '@nx/nx-freebsd-x64': 20.4.6 + '@nx/nx-linux-arm-gnueabihf': 20.4.6 + '@nx/nx-linux-arm64-gnu': 20.4.6 + '@nx/nx-linux-arm64-musl': 20.4.6 + '@nx/nx-linux-x64-gnu': 20.4.6 + '@nx/nx-linux-x64-musl': 20.4.6 + '@nx/nx-win32-arm64-msvc': 20.4.6 + '@nx/nx-win32-x64-msvc': 20.4.6 + '@swc-node/register': 1.10.9(@swc/core@1.11.5(@swc/helpers@0.5.15))(@swc/types@0.1.19)(typescript@5.7.3) + '@swc/core': 1.11.5(@swc/helpers@0.5.15) transitivePeerDependencies: - debug @@ -11607,7 +11202,7 @@ snapshots: cacache: 19.0.1 fs-minipass: 3.0.3 minipass: 7.1.2 - npm-package-arg: 12.0.1 + npm-package-arg: 12.0.2 npm-packlist: 9.0.0 npm-pick-manifest: 10.0.0 npm-registry-fetch: 18.0.2 @@ -11721,7 +11316,7 @@ snapshots: prettier@2.8.8: {} - prettier@3.5.0: {} + prettier@3.5.2: {} pretty-format@29.7.0: dependencies: @@ -11886,12 +11481,6 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - resolve@1.22.8: - dependencies: - is-core-module: 2.15.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - responselike@3.0.0: dependencies: lowercase-keys: 3.0.0 @@ -12314,10 +11903,6 @@ snapshots: dependencies: typescript: 5.7.3 - ts-api-utils@2.0.0(typescript@5.7.3): - dependencies: - typescript: 5.7.3 - ts-api-utils@2.0.1(typescript@5.5.4): dependencies: typescript: 5.5.4 @@ -12326,12 +11911,12 @@ snapshots: dependencies: typescript: 5.7.3 - ts-jest@29.2.4(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.25.0)(jest@29.7.0(@types/node@20.17.17)(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3)))(typescript@5.7.3): + ts-jest@29.2.4(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(esbuild@0.25.0)(jest@29.7.0(@types/node@20.17.22)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3)))(typescript@5.7.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.17.17)(ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3)) + jest: 29.7.0(@types/node@20.17.22)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -12346,34 +11931,14 @@ snapshots: babel-jest: 29.7.0(@babel/core@7.26.0) esbuild: 0.25.0 - ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.6.3): + ts-node@10.9.1(@swc/core@1.11.5(@swc/helpers@0.5.15))(@types/node@20.17.22)(typescript@5.7.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.17.17 - acorn: 8.14.0 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.6.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.10.15(@swc/helpers@0.5.15) - - ts-node@10.9.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.17.17 + '@types/node': 20.17.22 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -12384,7 +11949,7 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.10.15(@swc/helpers@0.5.15) + '@swc/core': 1.11.5(@swc/helpers@0.5.15) tsconfig-paths@4.2.0: dependencies: @@ -12394,10 +11959,10 @@ snapshots: tslib@2.8.1: {} - tsx@4.19.2: + tsx@4.19.3: dependencies: - esbuild: 0.23.1 - get-tsconfig: 4.8.1 + esbuild: 0.25.0 + get-tsconfig: 4.10.0 optionalDependencies: fsevents: 2.3.3 @@ -12430,31 +11995,29 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 - typescript-eslint@8.16.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3): + typescript-eslint@8.16.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.16.0(@typescript-eslint/parser@8.23.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/parser': 8.23.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.23.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.18.0(jiti@2.4.2) + '@typescript-eslint/eslint-plugin': 8.16.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.21.0(jiti@2.4.2) optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: - supports-color - typescript-eslint@8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3): + typescript-eslint@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.23.0(@typescript-eslint/parser@8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/parser': 8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.23.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.20.0(jiti@2.4.2) + '@typescript-eslint/eslint-plugin': 8.25.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.21.0(jiti@2.4.2) typescript: 5.7.3 transitivePeerDependencies: - supports-color typescript@5.5.4: {} - typescript@5.6.3: {} - typescript@5.7.3: {} uglify-js@3.19.3: diff --git a/tools/scripts/generate-configs.ts b/tools/scripts/generate-configs.ts index d7a400f78..18084876f 100644 --- a/tools/scripts/generate-configs.ts +++ b/tools/scripts/generate-configs.ts @@ -1,7 +1,7 @@ import type { TSESLint } from '@typescript-eslint/utils'; -import chalk from 'chalk'; import fs, { readdirSync } from 'node:fs'; import path from 'node:path'; +import pc from 'picocolors'; import { format, resolveConfig } from 'prettier'; // Import directly from source to ensure the latest rules are included @@ -102,11 +102,9 @@ function reducer( : recommendation; console.log( - `${chalk.dim(ruleNamePrefix)}${key.padEnd(MAX_RULE_NAME_LENGTH)}`, + `${pc.dim(ruleNamePrefix)}${key.padEnd(MAX_RULE_NAME_LENGTH)}`, '=', - usedSetting === 'error' - ? chalk.red(usedSetting) - : chalk.yellow(usedSetting), + usedSetting === 'error' ? pc.red(usedSetting) : pc.yellow(usedSetting), ); config[ruleName] = usedSetting; diff --git a/tools/scripts/generate-rule-docs.ts b/tools/scripts/generate-rule-docs.ts index caac4c9af..a49b0ca2d 100644 --- a/tools/scripts/generate-rule-docs.ts +++ b/tools/scripts/generate-rule-docs.ts @@ -67,20 +67,25 @@ const testDirs = readdirSync(testDirsDir); cb: (...data) => { const [schemaNode, , , , , , keyIndex] = data; - let defaultValue = null; + let defaultValue = undefined; + let hasDefaultValue = false; if (typeof schemaNode.default !== 'undefined') { defaultValue = schemaNode.default; + hasDefaultValue = true; } else if (defaultOptions?.length) { for (const defaultOption of defaultOptions) { - const defaultValueForNode = defaultOption[keyIndex as string]; - if (defaultValueForNode) { - defaultValue = defaultValueForNode; + if ( + typeof defaultOption === 'object' && + (keyIndex as string) in defaultOption + ) { + defaultValue = defaultOption[keyIndex as string]; + hasDefaultValue = true; } } } - if (defaultValue) { + if (hasDefaultValue) { if (schemaNode.description) { schemaNode.description += '\n\n'; } else { diff --git a/tools/scripts/update-native-event-names.ts b/tools/scripts/update-native-event-names.ts new file mode 100644 index 000000000..de9901b49 --- /dev/null +++ b/tools/scripts/update-native-event-names.ts @@ -0,0 +1,94 @@ +import bcd from '@mdn/browser-compat-data'; +import { writeFileSync } from 'node:fs'; +import path from 'node:path'; +import pc from 'picocolors'; + +run().catch((ex) => { + console.error(pc.red(ex)); + process.exit(1); +}); + +async function run(): Promise { + const names = getEventNamesFromBrowserCompatData(); + const fileName = path.resolve( + __dirname, + '../../packages/utils/src/eslint-plugin/get-native-event-names.ts', + ); + + process.stdout.write(pc.cyan(`Updating ${path.basename(fileName)}...\n`)); + + writeFileSync( + fileName, + ` +/** + * DO NOT EDIT THIS FILE + * + * In order to update this config, please run \`pnpm update-native-event-names\`. + */ + +let nativeEventNames: ReadonlySet | null = null; + +/** + * Check MDN events page for details https://developer.mozilla.org/en-US/docs/Web/Events + * + * Event names sourced from @mdn/browser-compat-data@${bcd.__meta.version} + */ +export function getNativeEventNames(): ReadonlySet { + return ( + nativeEventNames ?? + (nativeEventNames = new Set([${[...names] + .sort((a, b) => a.localeCompare(b)) + .map((x) => `\n '${x}',`) + .join('')} + ])) + ); +} +`.trimStart(), + ); + + process.stdout.write(pc.green('Event names updated successfully.\n')); +} + +function getEventNamesFromBrowserCompatData(): string[] { + const eventNames = new Set(); + + process.stdout.write(pc.cyan(`Finding native event names...\n`)); + + for (const name of Object.keys(bcd.api).sort((a, b) => a.localeCompare(b))) { + if ( + name === 'Document' || + name === 'Node' || + name === 'Window' || + name.endsWith('Element') + ) { + let hasEvents = false; + const data = bcd.api[name]; + for (const key of Object.keys(data)) { + const match = /^(\w+)_event$/.exec(key); + + if (match) { + if (!hasEvents) { + hasEvents = true; + process.stdout.write(` ${pc.yellow(pc.dim(name))}\n`); + } + + const eventName = match[1]; + eventNames.add(eventName); + + const status = data[key].__compat?.status; + const statusType = status?.deprecated + ? 'deprecated' + : status?.experimental + ? 'experimental' + : undefined; + + process.stdout.write( + ` ${pc.white(eventName)}${statusType !== undefined ? ` ${pc.gray(`(${statusType})`)}` : ''}\n`, + ); + } + } + } + } + + return [...eventNames]; +}