diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 000000000000..ed3d277f03cc --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,3 @@ +# Critical workflow files require approval from core maintainers +.github/workflows/release.yml @JamesHenry @bradzacher @JoshuaKGoldberg +.github/workflows/ci.yml @JamesHenry @bradzacher @JoshuaKGoldberg diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bc7c9d47147e..d4ec153d22dd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,3 +1,4 @@ +# NOTE: The name of this workflow is significant - it is used as the identifier for the workflow_run trigger in the release workflow name: CI on: @@ -289,38 +290,3 @@ jobs: files: coverage/**/lcov.info flags: unittest name: codecov - - publish_canary_version: - name: Publish the latest code as a canary version - environment: ${{ (github.repository == 'typescript-eslint/typescript-eslint' && github.ref == 'refs/heads/main') && 'main' || '' }} # Have to specify per job - runs-on: ubuntu-latest - permissions: - id-token: write - needs: [integration_tests, lint_with_build, lint_without_build, unit_tests] - if: github.repository == 'typescript-eslint/typescript-eslint' && github.ref == 'refs/heads/main' - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 # we need the tags to be available - - - name: Install - uses: ./.github/actions/prepare-install - with: - node-version: ${{ env.PRIMARY_NODE_VERSION }} - registry-url: 'https://registry.npmjs.org' - - - name: Build - uses: ./.github/actions/prepare-build - - - name: Figure out and apply the next canary version - run: npx tsx tools/release/apply-canary-version.mts - - - name: Publish all packages to npm with the canary tag - # NOTE: this needs to be npx, rather than yarn, to make sure the authenticated npm registry is used - run: npx nx release publish --tag canary --verbose - env: - NX_CLOUD_DISTRIBUTED_EXECUTION: false - # This secret is only accessible on the GitHub environment "main" - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - NPM_CONFIG_PROVENANCE: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000000..0a23b7d8df4a --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,283 @@ +name: Release + +on: + # Triggered by completed CI runs (we check for successful status in the validate job) on main branch for canary releases + workflow_run: + workflows: ['CI'] + types: [completed] + branches: [main] + + schedule: + # Github actions do not currently support specifying a timezone. + # Run on Mondays at 5pm UTC (1pm Eastern (Summer) Time) + - cron: '0 17 * * 1' + + # Manual trigger for out of band releases and next major version prereleases + workflow_dispatch: + inputs: + release_type: + description: 'Type of release to perform' + required: true + type: choice + options: + - canary + - stable + default: 'canary' + override_major_version: + description: 'Override major version for canary releases' + required: false + type: string + dry_run: + description: 'Perform a dry run' + required: true + type: boolean + default: true + first_release: + description: 'Whether one or more packages are being released for the first time' + required: false + type: boolean + default: false + force_release_without_changes: + description: 'Whether to do a release regardless of if there have been changes' + required: false + type: boolean + default: false + +# Ensure only one release workflow runs at a time +concurrency: + group: release + cancel-in-progress: false + +env: + PRIMARY_NODE_VERSION: 20 + +# Minimal permissions by default +permissions: + contents: read + +jobs: + # Validation job to ensure secure inputs and determine release type + validate: + name: Validate Release Parameters + runs-on: ubuntu-latest + # Only run on the official repository to avoid wasted compute and unnecessary errors on forks (also an initial albeit weak first layer of protection against unauthorized releases) + if: github.repository == 'typescript-eslint/typescript-eslint' + outputs: + should_release: ${{ steps.validate.outputs.should_release }} + release_type: ${{ steps.validate.outputs.release_type }} + is_canary: ${{ steps.validate.outputs.is_canary }} + is_stable: ${{ steps.validate.outputs.is_stable }} + dry_run: ${{ steps.validate.outputs.dry_run }} + force_release_without_changes: ${{ steps.validate.outputs.force_release_without_changes }} + first_release: ${{ steps.validate.outputs.first_release }} + override_major_version: ${{ steps.validate.outputs.override_major_version }} + steps: + - name: Validate inputs and determine release type + id: validate + env: + # Ensure user input is treated as data by passing them as environment variables + INPUT_RELEASE_TYPE: ${{ inputs.release_type }} + INPUT_OVERRIDE_MAJOR: ${{ inputs.override_major_version }} + INPUT_DRY_RUN: ${{ inputs.dry_run }} + INPUT_FORCE_RELEASE: ${{ inputs.force_release_without_changes }} + INPUT_FIRST_RELEASE: ${{ inputs.first_release }} + run: | + SHOULD_RELEASE="false" + + # Determine release type based on trigger + if [[ "${{ github.event_name }}" == "schedule" ]]; then + RELEASE_TYPE="stable" + SHOULD_RELEASE="true" + elif [[ "${{ github.event_name }}" == "workflow_run" ]]; then + # Only release canary if the CI workflow succeeded + if [[ "${{ github.event.workflow_run.conclusion }}" == "success" ]]; then + RELEASE_TYPE="canary" + SHOULD_RELEASE="true" + else + echo "CI workflow did not succeed, skipping canary release" + RELEASE_TYPE="canary" + SHOULD_RELEASE="false" + fi + elif [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + RELEASE_TYPE="$INPUT_RELEASE_TYPE" + SHOULD_RELEASE="true" + else + echo "::error::Unsupported trigger event: ${{ github.event_name }}" + exit 1 + fi + + # Validate release type + if [[ "$RELEASE_TYPE" != "canary" && "$RELEASE_TYPE" != "stable" ]]; then + echo "::error::Invalid release type: $RELEASE_TYPE. Must be 'canary' or 'stable'" + exit 1 + fi + + # Security: For manual triggers, only allow core maintainers to run releases + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + ALLOWED_ACTORS=("JamesHenry" "bradzacher" "JoshuaKGoldberg") + ACTOR="${{ github.actor }}" + IS_ALLOWED="false" + + for allowed in "${ALLOWED_ACTORS[@]}"; do + if [[ "$ACTOR" == "$allowed" ]]; then + IS_ALLOWED="true" + break + fi + done + + if [[ "$IS_ALLOWED" != "true" ]]; then + echo "::error::User '$ACTOR' is not authorized to trigger manual releases." + echo "::error::Only the following users can trigger manual releases: ${ALLOWED_ACTORS[*]}" + exit 1 + fi + + echo "✅ Authorized user '$ACTOR' triggering manual release" + fi + + # Set outputs + echo "should_release=$SHOULD_RELEASE" >> $GITHUB_OUTPUT + echo "release_type=$RELEASE_TYPE" >> $GITHUB_OUTPUT + echo "is_canary=$([[ "$RELEASE_TYPE" == "canary" ]] && echo "true" || echo "false")" >> $GITHUB_OUTPUT + echo "is_stable=$([[ "$RELEASE_TYPE" == "stable" ]] && echo "true" || echo "false")" >> $GITHUB_OUTPUT + + # Handle dry run for manual releases (defaults to true) + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + echo "dry_run=${INPUT_DRY_RUN:-true}" >> $GITHUB_OUTPUT + else + # Automated releases (schedule, workflow_run) are never dry runs + echo "dry_run=false" >> $GITHUB_OUTPUT + fi + + # Handle force release without changes for stable releases + if [[ "$RELEASE_TYPE" == "stable" && "${{ github.event_name }}" == "workflow_dispatch" ]]; then + echo "force_release_without_changes=${INPUT_FORCE_RELEASE:-false}" >> $GITHUB_OUTPUT + else + echo "force_release_without_changes=false" >> $GITHUB_OUTPUT + fi + + # Handle first release flag (only for manual releases) + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + echo "first_release=${INPUT_FIRST_RELEASE:-false}" >> $GITHUB_OUTPUT + else + echo "first_release=false" >> $GITHUB_OUTPUT + fi + + # Validate and handle override major version for canary releases + if [[ "$RELEASE_TYPE" == "canary" && "${{ github.event_name }}" == "workflow_dispatch" && -n "$INPUT_OVERRIDE_MAJOR" ]]; then + if [[ ! "$INPUT_OVERRIDE_MAJOR" =~ ^[0-9]+$ ]]; then + echo "::error::Invalid override major version format: $INPUT_OVERRIDE_MAJOR. Must be a positive integer." + exit 1 + fi + echo "override_major_version=$INPUT_OVERRIDE_MAJOR" >> $GITHUB_OUTPUT + else + echo "override_major_version=" >> $GITHUB_OUTPUT + fi + + echo "Validated release configuration:" + echo "- Should release: $SHOULD_RELEASE" + echo "- Release type: $RELEASE_TYPE" + echo "- Dry run: $INPUT_DRY_RUN" + echo "- Force release without changes: $INPUT_FORCE_RELEASE" + echo "- First release: $INPUT_FIRST_RELEASE" + echo "- Override major version (for canary only): $INPUT_OVERRIDE_MAJOR" + + canary_release: + name: Publish Canary Release + runs-on: ubuntu-latest + environment: npm-registry # This environment is required by the trusted publishing configuration on npm + needs: [validate] + # Only run on the official repository to avoid wasted compute and unnecessary errors on forks (also an initial albeit weak first layer of protection against unauthorized releases) + # Also ensure validation passed and we're releasing a canary version + if: github.repository == 'typescript-eslint/typescript-eslint' && needs.validate.outputs.should_release == 'true' && needs.validate.outputs.is_canary == 'true' + permissions: + contents: read # No need to write to the repository for canary releases + id-token: write # Required for trusted publishing + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + # We need the full history for version calculation + fetch-depth: 0 + + - name: Install dependencies + uses: ./.github/actions/prepare-install + with: + node-version: ${{ env.PRIMARY_NODE_VERSION }} + registry-url: 'https://registry.npmjs.org' + + # Use specific npm version required for trusted publishing + - name: Use npm 11.5.2 + run: npm install -g npm@11.5.2 + + - name: Build packages + uses: ./.github/actions/prepare-build + + - name: Calculate and apply canary version + run: yarn tsx tools/release/apply-canary-version.mts + env: + # Use the validated override major version from the validate job, if set + OVERRIDE_MAJOR_VERSION: ${{ needs.validate.outputs.override_major_version }} + + - name: Publish canary packages + run: yarn nx release publish --tag canary --verbose --dry-run=${{ needs.validate.outputs.dry_run }} --first-release=${{ needs.validate.outputs.first_release }} + env: + # Enable npm provenance + NPM_CONFIG_PROVENANCE: true + # Disable distributed execution here for predictability + NX_CLOUD_DISTRIBUTED_EXECUTION: false + + stable_release: + name: Publish Stable Release + runs-on: ubuntu-latest + environment: npm-registry # This environment is required by the trusted publishing configuration on npm + needs: [validate] + # Only run on the official repository to avoid wasted compute and unnecessary errors on forks (also an initial albeit weak first layer of protection against unauthorized releases) + # Also ensure validation passed and we're releasing a stable version + if: github.repository == 'typescript-eslint/typescript-eslint' && needs.validate.outputs.should_release == 'true' && needs.validate.outputs.is_stable == 'true' + permissions: + contents: read + id-token: write # Required for trusted publishing + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + # Need full history for changelog generation + fetch-depth: 0 + ref: main + # Check out the repo with a specific fine-grained PAT to allow pushing back to the repo + token: ${{ secrets.GH_FINE_GRAINED_PAT }} + + - name: Install dependencies + uses: ./.github/actions/prepare-install + with: + node-version: ${{ env.PRIMARY_NODE_VERSION }} + registry-url: 'https://registry.npmjs.org' + + # Use specific npm version required for trusted publishing + - name: Use npm 11.5.2 + run: npm install -g npm@11.5.2 + + - name: Build packages + uses: ./.github/actions/prepare-build + + - name: Configure git user for automated commits + run: | + git config --global user.email "typescript-eslint[bot]@users.noreply.github.com" + git config --global user.name "typescript-eslint[bot]" + + - name: Run stable release + run: yarn release --dry-run=${{ needs.validate.outputs.dry_run }} --force-release-without-changes=${{ needs.validate.outputs.force_release_without_changes }} --first-release=${{ needs.validate.outputs.first_release }} --verbose + env: + # Enable npm provenance + NPM_CONFIG_PROVENANCE: true + # Disable distributed execution here for predictability + NX_CLOUD_DISTRIBUTED_EXECUTION: false + # Use the specific fine-grained PAT to allow pushing back to the repo + GH_TOKEN: ${{ secrets.GH_FINE_GRAINED_PAT }} + + - name: Force update the website branch to match the latest release + # Only update the website branch if we're not doing a dry run + if: needs.validate.outputs.dry_run == 'false' + run: | + git branch -f website + git push -f origin website diff --git a/CHANGELOG.md b/CHANGELOG.md index 8147558a4353..1001310182fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,20 @@ +## 8.42.0 (2025-09-02) + +### 🚀 Features + +- deprecate tseslint.config() ([#11531](https://github.com/typescript-eslint/typescript-eslint/pull/11531)) + +### 🩹 Fixes + +- **deps:** update eslint monorepo to v9.33.0 ([#11482](https://github.com/typescript-eslint/typescript-eslint/pull/11482)) +- **typescript-eslint:** handle non-normalized windows paths produced by jiti ([#11546](https://github.com/typescript-eslint/typescript-eslint/pull/11546)) + +### ❤️ Thank You + +- Kirk Waiblinger @kirkwaiblinger + +You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. + ## 8.41.0 (2025-08-25) ### 🚀 Features diff --git a/docs/getting-started/Quickstart.mdx b/docs/getting-started/Quickstart.mdx index 232fe15966d5..c362a5978ffd 100644 --- a/docs/getting-started/Quickstart.mdx +++ b/docs/getting-started/Quickstart.mdx @@ -35,9 +35,10 @@ Next, create an `eslint.config.mjs` config file in the root of your project, and // @ts-check import eslint from '@eslint/js'; +import { defineConfig } from 'eslint/config'; import tseslint from 'typescript-eslint'; -export default tseslint.config( +export default defineConfig( eslint.configs.recommended, tseslint.configs.recommended, ); @@ -47,21 +48,10 @@ This code will enable our [recommended configuration](../users/Shared_Configurat #### Details -- `tseslint.config(...)` is an **_optional_** helper function — see [`typescript-eslint`'s `config(...)`](../packages/TypeScript_ESLint.mdx#config). +- `defineConfig(...)` is an optional helper function built in to current versions of ESLint. See [the ESLint configuration docs](https://eslint.org/docs/latest/use/configure/configuration-files) for more detail. - `'@eslint/js'` / `eslint.configs.recommended` turns on [eslint's recommended config](https://www.npmjs.com/package/@eslint/js). - `tseslint.configs.recommended` turns on [our recommended config](../users/Shared_Configurations.mdx#recommended). -
-Aside on ESLint's `defineConfig()` - -ESLint also provides a `defineConfig()` helper similar to `tseslint.config()`. -However, there is a types incompatibility issue that causes type errors to incorrectly be reported when mixing typescript-eslint's configs and `defineConfig()`. -For now we recommend using `tseslint.config()` for use with typescript-eslint's configs. - -See [typescript-eslint#10899](https://github.com/typescript-eslint/typescript-eslint/issues/10899) for more details. - -
-
Aside on file extensions @@ -111,7 +101,7 @@ We recommend you consider enabling the following two configs: - [`stylistic`](../users/Shared_Configurations.mdx#stylistic): additional rules that enforce consistent styling without significantly catching bugs or changing logic. ```js title="eslint.config.mjs" -export default tseslint.config( +export default defineConfig( eslint.configs.recommended, // Remove this line tseslint.configs.recommended, diff --git a/docs/getting-started/Typed_Linting.mdx b/docs/getting-started/Typed_Linting.mdx index 95f225038dd3..bc36f5589735 100644 --- a/docs/getting-started/Typed_Linting.mdx +++ b/docs/getting-started/Typed_Linting.mdx @@ -20,9 +20,10 @@ To enable typed linting, there are two small changes you need to make to your co ```js title="eslint.config.mjs" import eslint from '@eslint/js'; +import { defineConfig } from 'eslint/config'; import tseslint from 'typescript-eslint'; -export default tseslint.config( +export default defineConfig( eslint.configs.recommended, // Remove this line tseslint.configs.recommended, @@ -99,7 +100,7 @@ If you enabled the [`strict` shared config](../users/Shared_Configurations.mdx#s ```js title="eslint.config.mjs" -export default tseslint.config( +export default defineConfig( eslint.configs.recommended, // Removed lines start tseslint.configs.strict, diff --git a/docs/packages/TypeScript_ESLint.mdx b/docs/packages/TypeScript_ESLint.mdx index 9fc886d872bd..e2c283adf146 100644 --- a/docs/packages/TypeScript_ESLint.mdx +++ b/docs/packages/TypeScript_ESLint.mdx @@ -16,12 +16,12 @@ This package is the main entrypoint that you can use to consume our tooling with This package exports the following: -| Name | Description | -| --------- | -------------------------------------------------------------------------------------- | -| `config` | A utility function for creating type-safe flat configs -- see [`config(...)`](#config) | -| `configs` | [Shared ESLint (flat) configs](../users/Shared_Configurations.mdx) | -| `parser` | A re-export of [`@typescript-eslint/parser`](./Parser.mdx) | -| `plugin` | A re-export of [`@typescript-eslint/eslint-plugin`](./ESLint_Plugin.mdx) | +| Name | Description | +| --------------------- | ------------------------------------------------------------------------------------------------- | +| `config` (deprecated) | A utility function for creating type-safe flat configs -- see [`config(...)`](#config-deprecated) | +| `configs` | [Shared ESLint (flat) configs](../users/Shared_Configurations.mdx) | +| `parser` | A re-export of [`@typescript-eslint/parser`](./Parser.mdx) | +| `plugin` | A re-export of [`@typescript-eslint/eslint-plugin`](./ESLint_Plugin.mdx) | ## Installation @@ -31,15 +31,16 @@ npm i typescript-eslint ## Usage -We recommend getting started by using the `tseslint.config()` helper function in your ESLint config: +We recommend getting started by using the default ESLint setup with our shared configs. ```js title="eslint.config.mjs" // @ts-check import eslint from '@eslint/js'; +import { defineConfig } from 'eslint/config'; import tseslint from 'typescript-eslint'; -export default tseslint.config( +export default defineConfig( eslint.configs.recommended, tseslint.configs.recommended, ); @@ -47,16 +48,16 @@ export default tseslint.config( This config file exports a flat config that enables both the [core ESLint recommended config](https://www.npmjs.com/package/@eslint/js) and [our recommended config](../users/Shared_Configurations.mdx#recommended). -:::note -ESLint also provides a `defineConfig()` helper similar to `tseslint.config()`. -However, there is a types incompatibility issue that causes type errors to incorrectly be reported when mixing typescript-eslint's configs and `defineConfig()`. -For now we recommend using `tseslint.config()` for use with typescript-eslint configs. +### `config(...)` (deprecated) -See [typescript-eslint#10899](https://github.com/typescript-eslint/typescript-eslint/issues/10899) for more details. +:::danger -::: +The `config(...)` utility function was deprecated in favor of ESLint core's [`defineConfig(...)`]() in [#10935](https://github.com/typescript-eslint/typescript-eslint/issues/10935). +See [the `defineConfig` migration guide later](#migrating-to-defineconfig) for more details. + +The documentation here is preserved for historical reference and migration purposes. -### `config(...)` +::: `tseslint.config(...)` takes in any number of ESLint config objects, each of which may additionally include an `extends` array of configs to extend. `tseslint.config(...)` returns the equivalent ESLint config of applying the rest of the settings for each extension. @@ -114,7 +115,7 @@ Otherwise it _will not_ impact your ability to use our tooling. #### Flat config `extends` -The `tseslint.config()` utility function also adds handling for the `extends` property on flat config objects. +The `tseslint.config(...)` utility function also adds handling for the `extends` property on flat config objects. This allows you to more easily extend shared configs for specific file patterns whilst also overriding rules/options provided by those configs: ```js @@ -168,6 +169,79 @@ export default tseslint.config({ }); ``` +#### Migrating to `defineConfig(...)` + +The core `defineConfig(...)` helper is a nearly exact clone of `tseslint.config(...)` that was [first released in ESLint v9.22.0](https://eslint.org/blog/2025/03/eslint-v9.22.0-released/). +See [the ESLint blog post](https://eslint.org/blog/2025/03/flat-config-extends-define-config-global-ignores/#support-for-older-eslint-versions) for info on how to use `defineConfig(...)` with older versions of ESLint. + +At the time of writing there are a small number of known edge cases in which the two have different functionality. + +{/* https://github.com/prettier/prettier/issues/17816 -- prettier has trouble with the code fences in the custom elements */} + +{/* prettier-ignore */} +1. Overriding `files` in `extends`. + When `files` is provided in both a base object and an extension, `tseslint.config(...)` _overrides_ the `files` property in the extension, whereas `defineConfig(...)` semantically intersects the two provided `files` specifiers. + + + + ```ts title="eslint.config.mjs" + import tseslint from 'typescript-eslint'; + + export default tseslint.config({ + files: ['a.ts'], + extends: [ + { + files: ['b.ts'], + rules: { + 'some-rule': 'error', + }, + }, + ], + }); + + // is equivalent to + + export default { + files: ['a.ts'], + rules: { 'some-rule': 'error' }, + }; + ``` + + + + + ```ts title="eslint.config.mjs" + import { defineConfig } from 'eslint/config'; + + export default defineConfig({ + files: ['a.ts'], + extends: [ + { + files: ['b.ts'], + rules: { + 'some-rule': 'error', + }, + }, + ], + }); + + // is equivalent to + + // The base config technically ensures that 'a.ts' is still included in + // the lint run, but otherwise the config has no effect, due to the + // intersection of 'a.ts' and 'b.ts' being empty. + export default { + files: ['a.ts'], + }; + ``` + + + + +2. Type declarations (only applies to users who typecheck their eslint configs). + There are slight differences in the way types are declared between the two functions, which may cause typechecking errors when you switch from `tseslint.config(...)` to `defineConfig(...)` in some cases (see [#10899](https://github.com/typescript-eslint/typescript-eslint/issues/10899) for an example that used to impact typescript-eslint's own configs). + Type errors such as these do not indicate a runtime problem and can safely be ignored. + ### Manual usage [typescript-eslint's recommended and stylistic configurations](../users/configs) specify typescript-eslint `parser` and `plugin` options for you, so there is no need to manually provide those. @@ -181,10 +255,11 @@ You can declare our plugin and parser in your config via this package, for examp // @ts-check import eslint from '@eslint/js'; +import { defineConfig } from 'eslint/config'; import jestPlugin from 'eslint-plugin-jest'; import tseslint from 'typescript-eslint'; -export default tseslint.config({ +export default defineConfig({ plugins: { // highlight-next-line '@typescript-eslint': tseslint.plugin, @@ -226,10 +301,11 @@ This config: // @ts-check import eslint from '@eslint/js'; +import { defineConfig } from 'eslint/config'; import jestPlugin from 'eslint-plugin-jest'; import tseslint from 'typescript-eslint'; -export default tseslint.config( +export default defineConfig( { // config with just ignores is the replacement for `.eslintignore` ignores: ['**/build/**', '**/dist/**', 'src/some/file/to/ignore.ts'], diff --git a/docs/troubleshooting/faqs/ESLint.mdx b/docs/troubleshooting/faqs/ESLint.mdx index d1a5cdf0d809..a07e16a2f798 100644 --- a/docs/troubleshooting/faqs/ESLint.mdx +++ b/docs/troubleshooting/faqs/ESLint.mdx @@ -49,9 +49,9 @@ Note, that for a mixed project including JavaScript and TypeScript, the `no-unde ```js title="eslint.config.mjs" -import tseslint from 'typescript-eslint'; +import { defineConfig } from 'eslint/config'; -export default tseslint.config( +export default defineConfig( // ... the rest of your config ... { files: ['**/*.{ts,tsx,mts,cts}'], diff --git a/docs/troubleshooting/faqs/Frameworks.mdx b/docs/troubleshooting/faqs/Frameworks.mdx index fc0e559b56fa..f80be6a84296 100644 --- a/docs/troubleshooting/faqs/Frameworks.mdx +++ b/docs/troubleshooting/faqs/Frameworks.mdx @@ -19,7 +19,7 @@ See [Changes to `extraFileExtensions` with `projectService`](../typed-linting/Pe ```js title="eslint.config.mjs" -export default tseslint.config( +export default defineConfig( // ... the rest of your config ... { languageOptions: { @@ -61,10 +61,11 @@ If you are running into issues parsing .vue files, it might be because parsers l ```js title="eslint.config.mjs" import tseslint from 'typescript-eslint'; +import { defineConfig } from 'eslint/config'; // Add this line import vueParser from 'vue-eslint-parser'; -export default tseslint.config( +export default defineConfig( // ... the rest of your config ... { languageOptions: { diff --git a/docs/troubleshooting/faqs/General.mdx b/docs/troubleshooting/faqs/General.mdx index 53b752ab9b80..aa04254f59b9 100644 --- a/docs/troubleshooting/faqs/General.mdx +++ b/docs/troubleshooting/faqs/General.mdx @@ -36,7 +36,7 @@ Some examples ```js title="eslint.config.mjs" -export default tseslint.config( +export default defineConfig( // ... the rest of your config ... { rules: { @@ -242,9 +242,10 @@ For example, the following config enables only the recommended config's type-che {/* prettier-ignore */} ```js title="eslint.config.mjs" import eslint from '@eslint/js'; +import { defineConfig } from 'eslint/config'; import tseslint from 'typescript-eslint'; -export default tseslint.config( +export default defineConfig( tseslint.configs.recommendedTypeCheckedOnly, { languageOptions: { diff --git a/docs/troubleshooting/typed-linting/Monorepos.mdx b/docs/troubleshooting/typed-linting/Monorepos.mdx index 85cc6ef264db..2364b9defe24 100644 --- a/docs/troubleshooting/typed-linting/Monorepos.mdx +++ b/docs/troubleshooting/typed-linting/Monorepos.mdx @@ -56,7 +56,7 @@ For each file being linted, the first matching project path will be used as its ```js title="eslint.config.mjs" -export default tseslint.config( +export default defineConfig( eslint.configs.recommended, tseslint.configs.recommendedTypeChecked, { @@ -108,7 +108,7 @@ Instead of globs that use `**` to recursively check all folders, prefer paths th ```js title="eslint.config.mjs" -export default tseslint.config( +export default defineConfig( eslint.configs.recommended, tseslint.configs.recommendedTypeChecked, { diff --git a/docs/troubleshooting/typed-linting/Performance.mdx b/docs/troubleshooting/typed-linting/Performance.mdx index 29775150a6d6..66b9e2bfbe13 100644 --- a/docs/troubleshooting/typed-linting/Performance.mdx +++ b/docs/troubleshooting/typed-linting/Performance.mdx @@ -180,7 +180,7 @@ Instead of globs that use `**` to recursively check all folders, prefer paths th import eslint from '@eslint/js'; import tseslint from 'typescript-eslint'; -export default tseslint.config( +export default defineConfig( eslint.configs.recommended, tseslint.configs.recommendedRequiringTypeChecking, { @@ -226,7 +226,7 @@ See [Glob pattern in parser's option "project" slows down linting](https://githu ## Third-Party Plugins -### `@stylistic/ts/indent` and other stylistic rules rules +### `@stylistic/ts/indent` and other stylistic rules The [`@stylisic/ts/indent` rule](https://eslint.style/rules/ts/indent#ts-indent) helps ensure your codebase follows a consistent indentation pattern. However this involves a _lot_ of computations across every single token in a file. diff --git a/docs/troubleshooting/typed-linting/index.mdx b/docs/troubleshooting/typed-linting/index.mdx index 6681b1069b5d..5b76f5c53ad3 100644 --- a/docs/troubleshooting/typed-linting/index.mdx +++ b/docs/troubleshooting/typed-linting/index.mdx @@ -30,9 +30,10 @@ For example, to disable type-checked linting on all `.js` files: ```js title="eslint.config.mjs" +import defineConfig from 'eslint/config'; import tseslint from 'typescript-eslint'; -export default tseslint.config( +export default defineConfig( // ... the rest of your config ... { files: ['**/*.js'], @@ -69,7 +70,7 @@ You can combine ESLint's [overrides](https://eslint.org/docs/latest/use/configur ```js title="eslint.config.mjs" -export default tseslint.config( +export default defineConfig( eslint.configs.recommended, tseslint.configs.recommendedTypeChecked, tseslint.configs.stylisticTypeChecked, @@ -297,7 +298,7 @@ For example, if you use a specific `tsconfig.eslint.json` for linting, you'd spe ```js title="eslint.config.mjs" -export default tseslint.config({ +export default defineConfig({ // ... languageOptions: { parserOptions: { diff --git a/docs/users/Shared_Configurations.mdx b/docs/users/Shared_Configurations.mdx index e77d68bcf6a2..ea4c554e37af 100644 --- a/docs/users/Shared_Configurations.mdx +++ b/docs/users/Shared_Configurations.mdx @@ -21,9 +21,10 @@ See [Getting Started > Quickstart](../getting-started/Quickstart.mdx) first to s // @ts-check import eslint from '@eslint/js'; +import { defineConfig } from 'eslint/config'; import tseslint from 'typescript-eslint'; -export default tseslint.config( +export default defineConfig( eslint.configs.recommended, tseslint.configs.recommended, ); @@ -37,7 +38,7 @@ If your project does not enable [typed linting](../getting-started/Typed_Linting ```js title="eslint.config.mjs" -export default tseslint.config( +export default defineConfig( eslint.configs.recommended, tseslint.configs.recommended, tseslint.configs.stylistic, @@ -70,7 +71,7 @@ If your project enables [typed linting](../getting-started/Typed_Linting.mdx), w ```js title="eslint.config.mjs" -export default tseslint.config( +export default defineConfig( eslint.configs.recommended, tseslint.configs.recommendedTypeChecked, tseslint.configs.stylisticTypeChecked, @@ -127,7 +128,7 @@ These rules are those whose reports are almost always for a bad practice and/or {/* prettier-ignore */} ```js title="eslint.config.mjs" -export default tseslint.config( +export default defineConfig( tseslint.configs.recommended, ); ``` @@ -156,7 +157,7 @@ Rules newly added in this configuration are similarly useful to those in `recomm {/* prettier-ignore */} ```js title="eslint.config.mjs" -export default tseslint.config( +export default defineConfig( tseslint.configs.recommendedTypeChecked, ); ``` @@ -185,7 +186,7 @@ Rules added in `strict` are more opinionated than recommended rules and might no {/* prettier-ignore */} ```js title="eslint.config.mjs" -export default tseslint.config( +export default defineConfig( tseslint.configs.strict, ); ``` @@ -224,7 +225,7 @@ Rules newly added in this configuration are similarly useful (and opinionated) t {/* prettier-ignore */} ```js title="eslint.config.mjs" -export default tseslint.config( +export default defineConfig( tseslint.configs.strictTypeChecked, ); ``` @@ -263,7 +264,7 @@ These rules are generally opinionated about enforcing simpler code patterns. {/* prettier-ignore */} ```js title="eslint.config.mjs" -export default tseslint.config( +export default defineConfig( tseslint.configs.stylistic, ); ``` @@ -295,7 +296,7 @@ Rules newly added in this configuration are similarly opinionated to those in `s {/* prettier-ignore */} ```js title="eslint.config.mjs" -export default tseslint.config( +export default defineConfig( tseslint.configs.stylisticTypeChecked, ); ``` @@ -362,7 +363,7 @@ If you use type-aware rules from other plugins, you will need to manually disabl ```js title="eslint.config.mjs" -export default tseslint.config( +export default defineConfig( eslint.configs.recommended, tseslint.configs.recommendedTypeChecked, { @@ -426,7 +427,7 @@ Additionally, it enables rules that promote using the more modern constructs Typ ```js title="eslint.config.mjs" -export default tseslint.config( +export default defineConfig( eslint.configs.recommended, tseslint.configs.eslintRecommended, ); diff --git a/docs/users/What_About_Formatting.mdx b/docs/users/What_About_Formatting.mdx index a070fdfccfb2..ace2aa4ebd97 100644 --- a/docs/users/What_About_Formatting.mdx +++ b/docs/users/What_About_Formatting.mdx @@ -50,11 +50,12 @@ Using this config by adding it to the end of your `extends`: // @ts-check import eslint from '@eslint/js'; +import { defineConfig } from 'eslint/config'; import someOtherConfig from 'eslint-config-other-configuration-that-enables-formatting-rules'; import prettierConfig from 'eslint-config-prettier'; import tseslint from 'typescript-eslint'; -export default tseslint.config( +export default defineConfig( eslint.configs.recommended, tseslint.configs.recommended, someOtherConfig, diff --git a/eslint.config.mjs b/eslint.config.mjs index b7b469b0dd63..3e5efbf853cd 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -15,6 +15,7 @@ import reactPlugin from 'eslint-plugin-react'; import reactHooksPlugin from 'eslint-plugin-react-hooks'; import regexpPlugin from 'eslint-plugin-regexp'; import unicornPlugin from 'eslint-plugin-unicorn'; +import { defineConfig } from 'eslint/config'; import globals from 'globals'; import url from 'node:url'; import tseslint from 'typescript-eslint'; @@ -28,7 +29,7 @@ const restrictNamedDeclarations = { selector: 'ExportNamedDeclaration[declaration=null][source=null]', }; -export default tseslint.config( +export default defineConfig( // register all of the plugins up-front { name: 'register-all-plugins', @@ -43,6 +44,7 @@ export default tseslint.config( // @ts-expect-error -- https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/pull/1038 ['jsx-a11y']: jsxA11yPlugin.flatConfigs.recommended.plugins['jsx-a11y'], ['perfectionist']: perfectionistPlugin, + // @ts-expect-error -- https://github.com/vitest-dev/eslint-plugin-vitest/issues/737 ['vitest']: vitestPlugin, // https://github.com/facebook/react/issues/28313 ['react']: reactPlugin, @@ -234,7 +236,9 @@ export default tseslint.config( 'no-lonely-if': 'error', 'no-mixed-operators': 'error', 'no-process-exit': 'error', + 'no-unassigned-vars': 'error', 'no-unreachable-loop': 'error', + 'no-useless-assignment': 'error', 'no-useless-call': 'error', 'no-useless-computed-key': 'error', 'no-useless-concat': 'error', @@ -363,7 +367,6 @@ export default tseslint.config( // test file specific configuration { extends: [ - // @ts-expect-error -- uses `string` instead of `off` | `readonly` | `writable` for the globals setting. vitestPlugin.configs.env, { rules: { diff --git a/package.json b/package.json index 69ef796db02f..3edb1ac900d0 100644 --- a/package.json +++ b/package.json @@ -54,10 +54,10 @@ "@eslint/compat": "^1.2.4", "@eslint/eslintrc": "^3.2.0", "@eslint/js": "^9.26.0", - "@nx/devkit": "21.2.3", - "@nx/js": "21.2.3", - "@nx/vite": "21.2.3", - "@nx/workspace": "21.2.3", + "@nx/devkit": "21.4.1", + "@nx/js": "21.4.1", + "@nx/vite": "21.4.1", + "@nx/workspace": "21.4.1", "@swc/core": "^1.4.12", "@types/debug": "^4.1.12", "@types/eslint-plugin-jsx-a11y": "^6.10.0", @@ -93,7 +93,7 @@ "knip": "^5.41.1", "lint-staged": "^15.2.2", "markdownlint-cli": "^0.45.0", - "nx": "21.2.3", + "nx": "21.4.1", "prettier": "3.6.2", "rimraf": "^5.0.5", "semver": "7.7.0", diff --git a/packages/ast-spec/CHANGELOG.md b/packages/ast-spec/CHANGELOG.md index c53185791808..49423544d22b 100644 --- a/packages/ast-spec/CHANGELOG.md +++ b/packages/ast-spec/CHANGELOG.md @@ -1,3 +1,9 @@ +## 8.42.0 (2025-09-02) + +This was a version bump only for ast-spec to align it with other projects, there were no code changes. + +You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. + ## 8.41.0 (2025-08-25) ### 🩹 Fixes diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json index 2bab131a3111..3fa74192b434 100644 --- a/packages/ast-spec/package.json +++ b/packages/ast-spec/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/ast-spec", - "version": "8.41.0", + "version": "8.42.0", "description": "Complete specification for the TypeScript-ESTree AST", "private": true, "keywords": [ diff --git a/packages/ast-spec/src/declaration/TSEnumDeclaration/fixtures/with-member-one/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/declaration/TSEnumDeclaration/fixtures/with-member-one/snapshots/1-TSESTree-AST.shot index ddd23006e5d0..9a5146151d36 100644 --- a/packages/ast-spec/src/declaration/TSEnumDeclaration/fixtures/with-member-one/snapshots/1-TSESTree-AST.shot +++ b/packages/ast-spec/src/declaration/TSEnumDeclaration/fixtures/with-member-one/snapshots/1-TSESTree-AST.shot @@ -8,7 +8,6 @@ Program { members: [ TSEnumMember { type: "TSEnumMember", - computed: false, id: Identifier { type: "Identifier", decorators: [], diff --git a/packages/ast-spec/src/declaration/TSEnumDeclaration/fixtures/with-member-one/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/declaration/TSEnumDeclaration/fixtures/with-member-one/snapshots/5-AST-Alignment-AST.shot index 90fb8dedf846..eeec47153937 100644 --- a/packages/ast-spec/src/declaration/TSEnumDeclaration/fixtures/with-member-one/snapshots/5-AST-Alignment-AST.shot +++ b/packages/ast-spec/src/declaration/TSEnumDeclaration/fixtures/with-member-one/snapshots/5-AST-Alignment-AST.shot @@ -15,7 +15,6 @@ Snapshot Diff: - members: Array [ - TSEnumMember { - type: 'TSEnumMember', -- computed: false, - id: Identifier { - type: 'Identifier', - decorators: Array [], diff --git a/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/bigint-name/fixture.ts b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/bigint-name/fixture.ts new file mode 100644 index 000000000000..3fcd08d2bc99 --- /dev/null +++ b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/bigint-name/fixture.ts @@ -0,0 +1,3 @@ +enum Foo { + 1n = 2 +} diff --git a/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/bigint-name/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/bigint-name/snapshots/1-TSESTree-Error.shot new file mode 100644 index 000000000000..87ba241f5d40 --- /dev/null +++ b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/bigint-name/snapshots/1-TSESTree-Error.shot @@ -0,0 +1,9 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`AST Fixtures > element > TSEnumMember > _error_ > bigint-name > TSESTree - Error`] +TSError + 1 | enum Foo { +> 2 | 1n = 2 + | ^^ An enum member cannot have a numeric name. + 3 | } + 4 | diff --git a/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/bigint-name/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/bigint-name/snapshots/2-Babel-Error.shot new file mode 100644 index 000000000000..b3afe3afc96e --- /dev/null +++ b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/bigint-name/snapshots/2-Babel-Error.shot @@ -0,0 +1,10 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`AST Fixtures > element > TSEnumMember > _error_ > bigint-name > Babel - Error`] +BabelError + 1 | enum Foo { +> 2 | 1n = 2 + | ^ Unexpected token (2:2) + 3 | } + 4 | + diff --git a/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/bigint-name/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/bigint-name/snapshots/3-Alignment-Error.shot new file mode 100644 index 000000000000..083d80544d72 --- /dev/null +++ b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/bigint-name/snapshots/3-Alignment-Error.shot @@ -0,0 +1,4 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`AST Fixtures > element > TSEnumMember > _error_ > bigint-name > Error Alignment`] +Both errored diff --git a/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/computed-string-name/fixture.ts b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/computed-string-name/fixture.ts new file mode 100644 index 000000000000..2e99a8d3766b --- /dev/null +++ b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/computed-string-name/fixture.ts @@ -0,0 +1,3 @@ +enum Foo { + ["A"] = 2 +} diff --git a/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/computed-string-name/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/computed-string-name/snapshots/1-TSESTree-Error.shot new file mode 100644 index 000000000000..2079fad90f2e --- /dev/null +++ b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/computed-string-name/snapshots/1-TSESTree-Error.shot @@ -0,0 +1,9 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`AST Fixtures > element > TSEnumMember > _error_ > computed-string-name > TSESTree - Error`] +TSError + 1 | enum Foo { +> 2 | ["A"] = 2 + | ^^^^^ Computed property names are not allowed in enums. + 3 | } + 4 | diff --git a/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/computed-string-name/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/computed-string-name/snapshots/2-Babel-Error.shot new file mode 100644 index 000000000000..c68571c79318 --- /dev/null +++ b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/computed-string-name/snapshots/2-Babel-Error.shot @@ -0,0 +1,10 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`AST Fixtures > element > TSEnumMember > _error_ > computed-string-name > Babel - Error`] +BabelError + 1 | enum Foo { +> 2 | ["A"] = 2 + | ^ Unexpected token (2:2) + 3 | } + 4 | + diff --git a/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/computed-string-name/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/computed-string-name/snapshots/3-Alignment-Error.shot new file mode 100644 index 000000000000..1331cf0d18b9 --- /dev/null +++ b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/computed-string-name/snapshots/3-Alignment-Error.shot @@ -0,0 +1,4 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`AST Fixtures > element > TSEnumMember > _error_ > computed-string-name > Error Alignment`] +Both errored diff --git a/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/number-name/fixture.ts b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/number-name/fixture.ts new file mode 100644 index 000000000000..174773e65995 --- /dev/null +++ b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/number-name/fixture.ts @@ -0,0 +1,3 @@ +enum Foo { + 1 = 2 +} diff --git a/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/number-name/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/number-name/snapshots/1-TSESTree-Error.shot new file mode 100644 index 000000000000..8dfacb32e5b9 --- /dev/null +++ b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/number-name/snapshots/1-TSESTree-Error.shot @@ -0,0 +1,9 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`AST Fixtures > element > TSEnumMember > _error_ > number-name > TSESTree - Error`] +TSError + 1 | enum Foo { +> 2 | 1 = 2 + | ^ An enum member cannot have a numeric name. + 3 | } + 4 | diff --git a/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/number-name/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/number-name/snapshots/2-Babel-Error.shot new file mode 100644 index 000000000000..76b2f2b9c62e --- /dev/null +++ b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/number-name/snapshots/2-Babel-Error.shot @@ -0,0 +1,10 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`AST Fixtures > element > TSEnumMember > _error_ > number-name > Babel - Error`] +BabelError + 1 | enum Foo { +> 2 | 1 = 2 + | ^ Unexpected token (2:2) + 3 | } + 4 | + diff --git a/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/number-name/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/number-name/snapshots/3-Alignment-Error.shot new file mode 100644 index 000000000000..34e6cebc91e1 --- /dev/null +++ b/packages/ast-spec/src/element/TSEnumMember/fixtures/_error_/number-name/snapshots/3-Alignment-Error.shot @@ -0,0 +1,4 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`AST Fixtures > element > TSEnumMember > _error_ > number-name > Error Alignment`] +Both errored diff --git a/packages/ast-spec/src/element/TSEnumMember/spec.ts b/packages/ast-spec/src/element/TSEnumMember/spec.ts index a80e963ad278..a4d1b836f951 100644 --- a/packages/ast-spec/src/element/TSEnumMember/spec.ts +++ b/packages/ast-spec/src/element/TSEnumMember/spec.ts @@ -1,44 +1,15 @@ import type { AST_NODE_TYPES } from '../../ast-node-types'; import type { BaseNode } from '../../base/BaseNode'; +import type { Identifier } from '../../expression/Identifier/spec'; +import type { StringLiteral } from '../../expression/literal/StringLiteral/spec'; import type { Expression } from '../../unions/Expression'; -import type { - PropertyNameComputed, - PropertyNameNonComputed, -} from '../../unions/PropertyName'; -interface TSEnumMemberBase extends BaseNode { +export interface TSEnumMember extends BaseNode { type: AST_NODE_TYPES.TSEnumMember; - computed: boolean; - id: - | PropertyNameComputed // this should only happen in semantically invalid code (ts error 1164) - | PropertyNameNonComputed; + id: Identifier | StringLiteral; initializer: Expression | undefined; + /** + * @deprecated the enum member is always non-computed. + */ + computed: boolean; } - -/** - * this should only really happen in semantically invalid code (errors 1164 and 2452) - * - * @example - * ```ts - * // VALID: - * enum Foo { ['a'] } - * - * // INVALID: - * const x = 'a'; - * enum Foo { [x] } - * enum Bar { ['a' + 'b'] } - * ``` - */ -export interface TSEnumMemberComputedName extends TSEnumMemberBase { - computed: true; - id: PropertyNameComputed; -} - -export interface TSEnumMemberNonComputedName extends TSEnumMemberBase { - computed: false; - id: PropertyNameNonComputed; -} - -export type TSEnumMember = - | TSEnumMemberComputedName - | TSEnumMemberNonComputedName; diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-number/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-number/snapshots/1-TSESTree-Error.shot index c64aaae4a4d8..dc8d857908c8 100644 --- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-number/snapshots/1-TSESTree-Error.shot +++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-number/snapshots/1-TSESTree-Error.shot @@ -1,4 +1,10 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`AST Fixtures > legacy-fixtures > basics > _error_ > export-named-enum-computed-number > TSESTree - Error`] -NO ERROR +TSError + 2 | + 3 | export enum Foo { +> 4 | [1], + | ^^^ Computed property names are not allowed in enums. + 5 | } + 6 | diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-number/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-number/snapshots/3-Alignment-Error.shot index f5e14d5d4b27..f9ae118971e1 100644 --- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-number/snapshots/3-Alignment-Error.shot +++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-number/snapshots/3-Alignment-Error.shot @@ -1,4 +1,4 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`AST Fixtures > legacy-fixtures > basics > _error_ > export-named-enum-computed-number > Error Alignment`] -Babel errored but TSESTree didn't +Both errored diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-string/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-string/snapshots/1-TSESTree-Error.shot index 866743a38587..90ef25fd26d8 100644 --- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-string/snapshots/1-TSESTree-Error.shot +++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-string/snapshots/1-TSESTree-Error.shot @@ -1,4 +1,10 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`AST Fixtures > legacy-fixtures > basics > _error_ > export-named-enum-computed-string > TSESTree - Error`] -NO ERROR +TSError + 2 | + 3 | export enum Foo { +> 4 | ['baz'], + | ^^^^^^^ Computed property names are not allowed in enums. + 5 | } + 6 | diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-string/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-string/snapshots/3-Alignment-Error.shot index f58190aa21f3..2dc13fd3d5d2 100644 --- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-string/snapshots/3-Alignment-Error.shot +++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-string/snapshots/3-Alignment-Error.shot @@ -1,4 +1,4 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`AST Fixtures > legacy-fixtures > basics > _error_ > export-named-enum-computed-string > Error Alignment`] -Babel errored but TSESTree didn't +Both errored diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-var-ref/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-var-ref/snapshots/1-TSESTree-Error.shot index 85b95f8e17d3..7e31fde5e0c7 100644 --- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-var-ref/snapshots/1-TSESTree-Error.shot +++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-var-ref/snapshots/1-TSESTree-Error.shot @@ -1,4 +1,10 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`AST Fixtures > legacy-fixtures > basics > _error_ > export-named-enum-computed-var-ref > TSESTree - Error`] -NO ERROR +TSError + 2 | + 3 | export enum Foo { +> 4 | [x], + | ^^^ Computed property names are not allowed in enums. + 5 | } + 6 | diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-var-ref/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-var-ref/snapshots/3-Alignment-Error.shot index 006e3518ee1f..3909357acf22 100644 --- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-var-ref/snapshots/3-Alignment-Error.shot +++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-var-ref/snapshots/3-Alignment-Error.shot @@ -1,4 +1,4 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`AST Fixtures > legacy-fixtures > basics > _error_ > export-named-enum-computed-var-ref > Error Alignment`] -Babel errored but TSESTree didn't +Both errored diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/const-enum/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/const-enum/snapshots/1-TSESTree-AST.shot index 9187f52aade3..238113e5cc58 100644 --- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/const-enum/snapshots/1-TSESTree-AST.shot +++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/const-enum/snapshots/1-TSESTree-AST.shot @@ -8,7 +8,6 @@ Program { members: [ TSEnumMember { type: "TSEnumMember", - computed: false, id: Identifier { type: "Identifier", decorators: [], @@ -41,7 +40,6 @@ Program { }, TSEnumMember { type: "TSEnumMember", - computed: false, id: Identifier { type: "Identifier", decorators: [], diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/const-enum/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/const-enum/snapshots/5-AST-Alignment-AST.shot index 1c5c321a9cf2..20c84325ce31 100644 --- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/const-enum/snapshots/5-AST-Alignment-AST.shot +++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/const-enum/snapshots/5-AST-Alignment-AST.shot @@ -15,7 +15,6 @@ Snapshot Diff: - members: Array [ - TSEnumMember { - type: 'TSEnumMember', -- computed: false, - id: Identifier { - type: 'Identifier', - decorators: Array [], @@ -81,7 +80,6 @@ Snapshot Diff: }, - TSEnumMember { - type: 'TSEnumMember', -- computed: false, - id: Identifier { - type: 'Identifier', - decorators: Array [], @@ -121,12 +119,7 @@ Snapshot Diff: - loc: { - start: { column: 15, line: 3 }, - end: { column: 1, line: 6 }, -+ range: [103, 106], -+ loc: { -+ start: { column: 2, line: 5 }, -+ end: { column: 5, line: 5 }, -+ }, - }, +- }, - }, - const: true, - declare: false, @@ -140,7 +133,12 @@ Snapshot Diff: - loc: { - start: { column: 11, line: 3 }, - end: { column: 14, line: 3 }, -- }, ++ range: [103, 106], ++ loc: { ++ start: { column: 2, line: 5 }, ++ end: { column: 5, line: 5 }, ++ }, + }, - }, + ], diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-declare-const-named-enum/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-declare-const-named-enum/snapshots/1-TSESTree-AST.shot index 0a35e9756f00..01c4d100b383 100644 --- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-declare-const-named-enum/snapshots/1-TSESTree-AST.shot +++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-declare-const-named-enum/snapshots/1-TSESTree-AST.shot @@ -11,7 +11,6 @@ Program { members: [ TSEnumMember { type: "TSEnumMember", - computed: false, id: Identifier { type: "Identifier", decorators: [], @@ -44,7 +43,6 @@ Program { }, TSEnumMember { type: "TSEnumMember", - computed: false, id: Identifier { type: "Identifier", decorators: [], diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-declare-const-named-enum/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-declare-const-named-enum/snapshots/5-AST-Alignment-AST.shot index bc225b94ed0d..603938fb4270 100644 --- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-declare-const-named-enum/snapshots/5-AST-Alignment-AST.shot +++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-declare-const-named-enum/snapshots/5-AST-Alignment-AST.shot @@ -19,7 +19,6 @@ Snapshot Diff: - members: Array [ - TSEnumMember { - type: 'TSEnumMember', -- computed: false, - id: Identifier { - type: 'Identifier', - decorators: Array [], @@ -85,7 +84,6 @@ Snapshot Diff: }, - TSEnumMember { - type: 'TSEnumMember', -- computed: false, - id: Identifier { - type: 'Identifier', - decorators: Array [], diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-declare-named-enum/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-declare-named-enum/snapshots/1-TSESTree-AST.shot index 15279e8049d7..f946f794f043 100644 --- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-declare-named-enum/snapshots/1-TSESTree-AST.shot +++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-declare-named-enum/snapshots/1-TSESTree-AST.shot @@ -11,7 +11,6 @@ Program { members: [ TSEnumMember { type: "TSEnumMember", - computed: false, id: Identifier { type: "Identifier", decorators: [], @@ -44,7 +43,6 @@ Program { }, TSEnumMember { type: "TSEnumMember", - computed: false, id: Identifier { type: "Identifier", decorators: [], diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-declare-named-enum/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-declare-named-enum/snapshots/5-AST-Alignment-AST.shot index 695e866e0f98..eff7ba3226bd 100644 --- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-declare-named-enum/snapshots/5-AST-Alignment-AST.shot +++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-declare-named-enum/snapshots/5-AST-Alignment-AST.shot @@ -19,7 +19,6 @@ Snapshot Diff: - members: Array [ - TSEnumMember { - type: 'TSEnumMember', -- computed: false, - id: Identifier { - type: 'Identifier', - decorators: Array [], @@ -85,7 +84,6 @@ Snapshot Diff: }, - TSEnumMember { - type: 'TSEnumMember', -- computed: false, - id: Identifier { - type: 'Identifier', - decorators: Array [], diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-enum/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-enum/snapshots/1-TSESTree-AST.shot index b1554a6d0194..8f42d8de69bf 100644 --- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-enum/snapshots/1-TSESTree-AST.shot +++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-enum/snapshots/1-TSESTree-AST.shot @@ -11,7 +11,6 @@ Program { members: [ TSEnumMember { type: "TSEnumMember", - computed: false, id: Identifier { type: "Identifier", decorators: [], @@ -44,7 +43,6 @@ Program { }, TSEnumMember { type: "TSEnumMember", - computed: false, id: Identifier { type: "Identifier", decorators: [], diff --git a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-enum/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-enum/snapshots/5-AST-Alignment-AST.shot index b52051becdfb..10c5f8d572d1 100644 --- a/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-enum/snapshots/5-AST-Alignment-AST.shot +++ b/packages/ast-spec/src/legacy-fixtures/basics/fixtures/export-named-enum/snapshots/5-AST-Alignment-AST.shot @@ -19,7 +19,6 @@ Snapshot Diff: - members: Array [ - TSEnumMember { - type: 'TSEnumMember', -- computed: false, - id: Identifier { - type: 'Identifier', - decorators: Array [], @@ -85,7 +84,6 @@ Snapshot Diff: }, - TSEnumMember { - type: 'TSEnumMember', -- computed: false, - id: Identifier { - type: 'Identifier', - decorators: Array [], diff --git a/packages/ast-spec/src/legacy-fixtures/declare/fixtures/enum/snapshots/1-TSESTree-AST.shot b/packages/ast-spec/src/legacy-fixtures/declare/fixtures/enum/snapshots/1-TSESTree-AST.shot index 513eb9bcd84c..e483a20f2a29 100644 --- a/packages/ast-spec/src/legacy-fixtures/declare/fixtures/enum/snapshots/1-TSESTree-AST.shot +++ b/packages/ast-spec/src/legacy-fixtures/declare/fixtures/enum/snapshots/1-TSESTree-AST.shot @@ -8,7 +8,6 @@ Program { members: [ TSEnumMember { type: "TSEnumMember", - computed: false, id: Identifier { type: "Identifier", decorators: [], @@ -30,7 +29,6 @@ Program { }, TSEnumMember { type: "TSEnumMember", - computed: false, id: Identifier { type: "Identifier", decorators: [], diff --git a/packages/ast-spec/src/legacy-fixtures/declare/fixtures/enum/snapshots/5-AST-Alignment-AST.shot b/packages/ast-spec/src/legacy-fixtures/declare/fixtures/enum/snapshots/5-AST-Alignment-AST.shot index 3c1cbd1bc2a0..544b72e407c8 100644 --- a/packages/ast-spec/src/legacy-fixtures/declare/fixtures/enum/snapshots/5-AST-Alignment-AST.shot +++ b/packages/ast-spec/src/legacy-fixtures/declare/fixtures/enum/snapshots/5-AST-Alignment-AST.shot @@ -15,7 +15,6 @@ Snapshot Diff: - members: Array [ - TSEnumMember { - type: 'TSEnumMember', -- computed: false, - id: Identifier { - type: 'Identifier', - decorators: Array [], @@ -59,7 +58,6 @@ Snapshot Diff: }, - TSEnumMember { - type: 'TSEnumMember', -- computed: false, - id: Identifier { - type: 'Identifier', - decorators: Array [], diff --git a/packages/ast-spec/tests/fixtures-with-differences-errors.shot b/packages/ast-spec/tests/fixtures-with-differences-errors.shot index 7051aa777fbb..04b14e7a3730 100644 --- a/packages/ast-spec/tests/fixtures-with-differences-errors.shot +++ b/packages/ast-spec/tests/fixtures-with-differences-errors.shot @@ -27,9 +27,6 @@ exports[`AST Fixtures > List fixtures with Error differences`] "legacy-fixtures/basics/fixtures/_error_/class-with-constructor-and-type-parameters/fixture.ts", "legacy-fixtures/basics/fixtures/_error_/class-with-two-methods-computed-constructor/fixture.ts", "legacy-fixtures/basics/fixtures/_error_/const-assertions/fixture.ts", - "legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-number/fixture.ts", - "legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-string/fixture.ts", - "legacy-fixtures/basics/fixtures/_error_/export-named-enum-computed-var-ref/fixture.ts", "legacy-fixtures/basics/fixtures/_error_/export-with-import-assertions/fixture.ts", "legacy-fixtures/basics/fixtures/_error_/import-type-error/fixture.ts", "legacy-fixtures/basics/fixtures/_error_/new-target-in-arrow-function-body/fixture.ts", diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md index e85d9e4f4fc9..6553f6fdfe46 100644 --- a/packages/eslint-plugin/CHANGELOG.md +++ b/packages/eslint-plugin/CHANGELOG.md @@ -1,3 +1,11 @@ +## 8.42.0 (2025-09-02) + +### 🩹 Fixes + +- **deps:** update eslint monorepo to v9.33.0 ([#11482](https://github.com/typescript-eslint/typescript-eslint/pull/11482)) + +You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. + ## 8.41.0 (2025-08-25) ### 🩹 Fixes diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index bafdc946330b..283b912e44ce 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/eslint-plugin", - "version": "8.41.0", + "version": "8.42.0", "description": "TypeScript plugin for ESLint", "files": [ "dist", @@ -59,10 +59,10 @@ }, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.41.0", - "@typescript-eslint/type-utils": "8.41.0", - "@typescript-eslint/utils": "8.41.0", - "@typescript-eslint/visitor-keys": "8.41.0", + "@typescript-eslint/scope-manager": "8.42.0", + "@typescript-eslint/type-utils": "8.42.0", + "@typescript-eslint/utils": "8.42.0", + "@typescript-eslint/visitor-keys": "8.42.0", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", @@ -71,8 +71,8 @@ "devDependencies": { "@types/mdast": "^4.0.3", "@types/natural-compare": "*", - "@typescript-eslint/rule-schema-to-typescript-types": "8.41.0", - "@typescript-eslint/rule-tester": "8.41.0", + "@typescript-eslint/rule-schema-to-typescript-types": "8.42.0", + "@typescript-eslint/rule-tester": "8.42.0", "@vitest/coverage-v8": "^3.1.3", "ajv": "^6.12.6", "cross-fetch": "*", @@ -92,7 +92,7 @@ "vitest": "^3.1.3" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.41.0", + "@typescript-eslint/parser": "^8.42.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" }, diff --git a/packages/eslint-plugin/src/rules/naming-convention.ts b/packages/eslint-plugin/src/rules/naming-convention.ts index 03500d825163..839f3e0a1c98 100644 --- a/packages/eslint-plugin/src/rules/naming-convention.ts +++ b/packages/eslint-plugin/src/rules/naming-convention.ts @@ -631,11 +631,8 @@ export default createRule({ // #region interface - 'TSEnumMember[computed != true]': { - handler: ( - node: TSESTree.TSEnumMemberNonComputedName, - validator, - ): void => { + TSEnumMember: { + handler: (node: TSESTree.TSEnumMember, validator): void => { const id = node.id; const modifiers = new Set(); diff --git a/packages/eslint-plugin/src/util/getFunctionHeadLoc.ts b/packages/eslint-plugin/src/util/getFunctionHeadLoc.ts index 49ab2b742dd9..53987cddc37b 100644 --- a/packages/eslint-plugin/src/util/getFunctionHeadLoc.ts +++ b/packages/eslint-plugin/src/util/getFunctionHeadLoc.ts @@ -154,8 +154,8 @@ export function getFunctionHeadLoc( sourceCode: TSESLint.SourceCode, ): TSESTree.SourceLocation { const parent = node.parent; - let start: TSESTree.Position | null = null; - let end: TSESTree.Position | null = null; + let start: TSESTree.Position; + let end: TSESTree.Position; if ( parent.type === AST_NODE_TYPES.MethodDefinition || diff --git a/packages/eslint-plugin/tests/rules/no-unsafe-enum-comparison.test.ts b/packages/eslint-plugin/tests/rules/no-unsafe-enum-comparison.test.ts index b592b7fe513d..89e28f163314 100644 --- a/packages/eslint-plugin/tests/rules/no-unsafe-enum-comparison.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unsafe-enum-comparison.test.ts @@ -1121,87 +1121,6 @@ ruleTester.run('no-unsafe-enum-comparison', rule, { }, ], }, - { - code: ` - enum ComputedKey { - ['test-key' /* with comment */] = 1, - } - declare const computedKey: ComputedKey; - computedKey === 1; - `, - errors: [ - { - messageId: 'mismatchedCondition', - suggestions: [ - { - messageId: 'replaceValueWithEnum', - output: ` - enum ComputedKey { - ['test-key' /* with comment */] = 1, - } - declare const computedKey: ComputedKey; - computedKey === ComputedKey['test-key']; - `, - }, - ], - }, - ], - }, - { - code: ` - enum ComputedKey { - [\`test-key\` /* with comment */] = 1, - } - declare const computedKey: ComputedKey; - computedKey === 1; - `, - errors: [ - { - messageId: 'mismatchedCondition', - suggestions: [ - { - messageId: 'replaceValueWithEnum', - output: ` - enum ComputedKey { - [\`test-key\` /* with comment */] = 1, - } - declare const computedKey: ComputedKey; - computedKey === ComputedKey[\`test-key\`]; - `, - }, - ], - }, - ], - }, - { - code: ` - enum ComputedKey { - [\`test- - key\` /* with comment */] = 1, - } - declare const computedKey: ComputedKey; - computedKey === 1; - `, - errors: [ - { - messageId: 'mismatchedCondition', - suggestions: [ - { - messageId: 'replaceValueWithEnum', - output: ` - enum ComputedKey { - [\`test- - key\` /* with comment */] = 1, - } - declare const computedKey: ComputedKey; - computedKey === ComputedKey[\`test- - key\`]; - `, - }, - ], - }, - ], - }, { code: ` enum Fruit { diff --git a/packages/eslint-plugin/tests/rules/prefer-literal-enum-member.test.ts b/packages/eslint-plugin/tests/rules/prefer-literal-enum-member.test.ts index ea670139ccb3..f655c87e9ce2 100644 --- a/packages/eslint-plugin/tests/rules/prefer-literal-enum-member.test.ts +++ b/packages/eslint-plugin/tests/rules/prefer-literal-enum-member.test.ts @@ -54,11 +54,6 @@ enum ValidQuotedKey { ` enum ValidQuotedKeyWithAssignment { 'a' = 1, -} - `, - ` -enum ValidKeyWithComputedSyntaxButNoComputedKey { - ['a'], } `, { @@ -107,15 +102,6 @@ enum Foo { }, { code: ` -enum Foo { - ['A-1'] = 1 << 0, - C = ~Foo['A-1'], -} - `, - options: [{ allowBitwiseExpressions: true }], - }, - { - code: ` enum Foo { A = 1 << 0, B = 1 << 1, diff --git a/packages/eslint-plugin/tests/rules/switch-exhaustiveness-check.test.ts b/packages/eslint-plugin/tests/rules/switch-exhaustiveness-check.test.ts index da5b65c8177f..b18e91e4872a 100644 --- a/packages/eslint-plugin/tests/rules/switch-exhaustiveness-check.test.ts +++ b/packages/eslint-plugin/tests/rules/switch-exhaustiveness-check.test.ts @@ -2281,46 +2281,6 @@ switch (value) { }, ], }, - { - code: ` - enum Enum { - 'a' = 1, - [\`key-with - - new-line\`] = 2, - } - - declare const a: Enum; - - switch (a) { - } - `, - errors: [ - { - messageId: 'switchIsNotExhaustive', - suggestions: [ - { - messageId: 'addMissingCases', - output: ` - enum Enum { - 'a' = 1, - [\`key-with - - new-line\`] = 2, - } - - declare const a: Enum; - - switch (a) { - case Enum.a: { throw new Error('Not implemented yet: Enum.a case') } - case Enum['key-with\\n\\n new-line']: { throw new Error('Not implemented yet: Enum[\\'key-with\\\\n\\\\n new-line\\'] case') } - } - `, - }, - ], - }, - ], - }, { code: noFormat` enum Enum { diff --git a/packages/eslint-plugin/tests/schema-snapshots/no-magic-numbers.shot b/packages/eslint-plugin/tests/schema-snapshots/no-magic-numbers.shot index 6a0d430f638e..394890924c13 100644 --- a/packages/eslint-plugin/tests/schema-snapshots/no-magic-numbers.shot +++ b/packages/eslint-plugin/tests/schema-snapshots/no-magic-numbers.shot @@ -41,18 +41,22 @@ "type": "boolean" }, "ignoreEnums": { + "default": false, "description": "Whether enums used in TypeScript are considered okay.", "type": "boolean" }, "ignoreNumericLiteralTypes": { + "default": false, "description": "Whether numbers used in TypeScript numeric literal types are considered okay.", "type": "boolean" }, "ignoreReadonlyClassProperties": { + "default": false, "description": "Whether `readonly` class properties are considered okay.", "type": "boolean" }, "ignoreTypeIndexes": { + "default": false, "description": "Whether numbers used to index types are okay.", "type": "boolean" } diff --git a/packages/eslint-plugin/tools/generate-breaking-changes.mts b/packages/eslint-plugin/tools/generate-breaking-changes.mts index 0ddb3563b976..0d3d0b4a6b1f 100644 --- a/packages/eslint-plugin/tools/generate-breaking-changes.mts +++ b/packages/eslint-plugin/tools/generate-breaking-changes.mts @@ -22,6 +22,7 @@ async function getNewRulesAsOfMajorVersion( // Normally we wouldn't condone using the 'eval' API... // But this is an internal-only script and it's the easiest way to convert // the JS raw text into a runtime object. 🤷 + // eslint-disable-next-line no-unassigned-vars -- assigned by eval let oldRulesObject!: { rules: TypeScriptESLintRules }; eval(`oldRulesObject = ${oldObjectText}`); const oldRuleNames = new Set(Object.keys(oldRulesObject.rules)); diff --git a/packages/parser/CHANGELOG.md b/packages/parser/CHANGELOG.md index 7aaedf20bf8d..f0699726e8d7 100644 --- a/packages/parser/CHANGELOG.md +++ b/packages/parser/CHANGELOG.md @@ -1,3 +1,9 @@ +## 8.42.0 (2025-09-02) + +This was a version bump only for parser to align it with other projects, there were no code changes. + +You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. + ## 8.41.0 (2025-08-25) This was a version bump only for parser to align it with other projects, there were no code changes. diff --git a/packages/parser/package.json b/packages/parser/package.json index c22e53c3c0a7..25b9494e7bb5 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/parser", - "version": "8.41.0", + "version": "8.42.0", "description": "An ESLint custom parser which leverages TypeScript ESTree", "files": [ "dist", @@ -51,10 +51,10 @@ "typescript": ">=4.8.4 <6.0.0" }, "dependencies": { - "@typescript-eslint/scope-manager": "8.41.0", - "@typescript-eslint/types": "8.41.0", - "@typescript-eslint/typescript-estree": "8.41.0", - "@typescript-eslint/visitor-keys": "8.41.0", + "@typescript-eslint/scope-manager": "8.42.0", + "@typescript-eslint/types": "8.42.0", + "@typescript-eslint/typescript-estree": "8.42.0", + "@typescript-eslint/visitor-keys": "8.42.0", "debug": "^4.3.4" }, "devDependencies": { diff --git a/packages/project-service/CHANGELOG.md b/packages/project-service/CHANGELOG.md index 0830fccb4d66..874fb6a1cb4f 100644 --- a/packages/project-service/CHANGELOG.md +++ b/packages/project-service/CHANGELOG.md @@ -1,3 +1,9 @@ +## 8.42.0 (2025-09-02) + +This was a version bump only for project-service to align it with other projects, there were no code changes. + +You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. + ## 8.41.0 (2025-08-25) This was a version bump only for project-service to align it with other projects, there were no code changes. diff --git a/packages/project-service/package.json b/packages/project-service/package.json index adab677e6f7a..213c332c8818 100644 --- a/packages/project-service/package.json +++ b/packages/project-service/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/project-service", - "version": "8.41.0", + "version": "8.42.0", "description": "Standalone TypeScript project service wrapper for linting.", "files": [ "dist", @@ -49,8 +49,8 @@ "typescript": ">=4.8.4 <6.0.0" }, "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.41.0", - "@typescript-eslint/types": "^8.41.0", + "@typescript-eslint/tsconfig-utils": "^8.42.0", + "@typescript-eslint/types": "^8.42.0", "debug": "^4.3.4" }, "devDependencies": { diff --git a/packages/rule-schema-to-typescript-types/CHANGELOG.md b/packages/rule-schema-to-typescript-types/CHANGELOG.md index fde466cf497d..5f273061627d 100644 --- a/packages/rule-schema-to-typescript-types/CHANGELOG.md +++ b/packages/rule-schema-to-typescript-types/CHANGELOG.md @@ -1,3 +1,9 @@ +## 8.42.0 (2025-09-02) + +This was a version bump only for rule-schema-to-typescript-types to align it with other projects, there were no code changes. + +You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. + ## 8.41.0 (2025-08-25) ### 🩹 Fixes diff --git a/packages/rule-schema-to-typescript-types/package.json b/packages/rule-schema-to-typescript-types/package.json index b1692804359c..d9a9c1a9d62d 100644 --- a/packages/rule-schema-to-typescript-types/package.json +++ b/packages/rule-schema-to-typescript-types/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/rule-schema-to-typescript-types", - "version": "8.41.0", + "version": "8.42.0", "private": true, "type": "commonjs", "exports": { @@ -32,8 +32,8 @@ "typecheck": "yarn run -BT nx typecheck" }, "dependencies": { - "@typescript-eslint/type-utils": "8.41.0", - "@typescript-eslint/utils": "8.41.0", + "@typescript-eslint/type-utils": "8.42.0", + "@typescript-eslint/utils": "8.42.0", "natural-compare": "^1.4.0", "prettier": "3.6.2" }, diff --git a/packages/rule-tester/CHANGELOG.md b/packages/rule-tester/CHANGELOG.md index d423dad73de2..3382f5b61dc8 100644 --- a/packages/rule-tester/CHANGELOG.md +++ b/packages/rule-tester/CHANGELOG.md @@ -1,3 +1,9 @@ +## 8.42.0 (2025-09-02) + +This was a version bump only for rule-tester to align it with other projects, there were no code changes. + +You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. + ## 8.41.0 (2025-08-25) ### 🚀 Features diff --git a/packages/rule-tester/package.json b/packages/rule-tester/package.json index 41833305c3ea..3e8f7d2e624e 100644 --- a/packages/rule-tester/package.json +++ b/packages/rule-tester/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/rule-tester", - "version": "8.41.0", + "version": "8.42.0", "description": "Tooling to test ESLint rules", "files": [ "dist", @@ -44,9 +44,9 @@ }, "//": "NOTE - AJV is out-of-date, but it's intentionally synced with ESLint - https://github.com/eslint/eslint/blob/ad9dd6a933fd098a0d99c6a9aa059850535c23ee/package.json#L70", "dependencies": { - "@typescript-eslint/parser": "8.41.0", - "@typescript-eslint/typescript-estree": "8.41.0", - "@typescript-eslint/utils": "8.41.0", + "@typescript-eslint/parser": "8.42.0", + "@typescript-eslint/typescript-estree": "8.42.0", + "@typescript-eslint/utils": "8.42.0", "ajv": "^6.12.6", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "4.6.2", diff --git a/packages/rule-tester/src/RuleTester.ts b/packages/rule-tester/src/RuleTester.ts index c81f7296e189..ccf143c1f506 100644 --- a/packages/rule-tester/src/RuleTester.ts +++ b/packages/rule-tester/src/RuleTester.ts @@ -761,8 +761,8 @@ export class RuleTester extends TestFramework { // Verify the code. let initialMessages: Linter.LintMessage[] | null = null; - let messages: Linter.LintMessage[] | null = null; - let fixedResult: SourceCodeFixer.AppliedFixes | null = null; + let messages: Linter.LintMessage[]; + let fixedResult: SourceCodeFixer.AppliedFixes; let passNumber = 0; const outputs: string[] = []; const configWithoutCustomKeys = omitCustomConfigProperties(config); diff --git a/packages/scope-manager/CHANGELOG.md b/packages/scope-manager/CHANGELOG.md index 3d79af3dd2df..6f66a69047d6 100644 --- a/packages/scope-manager/CHANGELOG.md +++ b/packages/scope-manager/CHANGELOG.md @@ -1,3 +1,9 @@ +## 8.42.0 (2025-09-02) + +This was a version bump only for scope-manager to align it with other projects, there were no code changes. + +You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. + ## 8.41.0 (2025-08-25) This was a version bump only for scope-manager to align it with other projects, there were no code changes. diff --git a/packages/scope-manager/package.json b/packages/scope-manager/package.json index 1732f314fe6f..4bddb0326989 100644 --- a/packages/scope-manager/package.json +++ b/packages/scope-manager/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/scope-manager", - "version": "8.41.0", + "version": "8.42.0", "description": "TypeScript scope analyser for ESLint", "files": [ "dist", @@ -47,11 +47,11 @@ "typecheck": "yarn run -BT nx typecheck" }, "dependencies": { - "@typescript-eslint/types": "8.41.0", - "@typescript-eslint/visitor-keys": "8.41.0" + "@typescript-eslint/types": "8.42.0", + "@typescript-eslint/visitor-keys": "8.42.0" }, "devDependencies": { - "@typescript-eslint/typescript-estree": "8.41.0", + "@typescript-eslint/typescript-estree": "8.42.0", "@vitest/coverage-v8": "^3.1.3", "@vitest/pretty-format": "^3.1.3", "eslint": "*", diff --git a/packages/scope-manager/src/referencer/ClassVisitor.ts b/packages/scope-manager/src/referencer/ClassVisitor.ts index 0a8d0b9cf82c..83f44ccc5f33 100644 --- a/packages/scope-manager/src/referencer/ClassVisitor.ts +++ b/packages/scope-manager/src/referencer/ClassVisitor.ts @@ -9,23 +9,18 @@ import { TypeVisitor } from './TypeVisitor'; import { Visitor } from './Visitor'; export class ClassVisitor extends Visitor { - readonly #classNode: TSESTree.ClassDeclaration | TSESTree.ClassExpression; readonly #referencer: Referencer; - constructor( - referencer: Referencer, - node: TSESTree.ClassDeclaration | TSESTree.ClassExpression, - ) { + constructor(referencer: Referencer) { super(referencer); this.#referencer = referencer; - this.#classNode = node; } static visit( referencer: Referencer, node: TSESTree.ClassDeclaration | TSESTree.ClassExpression, ): void { - const classVisitor = new ClassVisitor(referencer, node); + const classVisitor = new ClassVisitor(referencer); classVisitor.visitClass(node); } @@ -97,7 +92,7 @@ export class ClassVisitor extends Visitor { } if (node.value.type === AST_NODE_TYPES.FunctionExpression) { - this.visitMethodFunction(node.value, node); + this.visitMethodFunction(node.value); } else { this.#referencer.visit(node.value); } @@ -105,10 +100,7 @@ export class ClassVisitor extends Visitor { node.decorators.forEach(d => this.#referencer.visit(d)); } - protected visitMethodFunction( - node: TSESTree.FunctionExpression, - methodNode: TSESTree.MethodDefinition, - ): void { + protected visitMethodFunction(node: TSESTree.FunctionExpression): void { if (node.id) { // FunctionExpression with name creates its special scope; // FunctionExpressionNameScope. @@ -122,71 +114,6 @@ export class ClassVisitor extends Visitor { // Consider this function is in the MethodDefinition. this.#referencer.scopeManager.nestFunctionScope(node, true); - /** - * class A { - * @meta // <--- check this - * foo(a: Type) {} - * - * @meta // <--- check this - * foo(): Type {} - * } - */ - let withMethodDecorators = !!methodNode.decorators.length; - /** - * class A { - * foo( - * @meta // <--- check this - * a: Type - * ) {} - * - * set foo( - * @meta // <--- EXCEPT this. TS do nothing for this - * a: Type - * ) {} - * } - */ - withMethodDecorators ||= - methodNode.kind !== 'set' && - node.params.some(param => param.decorators.length); - if (!withMethodDecorators && methodNode.kind === 'set') { - const keyName = getLiteralMethodKeyName(methodNode); - - /** - * class A { - * @meta // <--- check this - * get a() {} - * set ['a'](v: Type) {} - * } - */ - if ( - keyName != null && - this.#classNode.body.body.find( - (node): node is TSESTree.MethodDefinition => - node !== methodNode && - node.type === AST_NODE_TYPES.MethodDefinition && - // Node must both be static or not - node.static === methodNode.static && - getLiteralMethodKeyName(node) === keyName, - )?.decorators.length - ) { - withMethodDecorators = true; - } - } - - /** - * @meta // <--- check this - * class A { - * constructor(a: Type) {} - * } - */ - if ( - !withMethodDecorators && - methodNode.kind === 'constructor' && - this.#classNode.decorators.length - ) { - withMethodDecorators = true; - } - // Process parameter declarations. for (const param of node.params) { this.visitPattern( @@ -337,39 +264,3 @@ export class ClassVisitor extends Visitor { this.visitType(node); } } - -/** - * Only if key is one of [identifier, string, number], ts will combine metadata of accessors . - * class A { - * get a() {} - * set ['a'](v: Type) {} - * - * get [1]() {} - * set [1](v: Type) {} - * - * // Following won't be combined - * get [key]() {} - * set [key](v: Type) {} - * - * get [true]() {} - * set [true](v: Type) {} - * - * get ['a'+'b']() {} - * set ['a'+'b']() {} - * } - */ -function getLiteralMethodKeyName( - node: TSESTree.MethodDefinition, -): number | string | null { - if (node.computed && node.key.type === AST_NODE_TYPES.Literal) { - if ( - typeof node.key.value === 'string' || - typeof node.key.value === 'number' - ) { - return node.key.value; - } - } else if (!node.computed && node.key.type === AST_NODE_TYPES.Identifier) { - return node.key.name; - } - return null; -} diff --git a/packages/scope-manager/src/referencer/Referencer.ts b/packages/scope-manager/src/referencer/Referencer.ts index 1f621d8f7823..562921170751 100644 --- a/packages/scope-manager/src/referencer/Referencer.ts +++ b/packages/scope-manager/src/referencer/Referencer.ts @@ -668,10 +668,7 @@ export class Referencer extends Visitor { name, new TSEnumMemberDefinition(name, member), ); - } else if ( - !member.computed && - member.id.type === AST_NODE_TYPES.Identifier - ) { + } else if (member.id.type === AST_NODE_TYPES.Identifier) { this.currentScope().defineIdentifier( member.id, new TSEnumMemberDefinition(member.id, member), diff --git a/packages/scope-manager/tests/eslint-scope/es6-class.test.ts b/packages/scope-manager/tests/eslint-scope/es6-class.test.ts index c7ab81d99077..eaae8dd0210b 100644 --- a/packages/scope-manager/tests/eslint-scope/es6-class.test.ts +++ b/packages/scope-manager/tests/eslint-scope/es6-class.test.ts @@ -140,6 +140,7 @@ describe('ES6 class', () => { assert.isScopeOfType(scope, ScopeType.global); expect(scope.block.type).toBe(AST_NODE_TYPES.Program); expect(scope.isStrict).toBe(false); + expect(variables).toHaveLength(0); scope = scopeManager.scopes[1]; variables = getRealVariables(scope.variables); diff --git a/packages/scope-manager/tests/eslint-scope/es6-object.test.ts b/packages/scope-manager/tests/eslint-scope/es6-object.test.ts index 7f26c43ff780..ffdc8541978d 100644 --- a/packages/scope-manager/tests/eslint-scope/es6-object.test.ts +++ b/packages/scope-manager/tests/eslint-scope/es6-object.test.ts @@ -19,6 +19,7 @@ describe('ES6 object', () => { assert.isScopeOfType(scope, ScopeType.global); expect(scope.block.type).toBe(AST_NODE_TYPES.Program); expect(scope.isStrict).toBe(false); + expect(variables).toHaveLength(0); scope = scopeManager.scopes[1]; variables = getRealVariables(scope.variables); @@ -51,6 +52,7 @@ describe('ES6 object', () => { assert.isScopeOfType(scope, ScopeType.global); expect(scope.block.type).toBe(AST_NODE_TYPES.Program); expect(scope.isStrict).toBe(false); + expect(variables).toHaveLength(0); scope = scopeManager.scopes[1]; variables = getRealVariables(scope.variables); diff --git a/packages/tsconfig-utils/CHANGELOG.md b/packages/tsconfig-utils/CHANGELOG.md index 377e6e5a4239..6702a80306ee 100644 --- a/packages/tsconfig-utils/CHANGELOG.md +++ b/packages/tsconfig-utils/CHANGELOG.md @@ -1,3 +1,9 @@ +## 8.42.0 (2025-09-02) + +This was a version bump only for tsconfig-utils to align it with other projects, there were no code changes. + +You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. + ## 8.41.0 (2025-08-25) This was a version bump only for tsconfig-utils to align it with other projects, there were no code changes. diff --git a/packages/tsconfig-utils/package.json b/packages/tsconfig-utils/package.json index fe9fa734f8e5..581a2ac87076 100644 --- a/packages/tsconfig-utils/package.json +++ b/packages/tsconfig-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/tsconfig-utils", - "version": "8.41.0", + "version": "8.42.0", "description": "Utilities for collecting TSConfigs for linting scenarios.", "files": [ "dist", diff --git a/packages/type-utils/CHANGELOG.md b/packages/type-utils/CHANGELOG.md index 7f854a1f0c61..cc2def818109 100644 --- a/packages/type-utils/CHANGELOG.md +++ b/packages/type-utils/CHANGELOG.md @@ -1,3 +1,9 @@ +## 8.42.0 (2025-09-02) + +This was a version bump only for type-utils to align it with other projects, there were no code changes. + +You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. + ## 8.41.0 (2025-08-25) This was a version bump only for type-utils to align it with other projects, there were no code changes. diff --git a/packages/type-utils/package.json b/packages/type-utils/package.json index 57189776f6e9..6b5a34063b08 100644 --- a/packages/type-utils/package.json +++ b/packages/type-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/type-utils", - "version": "8.41.0", + "version": "8.42.0", "description": "Type utilities for working with TypeScript + ESLint together", "files": [ "dist", @@ -44,9 +44,9 @@ "typecheck": "yarn run -BT nx typecheck" }, "dependencies": { - "@typescript-eslint/types": "8.41.0", - "@typescript-eslint/typescript-estree": "8.41.0", - "@typescript-eslint/utils": "8.41.0", + "@typescript-eslint/types": "8.42.0", + "@typescript-eslint/typescript-estree": "8.42.0", + "@typescript-eslint/utils": "8.42.0", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -55,7 +55,7 @@ "typescript": ">=4.8.4 <6.0.0" }, "devDependencies": { - "@typescript-eslint/parser": "8.41.0", + "@typescript-eslint/parser": "8.42.0", "@vitest/coverage-v8": "^3.1.3", "ajv": "^6.12.6", "eslint": "*", diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 14ebf6b09635..c23735280c72 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -1,3 +1,9 @@ +## 8.42.0 (2025-09-02) + +This was a version bump only for types to align it with other projects, there were no code changes. + +You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. + ## 8.41.0 (2025-08-25) This was a version bump only for types to align it with other projects, there were no code changes. diff --git a/packages/types/package.json b/packages/types/package.json index 1117200eca0a..6f791504315b 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/types", - "version": "8.41.0", + "version": "8.42.0", "description": "Types for the TypeScript-ESTree AST spec", "files": [ "dist", diff --git a/packages/types/src/ts-estree.ts b/packages/types/src/ts-estree.ts index b1a5928a5d2b..1a43962b0231 100644 --- a/packages/types/src/ts-estree.ts +++ b/packages/types/src/ts-estree.ts @@ -194,10 +194,7 @@ declare module './generated/ast-spec' { parent: TSESTree.TSEnumDeclaration; } - interface TSEnumMemberComputedName { - parent: TSESTree.TSEnumBody; - } - interface TSEnumMemberNonComputedName { + interface TSEnumMember { parent: TSESTree.TSEnumBody; } diff --git a/packages/typescript-eslint/CHANGELOG.md b/packages/typescript-eslint/CHANGELOG.md index e80cd18e2adf..fbc52575d507 100644 --- a/packages/typescript-eslint/CHANGELOG.md +++ b/packages/typescript-eslint/CHANGELOG.md @@ -1,3 +1,19 @@ +## 8.42.0 (2025-09-02) + +### 🚀 Features + +- deprecate tseslint.config() ([#11531](https://github.com/typescript-eslint/typescript-eslint/pull/11531)) + +### 🩹 Fixes + +- **typescript-eslint:** handle non-normalized windows paths produced by jiti ([#11546](https://github.com/typescript-eslint/typescript-eslint/pull/11546)) + +### ❤️ Thank You + +- Kirk Waiblinger @kirkwaiblinger + +You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. + ## 8.41.0 (2025-08-25) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. diff --git a/packages/typescript-eslint/package.json b/packages/typescript-eslint/package.json index 38789b0cf809..f4d605563c98 100644 --- a/packages/typescript-eslint/package.json +++ b/packages/typescript-eslint/package.json @@ -1,6 +1,6 @@ { "name": "typescript-eslint", - "version": "8.41.0", + "version": "8.42.0", "description": "Tooling which enables you to use TypeScript with ESLint", "files": [ "dist", @@ -50,10 +50,10 @@ "typecheck": "yarn run -BT nx typecheck" }, "dependencies": { - "@typescript-eslint/eslint-plugin": "8.41.0", - "@typescript-eslint/parser": "8.41.0", - "@typescript-eslint/typescript-estree": "8.41.0", - "@typescript-eslint/utils": "8.41.0" + "@typescript-eslint/eslint-plugin": "8.42.0", + "@typescript-eslint/parser": "8.42.0", + "@typescript-eslint/typescript-estree": "8.42.0", + "@typescript-eslint/utils": "8.42.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", diff --git a/packages/typescript-eslint/src/config-helper.ts b/packages/typescript-eslint/src/config-helper.ts index 51456475734f..758052c62f56 100644 --- a/packages/typescript-eslint/src/config-helper.ts +++ b/packages/typescript-eslint/src/config-helper.ts @@ -88,6 +88,9 @@ export type ConfigArray = TSESLint.FlatConfig.ConfigArray; * }, * ); * ``` + * + * @deprecated ESLint core now provides this functionality via `defineConfig()`, + * which we now recommend instead. See {@link https://typescript-eslint.io/packages/typescript-eslint/#config-deprecated}. */ export function config( ...configs: InfiniteDepthConfigWithExtends[] diff --git a/packages/typescript-eslint/src/getTSConfigRootDirFromStack.ts b/packages/typescript-eslint/src/getTSConfigRootDirFromStack.ts index 1d4c558eabe4..7e3da09e4ec5 100644 --- a/packages/typescript-eslint/src/getTSConfigRootDirFromStack.ts +++ b/packages/typescript-eslint/src/getTSConfigRootDirFromStack.ts @@ -41,6 +41,11 @@ export function getTSConfigRootDirFromStack(): string | undefined { const parsedPath = path.parse(stackFrameFilePath); if (/^eslint\.config\.(c|m)?(j|t)s$/.test(parsedPath.base)) { + if (process.platform === 'win32') { + // workaround for https://github.com/typescript-eslint/typescript-eslint/issues/11530 + // (caused by https://github.com/unjs/jiti/issues/397) + return parsedPath.dir.replaceAll('/', path.sep); + } return parsedPath.dir; } } diff --git a/packages/typescript-eslint/tests/config-helper.test.ts b/packages/typescript-eslint/tests/config-helper.test.ts index 8b4a151a32cf..7b3288df295f 100644 --- a/packages/typescript-eslint/tests/config-helper.test.ts +++ b/packages/typescript-eslint/tests/config-helper.test.ts @@ -2,6 +2,8 @@ import type { TSESLint } from '@typescript-eslint/utils'; import tseslint from '../src/index.js'; +/* eslint @typescript-eslint/no-deprecated: ["error", { "allow": [{ "from": "file", "name": "config", "path": "packages/typescript-eslint/src/config-helper.ts" }] }] */ + describe('config helper', () => { it('works without extends', () => { expect( diff --git a/packages/typescript-eslint/tests/getTsconfigRootDirFromStack.test.ts b/packages/typescript-eslint/tests/getTsconfigRootDirFromStack.test.ts index 8f37d5833df5..92139b45896a 100644 --- a/packages/typescript-eslint/tests/getTsconfigRootDirFromStack.test.ts +++ b/packages/typescript-eslint/tests/getTsconfigRootDirFromStack.test.ts @@ -48,4 +48,26 @@ describe(getTSConfigRootDirFromStack, () => { expect(Error.prepareStackTrace).toBe(dummyFunction); Error.prepareStackTrace = prepareStackTrace; }); + + it.runIf(isWindows)( + 'works when jiti gives non-normalized stack traces on windows', + () => { + vi.spyOn(Error, 'captureStackTrace').mockImplementationOnce( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (target: any, _constructorOpt) => { + target.stack = [ + { + getFileName() { + return 'F:/a/b/eslint.config.ts'; + }, + }, + ]; + }, + ); + + const inferredTsconfigRootDir = getTSConfigRootDirFromStack(); + + expect(inferredTsconfigRootDir).toBe('F:\\a\\b'); + }, + ); }); diff --git a/packages/typescript-eslint/tests/type-compatibility.test-d.ts b/packages/typescript-eslint/tests/type-compatibility.test-d.ts index b0e2f71b81d2..dfcf11cbd2f3 100644 --- a/packages/typescript-eslint/tests/type-compatibility.test-d.ts +++ b/packages/typescript-eslint/tests/type-compatibility.test-d.ts @@ -2,6 +2,8 @@ import { defineConfig } from 'eslint/config'; import tseslint from '../src/index'; +/* eslint @typescript-eslint/no-deprecated: ["error", { "allow": [{ "from": "file", "name": "config", "path": "packages/typescript-eslint/src/config-helper.ts" }] }] */ + describe('test for compatibility with config helpers', () => { test('exported plugin is compatible with tseslint.config()', () => { tseslint.config({ diff --git a/packages/typescript-estree/CHANGELOG.md b/packages/typescript-estree/CHANGELOG.md index 59f4cac1abf8..c11a9eed239e 100644 --- a/packages/typescript-estree/CHANGELOG.md +++ b/packages/typescript-estree/CHANGELOG.md @@ -1,3 +1,9 @@ +## 8.42.0 (2025-09-02) + +This was a version bump only for typescript-estree to align it with other projects, there were no code changes. + +You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. + ## 8.41.0 (2025-08-25) ### 🚀 Features diff --git a/packages/typescript-estree/package.json b/packages/typescript-estree/package.json index 9ff68a8e6c97..ff47e8b02713 100644 --- a/packages/typescript-estree/package.json +++ b/packages/typescript-estree/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/typescript-estree", - "version": "8.41.0", + "version": "8.42.0", "description": "A parser that converts TypeScript source code into an ESTree compatible form", "files": [ "dist", @@ -52,10 +52,10 @@ "typecheck": "yarn run -BT nx typecheck" }, "dependencies": { - "@typescript-eslint/project-service": "8.41.0", - "@typescript-eslint/tsconfig-utils": "8.41.0", - "@typescript-eslint/types": "8.41.0", - "@typescript-eslint/visitor-keys": "8.41.0", + "@typescript-eslint/project-service": "8.42.0", + "@typescript-eslint/tsconfig-utils": "8.42.0", + "@typescript-eslint/types": "8.42.0", + "@typescript-eslint/visitor-keys": "8.42.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", diff --git a/packages/typescript-estree/src/convert.ts b/packages/typescript-estree/src/convert.ts index dccb674537c6..150c0ee950ea 100644 --- a/packages/typescript-estree/src/convert.ts +++ b/packages/typescript-estree/src/convert.ts @@ -476,7 +476,7 @@ export class Converter { >( node: Properties, deprecatedKey: Key, - preferredKey: string, + preferredKey: string | undefined, value: Value, ): Properties & Record { let warned = false; @@ -487,10 +487,13 @@ export class Converter { ? (): Value => value : (): Value => { if (!warned) { - process.emitWarning( - `The '${deprecatedKey}' property is deprecated on ${node.type} nodes. Use ${preferredKey} instead. See https://typescript-eslint.io/troubleshooting/faqs/general#the-key-property-is-deprecated-on-type-nodes-use-key-instead-warnings.`, - 'DeprecationWarning', - ); + let message = `The '${deprecatedKey}' property is deprecated on ${node.type} nodes.`; + if (preferredKey) { + message += ` Use ${preferredKey} instead.`; + } + message += + ' See https://typescript-eslint.io/troubleshooting/faqs/general#the-key-property-is-deprecated-on-type-nodes-use-key-instead-warnings.'; + process.emitWarning(message, 'DeprecationWarning'); warned = true; } @@ -3263,12 +3266,38 @@ export class Converter { } case SyntaxKind.EnumMember: { - return this.createNode(node, { - type: AST_NODE_TYPES.TSEnumMember, - computed: node.name.kind === ts.SyntaxKind.ComputedPropertyName, - id: this.convertChild(node.name), - initializer: node.initializer && this.convertChild(node.initializer), - }); + const computed = node.name.kind === ts.SyntaxKind.ComputedPropertyName; + if (computed) { + this.#throwUnlessAllowInvalidAST( + node.name, + 'Computed property names are not allowed in enums.', + ); + } + + if ( + node.name.kind === SyntaxKind.NumericLiteral || + node.name.kind === SyntaxKind.BigIntLiteral + ) { + this.#throwUnlessAllowInvalidAST( + node.name, + 'An enum member cannot have a numeric name.', + ); + } + + return this.createNode( + node, + this.#withDeprecatedGetter( + { + type: AST_NODE_TYPES.TSEnumMember, + id: this.convertChild(node.name), + initializer: + node.initializer && this.convertChild(node.initializer), + }, + 'computed', + undefined, + computed, + ), + ); } case SyntaxKind.ModuleDeclaration: { diff --git a/packages/typescript-estree/src/create-program/useProvidedPrograms.ts b/packages/typescript-estree/src/create-program/useProvidedPrograms.ts index b8e958ed34f2..cd51c92100d2 100644 --- a/packages/typescript-estree/src/create-program/useProvidedPrograms.ts +++ b/packages/typescript-estree/src/create-program/useProvidedPrograms.ts @@ -15,7 +15,7 @@ const log = debug( export function useProvidedPrograms( programInstances: Iterable, parseSettings: ParseSettings, -): ASTAndDefiniteProgram | undefined { +): ASTAndDefiniteProgram { log( 'Retrieving ast for %s from provided program instance(s)', parseSettings.filePath, diff --git a/packages/typescript-estree/src/parser.ts b/packages/typescript-estree/src/parser.ts index 1c0c6e42aa83..2841d1b1bc39 100644 --- a/packages/typescript-estree/src/parser.ts +++ b/packages/typescript-estree/src/parser.ts @@ -68,13 +68,7 @@ function getProgramAndAST( } if (parseSettings.programs) { - const fromProvidedPrograms = useProvidedPrograms( - parseSettings.programs, - parseSettings, - ); - if (fromProvidedPrograms) { - return fromProvidedPrograms; - } + return useProvidedPrograms(parseSettings.programs, parseSettings); } // no need to waste time creating a program as the caller didn't want parser services diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index 979817e65730..c6af51658d4b 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -1,3 +1,9 @@ +## 8.42.0 (2025-09-02) + +This was a version bump only for utils to align it with other projects, there were no code changes. + +You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. + ## 8.41.0 (2025-08-25) 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 77a4ee26b789..3e8d5744d499 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/utils", - "version": "8.41.0", + "version": "8.42.0", "description": "Utilities for working with TypeScript + ESLint together", "files": [ "dist", @@ -62,9 +62,9 @@ }, "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.41.0", - "@typescript-eslint/types": "8.41.0", - "@typescript-eslint/typescript-estree": "8.41.0" + "@typescript-eslint/scope-manager": "8.42.0", + "@typescript-eslint/types": "8.42.0", + "@typescript-eslint/typescript-estree": "8.42.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", diff --git a/packages/visitor-keys/CHANGELOG.md b/packages/visitor-keys/CHANGELOG.md index 7ad0feec8dc8..f18689f963b1 100644 --- a/packages/visitor-keys/CHANGELOG.md +++ b/packages/visitor-keys/CHANGELOG.md @@ -1,3 +1,9 @@ +## 8.42.0 (2025-09-02) + +This was a version bump only for visitor-keys to align it with other projects, there were no code changes. + +You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. + ## 8.41.0 (2025-08-25) This was a version bump only for visitor-keys to align it with other projects, there were no code changes. diff --git a/packages/visitor-keys/package.json b/packages/visitor-keys/package.json index 1a556efad5c8..04e6678f79d6 100644 --- a/packages/visitor-keys/package.json +++ b/packages/visitor-keys/package.json @@ -1,6 +1,6 @@ { "name": "@typescript-eslint/visitor-keys", - "version": "8.41.0", + "version": "8.42.0", "description": "Visitor keys used to help traverse the TypeScript-ESTree AST", "files": [ "dist", @@ -45,7 +45,7 @@ "typecheck": "yarn run -BT nx typecheck" }, "dependencies": { - "@typescript-eslint/types": "8.41.0", + "@typescript-eslint/types": "8.42.0", "eslint-visitor-keys": "^4.2.1" }, "devDependencies": { diff --git a/packages/website/src/components/editor/createProvideTwoslashInlay.ts b/packages/website/src/components/editor/createProvideTwoslashInlay.ts index e775e80e519a..7ec378b4aff7 100644 --- a/packages/website/src/components/editor/createProvideTwoslashInlay.ts +++ b/packages/website/src/components/editor/createProvideTwoslashInlay.ts @@ -8,14 +8,9 @@ import type * as ts from 'typescript'; import type { SandboxInstance } from './useSandboxServices'; function findTwoshashQueries(code: string): RegExpExecArray[] { - let match: RegExpExecArray | null = null; - const matches: RegExpExecArray[] = []; // RegExp that matches '^//?$' - const twoslashQueryRegex = /^(\s*\/\/\s*\^\?)\s*$/gm; - while ((match = twoslashQueryRegex.exec(code))) { - matches.push(match); - } - return matches; + const twoslashQueryRegex = /^(\s*\/\/\s*\^\?)\s*$/m; + return [...code.matchAll(twoslashQueryRegex)]; } export function createTwoslashInlayProvider( diff --git a/tools/release/apply-canary-version.mts b/tools/release/apply-canary-version.mts index 049dd3b06d96..523a56536367 100644 --- a/tools/release/apply-canary-version.mts +++ b/tools/release/apply-canary-version.mts @@ -4,6 +4,7 @@ import semver from 'semver'; // We are either releasing a canary version of the latest major version, or one for the next major. const overrideMajorVersion = process.env.OVERRIDE_MAJOR_VERSION; +const isDryRun = process.env.DRY_RUN === 'true'; const preid = 'alpha'; @@ -83,7 +84,7 @@ if (!nextCanaryVersion) { console.log(`\nApplying next canary version with Nx`); -const command = `nx release version ${nextCanaryVersion}`; +const command = `nx release version ${nextCanaryVersion}${isDryRun ? ' --dry-run' : ''}`; console.log(`\n> ${command}\n`); diff --git a/tools/release/changelog-renderer.js b/tools/release/changelog-renderer.js index c12c0711aad8..16e3f5deff7b 100644 --- a/tools/release/changelog-renderer.js +++ b/tools/release/changelog-renderer.js @@ -11,6 +11,6 @@ module.exports = class CustomChangelogRenderer extends ( async render() { const defaultChangelog = await super.render(); // Append our custom messaging to the generated changelog entry - return `${defaultChangelog}\n\nYou can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.`; + return `${defaultChangelog}\n\nYou can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.`; } }; diff --git a/tools/release/release.mts b/tools/release/release.mts index 43544c261523..6c6e1f7d799b 100644 --- a/tools/release/release.mts +++ b/tools/release/release.mts @@ -6,6 +6,12 @@ import { } from 'nx/release/index.js'; import yargs from 'yargs'; +if (process.env.CI !== 'true') { + throw new Error( + 'Releases cannot be run outside of CI, we use trusted publishing which requires an authenticated GitHub Actions environment', + ); +} + const options = await yargs(process.argv.slice(2)) .version(false) .option('version', { @@ -31,12 +37,19 @@ const options = await yargs(process.argv.slice(2)) description: 'Whether or not to enable verbose logging, defaults to false', type: 'boolean', }) + .option('firstRelease', { + default: false, + description: + 'Whether or not one of more of the packages are being released for the first time', + type: 'boolean', + }) .parseAsync(); const { projectsVersionData, workspaceVersion } = await releaseVersion({ specifier: options.version, // stage package.json updates to be committed later by the changelog command dryRun: options.dryRun, + firstRelease: options.firstRelease, stageChanges: true, verbose: options.verbose, }); @@ -54,6 +67,7 @@ if (!options.dryRun) { // This will create a release on GitHub await releaseChangelog({ dryRun: options.dryRun, + firstRelease: options.firstRelease, verbose: options.verbose, version: workspaceVersion, versionData: projectsVersionData, @@ -69,11 +83,45 @@ if (!options.forceReleaseWithoutChanges && workspaceVersion === null) { process.exit(0); } +/** + * In order for the `npm publish --dry-run` to produce any kind of valuable output, we have to + * modify the package versions on disk to a unique version before running it, otherwise it will + * simply print `You cannot publish over the previously published versions: X.X.X`. + * + * Therefore we will leverage our apply-canary-version.mts script to do this for us in this case. + */ +if (options.dryRun) { + console.log( + '⚠️ NOTE: Applying canary version to package.json files so that dry-run publishing produces useful output...', + ); + execaSync('yarn', ['tsx', 'tools/release/apply-canary-version.mts']); + console.log( + '✅ Applied canary version to package.json files so that dry-run publishing produces useful output\n', + ); +} + const publishProjectsResult = await releasePublish({ dryRun: options.dryRun, + firstRelease: options.firstRelease, verbose: options.verbose, }); +// Revert all temporary changes +if (options.dryRun) { + console.log( + '⚠️ NOTE: Reverting temporary package.json changes related to dry-run publishing...', + ); + execaSync('git', [ + 'checkout', + 'packages/**/package.json', + 'package.json', + 'yarn.lock', + ]); + console.log( + '✅ Reverted temporary package.json changes related to dry-run publishing\n', + ); +} + // eslint-disable-next-line no-process-exit process.exit( // If any of the individual project publish tasks returned a non-zero exit code, exit with code 1 diff --git a/yarn.lock b/yarn.lock index 8aa27852b08f..b1c732c57839 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3709,21 +3709,21 @@ __metadata: languageName: node linkType: hard -"@eslint/config-array@npm:^0.20.0": - version: 0.20.0 - resolution: "@eslint/config-array@npm:0.20.0" +"@eslint/config-array@npm:^0.21.0": + version: 0.21.0 + resolution: "@eslint/config-array@npm:0.21.0" dependencies: "@eslint/object-schema": ^2.1.6 debug: ^4.3.1 minimatch: ^3.1.2 - checksum: 55824ea31f0502166a6fea97176c9c25089a0354474cdc72a5f739b1cf6925f44f667bf8f4f3a9dabf1112ab0fa671778ca3f96f1499f31ec42caf84cae55005 + checksum: 84d3ae7cb755af94dc158a74389f4c560757b13f2bb908f598f927b87b70a38e8152015ea2e9557c1b4afc5130ee1356f6cad682050d67aae0468bbef98bc3a8 languageName: node linkType: hard -"@eslint/config-helpers@npm:^0.2.1": - version: 0.2.2 - resolution: "@eslint/config-helpers@npm:0.2.2" - checksum: 8a4091a2c8af5366513647ccad720f184c1b723f04c086755797a3a5cac69dc9013bc8a75453d9fc188fc4364460f0eae9f1584b77b28082e0d26bf48356ae8f +"@eslint/config-helpers@npm:^0.3.1": + version: 0.3.1 + resolution: "@eslint/config-helpers@npm:0.3.1" + checksum: b95c239264078a430761afb344402d517134289a7d8b69a6ff1378ebe5eec9da6ad22b5e6d193b9e02899aeda30817ac47178d5927247092cc6d73a52f8d07c9 languageName: node linkType: hard @@ -3736,6 +3736,15 @@ __metadata: languageName: node linkType: hard +"@eslint/core@npm:^0.15.2": + version: 0.15.2 + resolution: "@eslint/core@npm:0.15.2" + dependencies: + "@types/json-schema": ^7.0.15 + checksum: 535fc4e657760851826ceae325a72dde664b99189bd975715de3526db655c66d7a35b72dbb1c7641ab9201ed4e2130f79c5be51f96c820b5407c3766dcf94f23 + languageName: node + linkType: hard + "@eslint/eslintrc@npm:^3.2.0, @eslint/eslintrc@npm:^3.3.1": version: 3.3.1 resolution: "@eslint/eslintrc@npm:3.3.1" @@ -3753,10 +3762,10 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:*, @eslint/js@npm:9.26.0, @eslint/js@npm:^9.26.0": - version: 9.26.0 - resolution: "@eslint/js@npm:9.26.0" - checksum: 40d30f7e5c1585168fc552f953b824f822847d496340e9251e8812b5f401cee129799b3337386f0ea402048b66378c607889d6edf018e19453ae2bcdfc0e2de9 +"@eslint/js@npm:*, @eslint/js@npm:9.34.0, @eslint/js@npm:^9.26.0": + version: 9.34.0 + resolution: "@eslint/js@npm:9.34.0" + checksum: 933d4ba321b1abc83eecde40eb703871ce00f133eedec54cf928b7fedb61706174dd526997c3f151776922412e3d95cb3634f97ef7b5861b4908f9992f403a63 languageName: node linkType: hard @@ -3767,7 +3776,7 @@ __metadata: languageName: node linkType: hard -"@eslint/plugin-kit@npm:^0.2.7, @eslint/plugin-kit@npm:^0.2.8": +"@eslint/plugin-kit@npm:^0.2.7": version: 0.2.8 resolution: "@eslint/plugin-kit@npm:0.2.8" dependencies: @@ -3777,6 +3786,16 @@ __metadata: languageName: node linkType: hard +"@eslint/plugin-kit@npm:^0.3.5": + version: 0.3.5 + resolution: "@eslint/plugin-kit@npm:0.3.5" + dependencies: + "@eslint/core": ^0.15.2 + levn: ^0.4.1 + checksum: 1808d7e2538335b8e4536ef372840e93468ecc6f4a5bf72ad665795290b6a8a72f51ef4ffd8bcfc601b133a5d5f67b59ab256d945f8c825c5c307aad29efaf86 + languageName: node + linkType: hard + "@gerrit0/mini-shiki@npm:^3.2.2": version: 3.3.0 resolution: "@gerrit0/mini-shiki@npm:3.3.0" @@ -3881,6 +3900,29 @@ __metadata: languageName: node linkType: hard +"@jest/diff-sequences@npm:30.0.1": + version: 30.0.1 + resolution: "@jest/diff-sequences@npm:30.0.1" + checksum: e5f931ca69c15a9b3a9b23b723f51ffc97f031b2f3ca37f901333dab99bd4dfa1ad4192a5cd893cd1272f7602eb09b9cfb5fc6bb62a0232c96fb8b5e96094970 + languageName: node + linkType: hard + +"@jest/get-type@npm:30.1.0": + version: 30.1.0 + resolution: "@jest/get-type@npm:30.1.0" + checksum: e2a95fbb49ce2d15547db8af5602626caf9b05f62a5e583b4a2de9bd93a2bfe7175f9bbb2b8a5c3909ce261d467b6991d7265bb1d547cb60e7e97f571f361a70 + languageName: node + linkType: hard + +"@jest/schemas@npm:30.0.5": + version: 30.0.5 + resolution: "@jest/schemas@npm:30.0.5" + dependencies: + "@sinclair/typebox": ^0.34.0 + checksum: 7a4fc4166f688947c22d81e61aaf2cb22f178dbf6ee806b0931b75136899d426a72a8330762f27f0cf6f79da0d2a56f49a22fe09f5f80df95a683ed237a0f3b0 + languageName: node + linkType: hard + "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -4058,24 +4100,6 @@ __metadata: languageName: node linkType: hard -"@modelcontextprotocol/sdk@npm:^1.8.0": - version: 1.11.0 - resolution: "@modelcontextprotocol/sdk@npm:1.11.0" - dependencies: - content-type: ^1.0.5 - cors: ^2.8.5 - cross-spawn: ^7.0.3 - eventsource: ^3.0.2 - express: ^5.0.1 - express-rate-limit: ^7.5.0 - pkce-challenge: ^5.0.0 - raw-body: ^3.0.0 - zod: ^3.23.8 - zod-to-json-schema: ^3.24.1 - checksum: d0ab5cfac6eedc1c2a2bf63fec97021f174a8eb265e8f4189cfa353d4c267cd94359a819b8012e64f4e93ebc283546c2ecc3cb8034a3924b483b85595c5d24a0 - languageName: node - linkType: hard - "@napi-rs/wasm-runtime@npm:0.2.4": version: 0.2.4 resolution: "@napi-rs/wasm-runtime@npm:0.2.4" @@ -4087,7 +4111,7 @@ __metadata: languageName: node linkType: hard -"@napi-rs/wasm-runtime@npm:^1.0.1": +"@napi-rs/wasm-runtime@npm:^1.0.3": version: 1.0.3 resolution: "@napi-rs/wasm-runtime@npm:1.0.3" dependencies: @@ -4143,27 +4167,28 @@ __metadata: languageName: node linkType: hard -"@nx/devkit@npm:21.2.3": - version: 21.2.3 - resolution: "@nx/devkit@npm:21.2.3" +"@nx/devkit@npm:21.4.1": + version: 21.4.1 + resolution: "@nx/devkit@npm:21.4.1" dependencies: ejs: ^3.1.7 enquirer: ~2.3.6 ignore: ^5.0.4 minimatch: 9.0.3 + nx: 21.4.1 semver: ^7.5.3 tmp: ~0.2.1 tslib: ^2.3.0 yargs-parser: 21.1.1 peerDependencies: - nx: 21.2.3 - checksum: 3db18a83a29d5577e89266880d6449d9e1677512adc47bdf0a2fd4448809247a964658555a809ca8f8c3197560e5f08ae3cf12244b9b87329cea6399406ca25a + nx: ">= 20 <= 22" + checksum: 37797c3d785de1068b6ae5a646d8ac1e716ce691c4b05fba489b9c89f432ce1ab716a3e27fe262f8d75cdcdec0a576594b34bee7d61c6b1a94d2ca9f9cfe83ed languageName: node linkType: hard -"@nx/js@npm:21.2.3": - version: 21.2.3 - resolution: "@nx/js@npm:21.2.3" +"@nx/js@npm:21.4.1": + version: 21.4.1 + resolution: "@nx/js@npm:21.4.1" dependencies: "@babel/core": ^7.23.2 "@babel/plugin-proposal-decorators": ^7.22.7 @@ -4172,8 +4197,8 @@ __metadata: "@babel/preset-env": ^7.23.2 "@babel/preset-typescript": ^7.22.5 "@babel/runtime": ^7.22.6 - "@nx/devkit": 21.2.3 - "@nx/workspace": 21.2.3 + "@nx/devkit": 21.4.1 + "@nx/workspace": 21.4.1 "@zkochan/js-yaml": 0.0.7 babel-plugin-const-enum: ^1.0.1 babel-plugin-macros: ^3.1.0 @@ -4199,247 +4224,248 @@ __metadata: peerDependenciesMeta: verdaccio: optional: true - checksum: d2a79a4ca57bd6251362c8853dddc52f6ea51b7da96913611f73ae44e24d562d9f9d8afa002822932d3e246b605f69e363c5c22db8962d14d5e210eae84a9693 + checksum: 5fc495473f2c522da73c7be62f0f59824bbf321dc6f151e2e3d9d23271a496c4a9f9f978c518843899046218334d3b44e2072277661572f952c8bc0a0b2f2674 languageName: node linkType: hard -"@nx/nx-darwin-arm64@npm:21.2.3": - version: 21.2.3 - resolution: "@nx/nx-darwin-arm64@npm:21.2.3" +"@nx/nx-darwin-arm64@npm:21.4.1": + version: 21.4.1 + resolution: "@nx/nx-darwin-arm64@npm:21.4.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@nx/nx-darwin-x64@npm:21.2.3": - version: 21.2.3 - resolution: "@nx/nx-darwin-x64@npm:21.2.3" +"@nx/nx-darwin-x64@npm:21.4.1": + version: 21.4.1 + resolution: "@nx/nx-darwin-x64@npm:21.4.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@nx/nx-freebsd-x64@npm:21.2.3": - version: 21.2.3 - resolution: "@nx/nx-freebsd-x64@npm:21.2.3" +"@nx/nx-freebsd-x64@npm:21.4.1": + version: 21.4.1 + resolution: "@nx/nx-freebsd-x64@npm:21.4.1" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@nx/nx-linux-arm-gnueabihf@npm:21.2.3": - version: 21.2.3 - resolution: "@nx/nx-linux-arm-gnueabihf@npm:21.2.3" +"@nx/nx-linux-arm-gnueabihf@npm:21.4.1": + version: 21.4.1 + resolution: "@nx/nx-linux-arm-gnueabihf@npm:21.4.1" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@nx/nx-linux-arm64-gnu@npm:21.2.3": - version: 21.2.3 - resolution: "@nx/nx-linux-arm64-gnu@npm:21.2.3" +"@nx/nx-linux-arm64-gnu@npm:21.4.1": + version: 21.4.1 + resolution: "@nx/nx-linux-arm64-gnu@npm:21.4.1" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@nx/nx-linux-arm64-musl@npm:21.2.3": - version: 21.2.3 - resolution: "@nx/nx-linux-arm64-musl@npm:21.2.3" +"@nx/nx-linux-arm64-musl@npm:21.4.1": + version: 21.4.1 + resolution: "@nx/nx-linux-arm64-musl@npm:21.4.1" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@nx/nx-linux-x64-gnu@npm:21.2.3": - version: 21.2.3 - resolution: "@nx/nx-linux-x64-gnu@npm:21.2.3" +"@nx/nx-linux-x64-gnu@npm:21.4.1": + version: 21.4.1 + resolution: "@nx/nx-linux-x64-gnu@npm:21.4.1" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@nx/nx-linux-x64-musl@npm:21.2.3": - version: 21.2.3 - resolution: "@nx/nx-linux-x64-musl@npm:21.2.3" +"@nx/nx-linux-x64-musl@npm:21.4.1": + version: 21.4.1 + resolution: "@nx/nx-linux-x64-musl@npm:21.4.1" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@nx/nx-win32-arm64-msvc@npm:21.2.3": - version: 21.2.3 - resolution: "@nx/nx-win32-arm64-msvc@npm:21.2.3" +"@nx/nx-win32-arm64-msvc@npm:21.4.1": + version: 21.4.1 + resolution: "@nx/nx-win32-arm64-msvc@npm:21.4.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@nx/nx-win32-x64-msvc@npm:21.2.3": - version: 21.2.3 - resolution: "@nx/nx-win32-x64-msvc@npm:21.2.3" +"@nx/nx-win32-x64-msvc@npm:21.4.1": + version: 21.4.1 + resolution: "@nx/nx-win32-x64-msvc@npm:21.4.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@nx/vite@npm:21.2.3": - version: 21.2.3 - resolution: "@nx/vite@npm:21.2.3" +"@nx/vite@npm:21.4.1": + version: 21.4.1 + resolution: "@nx/vite@npm:21.4.1" dependencies: - "@nx/devkit": 21.2.3 - "@nx/js": 21.2.3 + "@nx/devkit": 21.4.1 + "@nx/js": 21.4.1 "@phenomnomnominal/tsquery": ~5.0.1 - "@swc/helpers": ~0.5.0 ajv: ^8.0.0 enquirer: ~2.3.6 picomatch: 4.0.2 semver: ^7.6.3 tsconfig-paths: ^4.1.2 + tslib: ^2.3.0 peerDependencies: vite: ^5.0.0 || ^6.0.0 vitest: ^1.3.1 || ^2.0.0 || ^3.0.0 - checksum: cc274da699980816d52927ac037e9f206978853fc4d97c98a08eef8ae542b8ec392e19cf39a2c66889da392853d1553f2179dd8fb223833b3729dcfd8cd68e75 + checksum: 40311ee8134f484d32785087c3bfc5bec250e956b6098bd42613add7342b0fe2fa385286e427e120f744835daf58bbf7b7dff32dcb07ee046ed2b11ea8eadc46 languageName: node linkType: hard -"@nx/workspace@npm:21.2.3": - version: 21.2.3 - resolution: "@nx/workspace@npm:21.2.3" +"@nx/workspace@npm:21.4.1": + version: 21.4.1 + resolution: "@nx/workspace@npm:21.4.1" dependencies: - "@nx/devkit": 21.2.3 + "@nx/devkit": 21.4.1 "@zkochan/js-yaml": 0.0.7 chalk: ^4.1.0 enquirer: ~2.3.6 - nx: 21.2.3 + nx: 21.4.1 picomatch: 4.0.2 + semver: ^7.6.3 tslib: ^2.3.0 yargs-parser: 21.1.1 - checksum: 6381eb146a0b9b4786452161f7179fcb5f1301b2aa0608ab522b02a0a8e73cdf80097ba68f454dbea94aae31c3b2eb7b23572152fb6cfb6df31b1d6f5a42b4f2 + checksum: fab3ca1f4c780191e5b8855df7a36dd687a6413de89677f11d4b89517421288db26a3d01d2d76fc1ceb551171a6cb72706dfa780ad408ec038d94311e4bb75eb languageName: node linkType: hard -"@oxc-resolver/binding-android-arm-eabi@npm:11.6.1": - version: 11.6.1 - resolution: "@oxc-resolver/binding-android-arm-eabi@npm:11.6.1" +"@oxc-resolver/binding-android-arm-eabi@npm:11.7.1": + version: 11.7.1 + resolution: "@oxc-resolver/binding-android-arm-eabi@npm:11.7.1" conditions: os=android & cpu=arm languageName: node linkType: hard -"@oxc-resolver/binding-android-arm64@npm:11.6.1": - version: 11.6.1 - resolution: "@oxc-resolver/binding-android-arm64@npm:11.6.1" +"@oxc-resolver/binding-android-arm64@npm:11.7.1": + version: 11.7.1 + resolution: "@oxc-resolver/binding-android-arm64@npm:11.7.1" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@oxc-resolver/binding-darwin-arm64@npm:11.6.1": - version: 11.6.1 - resolution: "@oxc-resolver/binding-darwin-arm64@npm:11.6.1" +"@oxc-resolver/binding-darwin-arm64@npm:11.7.1": + version: 11.7.1 + resolution: "@oxc-resolver/binding-darwin-arm64@npm:11.7.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@oxc-resolver/binding-darwin-x64@npm:11.6.1": - version: 11.6.1 - resolution: "@oxc-resolver/binding-darwin-x64@npm:11.6.1" +"@oxc-resolver/binding-darwin-x64@npm:11.7.1": + version: 11.7.1 + resolution: "@oxc-resolver/binding-darwin-x64@npm:11.7.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@oxc-resolver/binding-freebsd-x64@npm:11.6.1": - version: 11.6.1 - resolution: "@oxc-resolver/binding-freebsd-x64@npm:11.6.1" +"@oxc-resolver/binding-freebsd-x64@npm:11.7.1": + version: 11.7.1 + resolution: "@oxc-resolver/binding-freebsd-x64@npm:11.7.1" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@oxc-resolver/binding-linux-arm-gnueabihf@npm:11.6.1": - version: 11.6.1 - resolution: "@oxc-resolver/binding-linux-arm-gnueabihf@npm:11.6.1" +"@oxc-resolver/binding-linux-arm-gnueabihf@npm:11.7.1": + version: 11.7.1 + resolution: "@oxc-resolver/binding-linux-arm-gnueabihf@npm:11.7.1" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@oxc-resolver/binding-linux-arm-musleabihf@npm:11.6.1": - version: 11.6.1 - resolution: "@oxc-resolver/binding-linux-arm-musleabihf@npm:11.6.1" +"@oxc-resolver/binding-linux-arm-musleabihf@npm:11.7.1": + version: 11.7.1 + resolution: "@oxc-resolver/binding-linux-arm-musleabihf@npm:11.7.1" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@oxc-resolver/binding-linux-arm64-gnu@npm:11.6.1": - version: 11.6.1 - resolution: "@oxc-resolver/binding-linux-arm64-gnu@npm:11.6.1" +"@oxc-resolver/binding-linux-arm64-gnu@npm:11.7.1": + version: 11.7.1 + resolution: "@oxc-resolver/binding-linux-arm64-gnu@npm:11.7.1" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@oxc-resolver/binding-linux-arm64-musl@npm:11.6.1": - version: 11.6.1 - resolution: "@oxc-resolver/binding-linux-arm64-musl@npm:11.6.1" +"@oxc-resolver/binding-linux-arm64-musl@npm:11.7.1": + version: 11.7.1 + resolution: "@oxc-resolver/binding-linux-arm64-musl@npm:11.7.1" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@oxc-resolver/binding-linux-ppc64-gnu@npm:11.6.1": - version: 11.6.1 - resolution: "@oxc-resolver/binding-linux-ppc64-gnu@npm:11.6.1" +"@oxc-resolver/binding-linux-ppc64-gnu@npm:11.7.1": + version: 11.7.1 + resolution: "@oxc-resolver/binding-linux-ppc64-gnu@npm:11.7.1" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@oxc-resolver/binding-linux-riscv64-gnu@npm:11.6.1": - version: 11.6.1 - resolution: "@oxc-resolver/binding-linux-riscv64-gnu@npm:11.6.1" +"@oxc-resolver/binding-linux-riscv64-gnu@npm:11.7.1": + version: 11.7.1 + resolution: "@oxc-resolver/binding-linux-riscv64-gnu@npm:11.7.1" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@oxc-resolver/binding-linux-riscv64-musl@npm:11.6.1": - version: 11.6.1 - resolution: "@oxc-resolver/binding-linux-riscv64-musl@npm:11.6.1" +"@oxc-resolver/binding-linux-riscv64-musl@npm:11.7.1": + version: 11.7.1 + resolution: "@oxc-resolver/binding-linux-riscv64-musl@npm:11.7.1" conditions: os=linux & cpu=riscv64 & libc=musl languageName: node linkType: hard -"@oxc-resolver/binding-linux-s390x-gnu@npm:11.6.1": - version: 11.6.1 - resolution: "@oxc-resolver/binding-linux-s390x-gnu@npm:11.6.1" +"@oxc-resolver/binding-linux-s390x-gnu@npm:11.7.1": + version: 11.7.1 + resolution: "@oxc-resolver/binding-linux-s390x-gnu@npm:11.7.1" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@oxc-resolver/binding-linux-x64-gnu@npm:11.6.1": - version: 11.6.1 - resolution: "@oxc-resolver/binding-linux-x64-gnu@npm:11.6.1" +"@oxc-resolver/binding-linux-x64-gnu@npm:11.7.1": + version: 11.7.1 + resolution: "@oxc-resolver/binding-linux-x64-gnu@npm:11.7.1" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@oxc-resolver/binding-linux-x64-musl@npm:11.6.1": - version: 11.6.1 - resolution: "@oxc-resolver/binding-linux-x64-musl@npm:11.6.1" +"@oxc-resolver/binding-linux-x64-musl@npm:11.7.1": + version: 11.7.1 + resolution: "@oxc-resolver/binding-linux-x64-musl@npm:11.7.1" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@oxc-resolver/binding-wasm32-wasi@npm:11.6.1": - version: 11.6.1 - resolution: "@oxc-resolver/binding-wasm32-wasi@npm:11.6.1" +"@oxc-resolver/binding-wasm32-wasi@npm:11.7.1": + version: 11.7.1 + resolution: "@oxc-resolver/binding-wasm32-wasi@npm:11.7.1" dependencies: - "@napi-rs/wasm-runtime": ^1.0.1 + "@napi-rs/wasm-runtime": ^1.0.3 conditions: cpu=wasm32 languageName: node linkType: hard -"@oxc-resolver/binding-win32-arm64-msvc@npm:11.6.1": - version: 11.6.1 - resolution: "@oxc-resolver/binding-win32-arm64-msvc@npm:11.6.1" +"@oxc-resolver/binding-win32-arm64-msvc@npm:11.7.1": + version: 11.7.1 + resolution: "@oxc-resolver/binding-win32-arm64-msvc@npm:11.7.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@oxc-resolver/binding-win32-ia32-msvc@npm:11.6.1": - version: 11.6.1 - resolution: "@oxc-resolver/binding-win32-ia32-msvc@npm:11.6.1" +"@oxc-resolver/binding-win32-ia32-msvc@npm:11.7.1": + version: 11.7.1 + resolution: "@oxc-resolver/binding-win32-ia32-msvc@npm:11.7.1" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@oxc-resolver/binding-win32-x64-msvc@npm:11.6.1": - version: 11.6.1 - resolution: "@oxc-resolver/binding-win32-x64-msvc@npm:11.6.1" +"@oxc-resolver/binding-win32-x64-msvc@npm:11.7.1": + version: 11.7.1 + resolution: "@oxc-resolver/binding-win32-x64-msvc@npm:11.7.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -4845,6 +4871,13 @@ __metadata: languageName: node linkType: hard +"@sinclair/typebox@npm:^0.34.0": + version: 0.34.41 + resolution: "@sinclair/typebox@npm:0.34.41" + checksum: dbcfdc55caef47ef5b728c2bc6979e50d00ee943b63eaaf604551be9a039187cdd256d810b790e61fdf63131df54b236149aef739d83bfe9a594a9863ac28115 + languageName: node + linkType: hard + "@sindresorhus/is@npm:^4.6.0": version: 4.6.0 resolution: "@sindresorhus/is@npm:4.6.0" @@ -5161,15 +5194,6 @@ __metadata: languageName: node linkType: hard -"@swc/helpers@npm:~0.5.0": - version: 0.5.17 - resolution: "@swc/helpers@npm:0.5.17" - dependencies: - tslib: ^2.8.0 - checksum: 085e13b536323945dfc3a270debf270bda6dfc80a1c68fd2ed08f7cbdfcbdaeead402650b5b10722e54e4a24193afc8a3c6f63d3d6d719974e7470557fb415bd - languageName: node - linkType: hard - "@swc/types@npm:^0.1.23": version: 0.1.24 resolution: "@swc/types@npm:0.1.24" @@ -5806,19 +5830,19 @@ __metadata: languageName: unknown linkType: soft -"@typescript-eslint/eslint-plugin@8.41.0, @typescript-eslint/eslint-plugin@workspace:*, @typescript-eslint/eslint-plugin@workspace:^, @typescript-eslint/eslint-plugin@workspace:packages/eslint-plugin": +"@typescript-eslint/eslint-plugin@8.42.0, @typescript-eslint/eslint-plugin@workspace:*, @typescript-eslint/eslint-plugin@workspace:^, @typescript-eslint/eslint-plugin@workspace:packages/eslint-plugin": version: 0.0.0-use.local resolution: "@typescript-eslint/eslint-plugin@workspace:packages/eslint-plugin" dependencies: "@eslint-community/regexpp": ^4.10.0 "@types/mdast": ^4.0.3 "@types/natural-compare": "*" - "@typescript-eslint/rule-schema-to-typescript-types": 8.41.0 - "@typescript-eslint/rule-tester": 8.41.0 - "@typescript-eslint/scope-manager": 8.41.0 - "@typescript-eslint/type-utils": 8.41.0 - "@typescript-eslint/utils": 8.41.0 - "@typescript-eslint/visitor-keys": 8.41.0 + "@typescript-eslint/rule-schema-to-typescript-types": 8.42.0 + "@typescript-eslint/rule-tester": 8.42.0 + "@typescript-eslint/scope-manager": 8.42.0 + "@typescript-eslint/type-utils": 8.42.0 + "@typescript-eslint/utils": 8.42.0 + "@typescript-eslint/visitor-keys": 8.42.0 "@vitest/coverage-v8": ^3.1.3 ajv: ^6.12.6 cross-fetch: "*" @@ -5841,7 +5865,7 @@ __metadata: unist-util-visit: ^5.0.0 vitest: ^3.1.3 peerDependencies: - "@typescript-eslint/parser": ^8.41.0 + "@typescript-eslint/parser": ^8.42.0 eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" languageName: unknown @@ -5857,14 +5881,14 @@ __metadata: languageName: unknown linkType: soft -"@typescript-eslint/parser@8.41.0, @typescript-eslint/parser@workspace:*, @typescript-eslint/parser@workspace:^, @typescript-eslint/parser@workspace:packages/parser": +"@typescript-eslint/parser@8.42.0, @typescript-eslint/parser@workspace:*, @typescript-eslint/parser@workspace:^, @typescript-eslint/parser@workspace:packages/parser": version: 0.0.0-use.local resolution: "@typescript-eslint/parser@workspace:packages/parser" dependencies: - "@typescript-eslint/scope-manager": 8.41.0 - "@typescript-eslint/types": 8.41.0 - "@typescript-eslint/typescript-estree": 8.41.0 - "@typescript-eslint/visitor-keys": 8.41.0 + "@typescript-eslint/scope-manager": 8.42.0 + "@typescript-eslint/types": 8.42.0 + "@typescript-eslint/typescript-estree": 8.42.0 + "@typescript-eslint/visitor-keys": 8.42.0 "@vitest/coverage-v8": ^3.1.3 debug: ^4.3.4 eslint: "*" @@ -5878,12 +5902,12 @@ __metadata: languageName: unknown linkType: soft -"@typescript-eslint/project-service@8.41.0, @typescript-eslint/project-service@workspace:packages/project-service": +"@typescript-eslint/project-service@8.42.0, @typescript-eslint/project-service@workspace:packages/project-service": version: 0.0.0-use.local resolution: "@typescript-eslint/project-service@workspace:packages/project-service" dependencies: - "@typescript-eslint/tsconfig-utils": ^8.41.0 - "@typescript-eslint/types": ^8.41.0 + "@typescript-eslint/tsconfig-utils": ^8.42.0 + "@typescript-eslint/types": ^8.42.0 "@vitest/coverage-v8": ^3.1.3 debug: ^4.3.4 rimraf: "*" @@ -5894,12 +5918,12 @@ __metadata: languageName: unknown linkType: soft -"@typescript-eslint/rule-schema-to-typescript-types@8.41.0, @typescript-eslint/rule-schema-to-typescript-types@workspace:*, @typescript-eslint/rule-schema-to-typescript-types@workspace:packages/rule-schema-to-typescript-types": +"@typescript-eslint/rule-schema-to-typescript-types@8.42.0, @typescript-eslint/rule-schema-to-typescript-types@workspace:*, @typescript-eslint/rule-schema-to-typescript-types@workspace:packages/rule-schema-to-typescript-types": version: 0.0.0-use.local resolution: "@typescript-eslint/rule-schema-to-typescript-types@workspace:packages/rule-schema-to-typescript-types" dependencies: - "@typescript-eslint/type-utils": 8.41.0 - "@typescript-eslint/utils": 8.41.0 + "@typescript-eslint/type-utils": 8.42.0 + "@typescript-eslint/utils": 8.42.0 "@vitest/coverage-v8": ^3.1.3 eslint: "*" natural-compare: ^1.4.0 @@ -5910,15 +5934,15 @@ __metadata: languageName: unknown linkType: soft -"@typescript-eslint/rule-tester@8.41.0, @typescript-eslint/rule-tester@workspace:*, @typescript-eslint/rule-tester@workspace:packages/rule-tester": +"@typescript-eslint/rule-tester@8.42.0, @typescript-eslint/rule-tester@workspace:*, @typescript-eslint/rule-tester@workspace:packages/rule-tester": version: 0.0.0-use.local resolution: "@typescript-eslint/rule-tester@workspace:packages/rule-tester" dependencies: "@types/json-stable-stringify-without-jsonify": ^1.0.2 "@types/lodash.merge": 4.6.9 - "@typescript-eslint/parser": 8.41.0 - "@typescript-eslint/typescript-estree": 8.41.0 - "@typescript-eslint/utils": 8.41.0 + "@typescript-eslint/parser": 8.42.0 + "@typescript-eslint/typescript-estree": 8.42.0 + "@typescript-eslint/utils": 8.42.0 "@vitest/coverage-v8": ^3.1.3 ajv: ^6.12.6 eslint: "*" @@ -5933,13 +5957,13 @@ __metadata: languageName: unknown linkType: soft -"@typescript-eslint/scope-manager@8.41.0, @typescript-eslint/scope-manager@workspace:*, @typescript-eslint/scope-manager@workspace:^, @typescript-eslint/scope-manager@workspace:packages/scope-manager": +"@typescript-eslint/scope-manager@8.42.0, @typescript-eslint/scope-manager@workspace:*, @typescript-eslint/scope-manager@workspace:^, @typescript-eslint/scope-manager@workspace:packages/scope-manager": version: 0.0.0-use.local resolution: "@typescript-eslint/scope-manager@workspace:packages/scope-manager" dependencies: - "@typescript-eslint/types": 8.41.0 - "@typescript-eslint/typescript-estree": 8.41.0 - "@typescript-eslint/visitor-keys": 8.41.0 + "@typescript-eslint/types": 8.42.0 + "@typescript-eslint/typescript-estree": 8.42.0 + "@typescript-eslint/visitor-keys": 8.42.0 "@vitest/coverage-v8": ^3.1.3 "@vitest/pretty-format": ^3.1.3 eslint: "*" @@ -5950,7 +5974,7 @@ __metadata: languageName: unknown linkType: soft -"@typescript-eslint/tsconfig-utils@8.41.0, @typescript-eslint/tsconfig-utils@^8.41.0, @typescript-eslint/tsconfig-utils@workspace:packages/tsconfig-utils": +"@typescript-eslint/tsconfig-utils@8.42.0, @typescript-eslint/tsconfig-utils@^8.42.0, @typescript-eslint/tsconfig-utils@workspace:packages/tsconfig-utils": version: 0.0.0-use.local resolution: "@typescript-eslint/tsconfig-utils@workspace:packages/tsconfig-utils" dependencies: @@ -5963,14 +5987,14 @@ __metadata: languageName: unknown linkType: soft -"@typescript-eslint/type-utils@8.41.0, @typescript-eslint/type-utils@workspace:*, @typescript-eslint/type-utils@workspace:packages/type-utils": +"@typescript-eslint/type-utils@8.42.0, @typescript-eslint/type-utils@workspace:*, @typescript-eslint/type-utils@workspace:packages/type-utils": version: 0.0.0-use.local resolution: "@typescript-eslint/type-utils@workspace:packages/type-utils" dependencies: - "@typescript-eslint/parser": 8.41.0 - "@typescript-eslint/types": 8.41.0 - "@typescript-eslint/typescript-estree": 8.41.0 - "@typescript-eslint/utils": 8.41.0 + "@typescript-eslint/parser": 8.42.0 + "@typescript-eslint/types": 8.42.0 + "@typescript-eslint/typescript-estree": 8.42.0 + "@typescript-eslint/utils": 8.42.0 "@vitest/coverage-v8": ^3.1.3 ajv: ^6.12.6 debug: ^4.3.4 @@ -5985,7 +6009,7 @@ __metadata: languageName: unknown linkType: soft -"@typescript-eslint/types@8.41.0, @typescript-eslint/types@^8.11.0, @typescript-eslint/types@^8.34.1, @typescript-eslint/types@^8.41.0, @typescript-eslint/types@workspace:*, @typescript-eslint/types@workspace:^, @typescript-eslint/types@workspace:packages/types": +"@typescript-eslint/types@8.42.0, @typescript-eslint/types@^8.11.0, @typescript-eslint/types@^8.34.1, @typescript-eslint/types@^8.42.0, @typescript-eslint/types@workspace:*, @typescript-eslint/types@workspace:^, @typescript-eslint/types@workspace:packages/types": version: 0.0.0-use.local resolution: "@typescript-eslint/types@workspace:packages/types" dependencies: @@ -6006,10 +6030,10 @@ __metadata: "@eslint/compat": ^1.2.4 "@eslint/eslintrc": ^3.2.0 "@eslint/js": ^9.26.0 - "@nx/devkit": 21.2.3 - "@nx/js": 21.2.3 - "@nx/vite": 21.2.3 - "@nx/workspace": 21.2.3 + "@nx/devkit": 21.4.1 + "@nx/js": 21.4.1 + "@nx/vite": 21.4.1 + "@nx/workspace": 21.4.1 "@swc/core": ^1.4.12 "@types/debug": ^4.1.12 "@types/eslint-plugin-jsx-a11y": ^6.10.0 @@ -6045,7 +6069,7 @@ __metadata: knip: ^5.41.1 lint-staged: ^15.2.2 markdownlint-cli: ^0.45.0 - nx: 21.2.3 + nx: 21.4.1 prettier: 3.6.2 rimraf: ^5.0.5 semver: 7.7.0 @@ -6058,15 +6082,15 @@ __metadata: languageName: unknown linkType: soft -"@typescript-eslint/typescript-estree@8.41.0, @typescript-eslint/typescript-estree@workspace:*, @typescript-eslint/typescript-estree@workspace:^, @typescript-eslint/typescript-estree@workspace:packages/typescript-estree": +"@typescript-eslint/typescript-estree@8.42.0, @typescript-eslint/typescript-estree@workspace:*, @typescript-eslint/typescript-estree@workspace:^, @typescript-eslint/typescript-estree@workspace:packages/typescript-estree": version: 0.0.0-use.local resolution: "@typescript-eslint/typescript-estree@workspace:packages/typescript-estree" dependencies: "@types/is-glob": ^4.0.4 - "@typescript-eslint/project-service": 8.41.0 - "@typescript-eslint/tsconfig-utils": 8.41.0 - "@typescript-eslint/types": 8.41.0 - "@typescript-eslint/visitor-keys": 8.41.0 + "@typescript-eslint/project-service": 8.42.0 + "@typescript-eslint/tsconfig-utils": 8.42.0 + "@typescript-eslint/types": 8.42.0 + "@typescript-eslint/visitor-keys": 8.42.0 "@vitest/coverage-v8": ^3.1.3 debug: ^4.3.4 eslint: "*" @@ -6084,14 +6108,14 @@ __metadata: languageName: unknown linkType: soft -"@typescript-eslint/utils@8.41.0, @typescript-eslint/utils@^8.24.1, @typescript-eslint/utils@^8.34.1, @typescript-eslint/utils@workspace:*, @typescript-eslint/utils@workspace:^, @typescript-eslint/utils@workspace:packages/utils": +"@typescript-eslint/utils@8.42.0, @typescript-eslint/utils@^8.24.1, @typescript-eslint/utils@^8.34.1, @typescript-eslint/utils@workspace:*, @typescript-eslint/utils@workspace:^, @typescript-eslint/utils@workspace:packages/utils": version: 0.0.0-use.local resolution: "@typescript-eslint/utils@workspace:packages/utils" dependencies: "@eslint-community/eslint-utils": ^4.7.0 - "@typescript-eslint/scope-manager": 8.41.0 - "@typescript-eslint/types": 8.41.0 - "@typescript-eslint/typescript-estree": 8.41.0 + "@typescript-eslint/scope-manager": 8.42.0 + "@typescript-eslint/types": 8.42.0 + "@typescript-eslint/typescript-estree": 8.42.0 "@vitest/coverage-v8": ^3.1.3 eslint: "*" rimraf: "*" @@ -6103,11 +6127,11 @@ __metadata: languageName: unknown linkType: soft -"@typescript-eslint/visitor-keys@8.41.0, @typescript-eslint/visitor-keys@workspace:*, @typescript-eslint/visitor-keys@workspace:packages/visitor-keys": +"@typescript-eslint/visitor-keys@8.42.0, @typescript-eslint/visitor-keys@workspace:*, @typescript-eslint/visitor-keys@workspace:packages/visitor-keys": version: 0.0.0-use.local resolution: "@typescript-eslint/visitor-keys@workspace:packages/visitor-keys" dependencies: - "@typescript-eslint/types": 8.41.0 + "@typescript-eslint/types": 8.42.0 "@vitest/coverage-v8": ^3.1.3 eslint: "*" eslint-visitor-keys: ^4.2.1 @@ -6483,16 +6507,6 @@ __metadata: languageName: node linkType: hard -"accepts@npm:^2.0.0": - version: 2.0.0 - resolution: "accepts@npm:2.0.0" - dependencies: - mime-types: ^3.0.0 - negotiator: ^1.0.0 - checksum: 49fe6c050cb6f6ff4e771b4d88324fca4d3127865f2473872e818dca127d809ba3aa8fdfc7acb51dd3c5bade7311ca6b8cfff7015ea6db2f7eb9c8444d223a4f - languageName: node - linkType: hard - "accepts@npm:~1.3.4, accepts@npm:~1.3.5, accepts@npm:~1.3.8": version: 1.3.8 resolution: "accepts@npm:1.3.8" @@ -6528,7 +6542,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.0, acorn@npm:^8.0.4, acorn@npm:^8.14.0, acorn@npm:^8.15.0, acorn@npm:^8.8.2": +"acorn@npm:^8.0.0, acorn@npm:^8.0.4, acorn@npm:^8.15.0, acorn@npm:^8.8.2": version: 8.15.0 resolution: "acorn@npm:8.15.0" bin: @@ -6768,7 +6782,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^5.0.0": +"ansi-styles@npm:^5.2.0": version: 5.2.0 resolution: "ansi-styles@npm:5.2.0" checksum: d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 @@ -7266,23 +7280,6 @@ __metadata: languageName: node linkType: hard -"body-parser@npm:^2.2.0": - version: 2.2.0 - resolution: "body-parser@npm:2.2.0" - dependencies: - bytes: ^3.1.2 - content-type: ^1.0.5 - debug: ^4.4.0 - http-errors: ^2.0.0 - iconv-lite: ^0.6.3 - on-finished: ^2.4.1 - qs: ^6.14.0 - raw-body: ^3.0.0 - type-is: ^2.0.0 - checksum: 7fe3a2d288f0b632528d6ccb90052d1a9492c5b79d5716d32c8de1f5fb8237b0d31ee5050e1d0b7ff143a492ff151804612c6e2686a222a1d4c9e2e6531b8fb2 - languageName: node - linkType: hard - "bonjour-service@npm:^1.0.11": version: 1.0.12 resolution: "bonjour-service@npm:1.0.12" @@ -7423,7 +7420,7 @@ __metadata: languageName: node linkType: hard -"bytes@npm:3.1.2, bytes@npm:^3.1.2": +"bytes@npm:3.1.2": version: 3.1.2 resolution: "bytes@npm:3.1.2" checksum: e4bcd3948d289c5127591fbedf10c0b639ccbf00243504e4e127374a15c3bc8eed0d28d4aaab08ff6f1cf2abc0cce6ba3085ed32f4f90e82a5683ce0014e1b6e @@ -8129,16 +8126,7 @@ __metadata: languageName: node linkType: hard -"content-disposition@npm:^1.0.0": - version: 1.0.0 - resolution: "content-disposition@npm:1.0.0" - dependencies: - safe-buffer: 5.2.1 - checksum: b27e2579fefe0ecf78238bb652fbc750671efce8344f0c6f05235b12433e6a965adb40906df1ac1fdde23e8f9f0e58385e44640e633165420f3f47d830ae0398 - languageName: node - linkType: hard - -"content-type@npm:^1.0.5, content-type@npm:~1.0.4": +"content-type@npm:~1.0.4": version: 1.0.5 resolution: "content-type@npm:1.0.5" checksum: 566271e0a251642254cde0f845f9dd4f9856e52d988f4eb0d0dcffbb7a1f8ec98de7a5215fc628f3bce30fe2fb6fd2bc064b562d721658c59b544e2d34ea2766 @@ -8159,13 +8147,6 @@ __metadata: languageName: node linkType: hard -"cookie-signature@npm:^1.2.1": - version: 1.2.2 - resolution: "cookie-signature@npm:1.2.2" - checksum: 1ad4f9b3907c9f3673a0f0a07c0a23da7909ac6c9204c5d80a0ec102fe50ccc45f27fdf496361840d6c132c5bb0037122c0a381f856d070183d1ebe3e5e041ff - languageName: node - linkType: hard - "cookie@npm:0.5.0": version: 0.5.0 resolution: "cookie@npm:0.5.0" @@ -8173,13 +8154,6 @@ __metadata: languageName: node linkType: hard -"cookie@npm:^0.7.1": - version: 0.7.2 - resolution: "cookie@npm:0.7.2" - checksum: 9bf8555e33530affd571ea37b615ccad9b9a34febbf2c950c86787088eb00a8973690833b0f8ebd6b69b753c62669ea60cec89178c1fb007bf0749abed74f93e - languageName: node - linkType: hard - "copy-text-to-clipboard@npm:^3.2.0": version: 3.2.0 resolution: "copy-text-to-clipboard@npm:3.2.0" @@ -8248,16 +8222,6 @@ __metadata: languageName: node linkType: hard -"cors@npm:^2.8.5": - version: 2.8.5 - resolution: "cors@npm:2.8.5" - dependencies: - object-assign: ^4 - vary: ^1 - checksum: ced838404ccd184f61ab4fdc5847035b681c90db7ac17e428f3d81d69e2989d2b680cc254da0e2554f5ed4f8a341820a1ce3d1c16b499f6e2f47a1b9b07b5006 - languageName: node - linkType: hard - "cosmiconfig@npm:^6.0.0": version: 6.0.0 resolution: "cosmiconfig@npm:6.0.0" @@ -8833,7 +8797,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.4.0, debug@npm:^4.4.1": +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.4.0, debug@npm:^4.4.1": version: 4.4.1 resolution: "debug@npm:4.4.1" dependencies: @@ -8984,7 +8948,7 @@ __metadata: languageName: node linkType: hard -"depd@npm:2.0.0, depd@npm:^2.0.0": +"depd@npm:2.0.0": version: 2.0.0 resolution: "depd@npm:2.0.0" checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a @@ -9054,13 +9018,6 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^29.6.3": - version: 29.6.3 - resolution: "diff-sequences@npm:29.6.3" - checksum: f4914158e1f2276343d98ff5b31fc004e7304f5470bf0f1adb2ac6955d85a531a6458d33e87667f98f6ae52ebd3891bb47d420bb48a5bd8b7a27ee25b20e33aa - languageName: node - linkType: hard - "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -9318,13 +9275,6 @@ __metadata: languageName: node linkType: hard -"encodeurl@npm:^2.0.0": - version: 2.0.0 - resolution: "encodeurl@npm:2.0.0" - checksum: abf5cd51b78082cf8af7be6785813c33b6df2068ce5191a40ca8b1afe6a86f9230af9a9ce694a5ce4665955e5c1120871826df9c128a642e09c58d592e2807fe - languageName: node - linkType: hard - "encodeurl@npm:~1.0.2": version: 1.0.2 resolution: "encodeurl@npm:1.0.2" @@ -9989,13 +9939,13 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^8.3.0": - version: 8.3.0 - resolution: "eslint-scope@npm:8.3.0" +"eslint-scope@npm:^8.4.0": + version: 8.4.0 + resolution: "eslint-scope@npm:8.4.0" dependencies: esrecurse: ^4.3.0 estraverse: ^5.2.0 - checksum: 57a58b6716533e25d527089826c4add89a047aecf75e4a88fee05f113ef5a72b85392b304a69bf670646cc3e068354aec70361b9718c2453949a05fc4d9bfe73 + checksum: cf88f42cd5e81490d549dc6d350fe01e6fe420f9d9ea34f134bb359b030e3c4ef888d36667632e448937fe52449f7181501df48c08200e3d3b0fee250d05364e languageName: node linkType: hard @@ -10013,7 +9963,7 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^4.2.0, eslint-visitor-keys@npm:^4.2.1": +"eslint-visitor-keys@npm:^4.2.1": version: 4.2.1 resolution: "eslint-visitor-keys@npm:4.2.1" checksum: 3a77e3f99a49109f6fb2c5b7784bc78f9743b834d238cdba4d66c602c6b52f19ed7bcd0a5c5dbbeae3a8689fd785e76c001799f53d2228b278282cf9f699fff5 @@ -10021,21 +9971,20 @@ __metadata: linkType: hard "eslint@npm:*, eslint@npm:^9.15.0, eslint@npm:^9.26.0": - version: 9.26.0 - resolution: "eslint@npm:9.26.0" + version: 9.34.0 + resolution: "eslint@npm:9.34.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@eslint-community/regexpp": ^4.12.1 - "@eslint/config-array": ^0.20.0 - "@eslint/config-helpers": ^0.2.1 - "@eslint/core": ^0.13.0 + "@eslint/config-array": ^0.21.0 + "@eslint/config-helpers": ^0.3.1 + "@eslint/core": ^0.15.2 "@eslint/eslintrc": ^3.3.1 - "@eslint/js": 9.26.0 - "@eslint/plugin-kit": ^0.2.8 + "@eslint/js": 9.34.0 + "@eslint/plugin-kit": ^0.3.5 "@humanfs/node": ^0.16.6 "@humanwhocodes/module-importer": ^1.0.1 "@humanwhocodes/retry": ^0.4.2 - "@modelcontextprotocol/sdk": ^1.8.0 "@types/estree": ^1.0.6 "@types/json-schema": ^7.0.15 ajv: ^6.12.4 @@ -10043,9 +9992,9 @@ __metadata: cross-spawn: ^7.0.6 debug: ^4.3.2 escape-string-regexp: ^4.0.0 - eslint-scope: ^8.3.0 - eslint-visitor-keys: ^4.2.0 - espree: ^10.3.0 + eslint-scope: ^8.4.0 + eslint-visitor-keys: ^4.2.1 + espree: ^10.4.0 esquery: ^1.5.0 esutils: ^2.0.2 fast-deep-equal: ^3.1.3 @@ -10060,7 +10009,6 @@ __metadata: minimatch: ^3.1.2 natural-compare: ^1.4.0 optionator: ^0.9.3 - zod: ^3.24.2 peerDependencies: jiti: "*" peerDependenciesMeta: @@ -10068,18 +10016,18 @@ __metadata: optional: true bin: eslint: bin/eslint.js - checksum: 9f17db3a3b759ca2435a19ced30f77354761fe159bb357bc7edcc716f4985fd2b8b84e667a85f9ee9ea3cb0f9718e029a822f97ae6b70421c5880c8b3b2214be + checksum: 6de97f6197774821a086783e1bd73b9518c4eb8896165e448a8bb2359142c63cad40faa5dc79bcdc28fab20b57e1376ccbb76a6ae081da5e94baa18d2d3b92fe languageName: node linkType: hard -"espree@npm:^10.0.1, espree@npm:^10.3.0": - version: 10.3.0 - resolution: "espree@npm:10.3.0" +"espree@npm:^10.0.1, espree@npm:^10.3.0, espree@npm:^10.4.0": + version: 10.4.0 + resolution: "espree@npm:10.4.0" dependencies: - acorn: ^8.14.0 + acorn: ^8.15.0 acorn-jsx: ^5.3.2 - eslint-visitor-keys: ^4.2.0 - checksum: 63e8030ff5a98cea7f8b3e3a1487c998665e28d674af08b9b3100ed991670eb3cbb0e308c4548c79e03762753838fbe530c783f17309450d6b47a889fee72bef + eslint-visitor-keys: ^4.2.1 + checksum: 5f9d0d7c81c1bca4bfd29a55270067ff9d575adb8c729a5d7f779c2c7b910bfc68ccf8ec19b29844b707440fc159a83868f22c8e87bbf7cbcb225ed067df6c85 languageName: node linkType: hard @@ -10214,7 +10162,7 @@ __metadata: languageName: node linkType: hard -"etag@npm:^1.8.1, etag@npm:~1.8.1": +"etag@npm:~1.8.1": version: 1.8.1 resolution: "etag@npm:1.8.1" checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff @@ -10252,22 +10200,6 @@ __metadata: languageName: node linkType: hard -"eventsource-parser@npm:^3.0.1": - version: 3.0.1 - resolution: "eventsource-parser@npm:3.0.1" - checksum: 737f78d1330d7c257125c6b2bd374bb50c5588ac81eb83c05cd6af81fce295bd40fd3d3bb3357ba028a688267363f07912a7e6044656033cde7e8f836d840e40 - languageName: node - linkType: hard - -"eventsource@npm:^3.0.2": - version: 3.0.6 - resolution: "eventsource@npm:3.0.6" - dependencies: - eventsource-parser: ^3.0.1 - checksum: ac3bc3cc339b03c46688fde0a340957b8efd7a4d90592ac25b0cd497de2c8ee77259f1162d1beade6e7b37e932d31b5daec323a96215e392c4f5c535a29db36f - languageName: node - linkType: hard - "execa@npm:7.2.0": version: 7.2.0 resolution: "execa@npm:7.2.0" @@ -10333,15 +10265,6 @@ __metadata: languageName: node linkType: hard -"express-rate-limit@npm:^7.5.0": - version: 7.5.0 - resolution: "express-rate-limit@npm:7.5.0" - peerDependencies: - express: ^4.11 || 5 || ^5.0.0-beta.1 - checksum: 2807341039c111eed292e28768aff3c69515cb96ff15799976a44ead776c41931d6947fe3da3cea021fa0490700b1ab468b4832bbed7d231bed63c195d22b959 - languageName: node - linkType: hard - "express@npm:^4.17.3": version: 4.18.1 resolution: "express@npm:4.18.1" @@ -10381,41 +10304,6 @@ __metadata: languageName: node linkType: hard -"express@npm:^5.0.1": - version: 5.1.0 - resolution: "express@npm:5.1.0" - dependencies: - accepts: ^2.0.0 - body-parser: ^2.2.0 - content-disposition: ^1.0.0 - content-type: ^1.0.5 - cookie: ^0.7.1 - cookie-signature: ^1.2.1 - debug: ^4.4.0 - encodeurl: ^2.0.0 - escape-html: ^1.0.3 - etag: ^1.8.1 - finalhandler: ^2.1.0 - fresh: ^2.0.0 - http-errors: ^2.0.0 - merge-descriptors: ^2.0.0 - mime-types: ^3.0.0 - on-finished: ^2.4.1 - once: ^1.4.0 - parseurl: ^1.3.3 - proxy-addr: ^2.0.7 - qs: ^6.14.0 - range-parser: ^1.2.1 - router: ^2.2.0 - send: ^1.1.0 - serve-static: ^2.2.0 - statuses: ^2.0.1 - type-is: ^2.0.1 - vary: ^1.1.2 - checksum: 06e6141780c6c4780111f971ce062c83d4cf4862c40b43caf1d95afcbb58d7422c560503b8c9d04c7271511525d09cbdbe940bcaad63970fd4c1b9f6fd713bdb - languageName: node - linkType: hard - "extend-shallow@npm:^2.0.1": version: 2.0.1 resolution: "extend-shallow@npm:2.0.1" @@ -10616,20 +10504,6 @@ __metadata: languageName: node linkType: hard -"finalhandler@npm:^2.1.0": - version: 2.1.0 - resolution: "finalhandler@npm:2.1.0" - dependencies: - debug: ^4.4.0 - encodeurl: ^2.0.0 - escape-html: ^1.0.3 - on-finished: ^2.4.1 - parseurl: ^1.3.3 - statuses: ^2.0.1 - checksum: 27ca9cc83b1384ba37959eb95bc7e62bc0bf4d6f6af63f6d38821cf7499b113e34b23f96a2a031616817f73986f94deea67c2f558de9daf406790c181a2501df - languageName: node - linkType: hard - "find-cache-dir@npm:^4.0.0": version: 4.0.0 resolution: "find-cache-dir@npm:4.0.0" @@ -10798,14 +10672,14 @@ __metadata: languageName: node linkType: hard -"formatly@npm:^0.2.4": - version: 0.2.4 - resolution: "formatly@npm:0.2.4" +"formatly@npm:^0.3.0": + version: 0.3.0 + resolution: "formatly@npm:0.3.0" dependencies: fd-package-json: ^2.0.0 bin: formatly: bin/index.mjs - checksum: 1d5b501a83cb5778e357594b1f3c839de2bae1ee92dc5c0fc367f2dc7f9c3cddb52934c9f261e9ef2cac08931c4a8d2beb1d0f034c9f0b212e81b7e83faca996 + checksum: ef2bf133c048195fc30ced2a20e9acb5251a2a7cf7c2bf67afc71f6bbad78a3f8816b814ee22ec6db1bca7b339fb0d1eddbf168c7d36cc53459c664ff73e8d0d languageName: node linkType: hard @@ -10830,13 +10704,6 @@ __metadata: languageName: node linkType: hard -"fresh@npm:^2.0.0": - version: 2.0.0 - resolution: "fresh@npm:2.0.0" - checksum: 38b9828352c6271e2a0dd8bdd985d0100dbbc4eb8b6a03286071dd6f7d96cfaacd06d7735701ad9a95870eb3f4555e67c08db1dcfe24c2e7bb87383c72fae1d2 - languageName: node - linkType: hard - "front-matter@npm:^4.0.2": version: 4.0.2 resolution: "front-matter@npm:4.0.2" @@ -11732,7 +11599,7 @@ __metadata: languageName: node linkType: hard -"http-errors@npm:2.0.0, http-errors@npm:^2.0.0": +"http-errors@npm:2.0.0": version: 2.0.0 resolution: "http-errors@npm:2.0.0" dependencies: @@ -11872,7 +11739,7 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3": +"iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: @@ -12438,13 +12305,6 @@ __metadata: languageName: node linkType: hard -"is-promise@npm:^4.0.0": - version: 4.0.0 - resolution: "is-promise@npm:4.0.0" - checksum: 0b46517ad47b00b6358fd6553c83ec1f6ba9acd7ffb3d30a0bf519c5c69e7147c132430452351b8a9fc198f8dd6c4f76f8e6f5a7f100f8c77d57d9e0f4261a8a - languageName: node - linkType: hard - "is-reference@npm:^3.0.0": version: 3.0.2 resolution: "is-reference@npm:3.0.2" @@ -12720,22 +12580,15 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^29.4.1": - version: 29.7.0 - resolution: "jest-diff@npm:29.7.0" +"jest-diff@npm:^30.0.2": + version: 30.1.2 + resolution: "jest-diff@npm:30.1.2" dependencies: - chalk: ^4.0.0 - diff-sequences: ^29.6.3 - jest-get-type: ^29.6.3 - pretty-format: ^29.7.0 - checksum: 08e24a9dd43bfba1ef07a6374e5af138f53137b79ec3d5cc71a2303515335898888fa5409959172e1e05de966c9e714368d15e8994b0af7441f0721ee8e1bb77 - languageName: node - linkType: hard - -"jest-get-type@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-get-type@npm:29.6.3" - checksum: 88ac9102d4679d768accae29f1e75f592b760b44277df288ad76ce5bf038c3f5ce3719dea8aa0f035dac30e9eb034b848ce716b9183ad7cc222d029f03e92205 + "@jest/diff-sequences": 30.0.1 + "@jest/get-type": 30.1.0 + chalk: ^4.1.2 + pretty-format: 30.0.5 + checksum: 15f350b664f5fe00190cbd36dbe2fd477010bf471b9fb3b2b0b1a40ce4241b10595a05203fcb86aea7720d2be225419efc3d1afa921966b0371d33120c563eec languageName: node linkType: hard @@ -12796,12 +12649,12 @@ __metadata: languageName: node linkType: hard -"jiti@npm:^2.4.2": - version: 2.4.2 - resolution: "jiti@npm:2.4.2" +"jiti@npm:^2.5.1": + version: 2.5.1 + resolution: "jiti@npm:2.5.1" bin: jiti: lib/jiti-cli.mjs - checksum: c6c30c7b6b293e9f26addfb332b63d964a9f143cdd2cf5e946dbe5143db89f7c1b50ad9223b77fb1f6ddb0b9c5ecef995fea024ecf7d2861d285d779cde66e1e + checksum: db901281e01013c27d46d6c5cde5fa817082f32232c92099043df11e135d00ccd1b4356a9ba356a3293e91855bd7437b6df5ae0ae6ad2c384d9bd59df926633c languageName: node linkType: hard @@ -13039,19 +12892,19 @@ __metadata: linkType: hard "knip@npm:^5.41.1": - version: 5.62.0 - resolution: "knip@npm:5.62.0" + version: 5.63.0 + resolution: "knip@npm:5.63.0" dependencies: "@nodelib/fs.walk": ^1.2.3 fast-glob: ^3.3.3 - formatly: ^0.2.4 - jiti: ^2.4.2 + formatly: ^0.3.0 + jiti: ^2.5.1 js-yaml: ^4.1.0 minimist: ^1.2.8 - oxc-resolver: ^11.1.0 + oxc-resolver: ^11.6.2 picocolors: ^1.1.1 picomatch: ^4.0.1 - smol-toml: ^1.3.4 + smol-toml: ^1.4.1 strip-json-comments: 5.0.2 zod: ^3.22.4 zod-validation-error: ^3.0.3 @@ -13061,7 +12914,7 @@ __metadata: bin: knip: bin/knip.js knip-bun: bin/knip-bun.js - checksum: a7b32e2d264b951e65ec7e0009bd27f1bacbe9be8703fa897eb520427b7414babf4c718876f3f01208d8479189061dc921edf44ad849d85b2c6689c858a79ebe + checksum: bbb8eda2469c3f2eddfa19e746732984bd6ac0485e34b650933f172ceecc8e6ac84ff8a481c85dcc3792cba3c135c63ab13f0159c4df4872ad3accb6c0a4cb84 languageName: node linkType: hard @@ -13888,13 +13741,6 @@ __metadata: languageName: node linkType: hard -"media-typer@npm:^1.1.0": - version: 1.1.0 - resolution: "media-typer@npm:1.1.0" - checksum: a58dd60804df73c672942a7253ccc06815612326dc1c0827984b1a21704466d7cde351394f47649e56cf7415e6ee2e26e000e81b51b3eebb5a93540e8bf93cbd - languageName: node - linkType: hard - "memfs@npm:^3.1.2, memfs@npm:^3.4.3": version: 3.5.3 resolution: "memfs@npm:3.5.3" @@ -13918,13 +13764,6 @@ __metadata: languageName: node linkType: hard -"merge-descriptors@npm:^2.0.0": - version: 2.0.0 - resolution: "merge-descriptors@npm:2.0.0" - checksum: e383332e700a94682d0125a36c8be761142a1320fc9feeb18e6e36647c9edf064271645f5669b2c21cf352116e561914fd8aa831b651f34db15ef4038c86696a - languageName: node - linkType: hard - "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -14491,7 +14330,7 @@ __metadata: languageName: node linkType: hard -"mime-db@npm:>= 1.43.0 < 2, mime-db@npm:^1.54.0": +"mime-db@npm:>= 1.43.0 < 2": version: 1.54.0 resolution: "mime-db@npm:1.54.0" checksum: e99aaf2f23f5bd607deb08c83faba5dd25cf2fec90a7cc5b92d8260867ee08dab65312e1a589e60093dc7796d41e5fae013268418482f1db4c7d52d0a0960ac9 @@ -14523,15 +14362,6 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^3.0.0, mime-types@npm:^3.0.1": - version: 3.0.1 - resolution: "mime-types@npm:3.0.1" - dependencies: - mime-db: ^1.54.0 - checksum: 8d497ad5cb2dd1210ac7d049b5de94af0b24b45a314961e145b44389344604d54752f03bc00bf880c0da60a214be6fb6d423d318104f02c28d95dd8ebeea4fb4 - languageName: node - linkType: hard - "mime@npm:1.6.0": version: 1.6.0 resolution: "mime@npm:1.6.0" @@ -14860,13 +14690,6 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:^1.0.0": - version: 1.0.0 - resolution: "negotiator@npm:1.0.0" - checksum: 20ebfe79b2d2e7cf9cbc8239a72662b584f71164096e6e8896c8325055497c96f6b80cd22c258e8a2f2aa382a787795ec3ee8b37b422a302c7d4381b0d5ecfbb - languageName: node - linkType: hard - "neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" @@ -15061,21 +14884,21 @@ __metadata: languageName: node linkType: hard -"nx@npm:21.2.3": - version: 21.2.3 - resolution: "nx@npm:21.2.3" +"nx@npm:21.4.1": + version: 21.4.1 + resolution: "nx@npm:21.4.1" dependencies: "@napi-rs/wasm-runtime": 0.2.4 - "@nx/nx-darwin-arm64": 21.2.3 - "@nx/nx-darwin-x64": 21.2.3 - "@nx/nx-freebsd-x64": 21.2.3 - "@nx/nx-linux-arm-gnueabihf": 21.2.3 - "@nx/nx-linux-arm64-gnu": 21.2.3 - "@nx/nx-linux-arm64-musl": 21.2.3 - "@nx/nx-linux-x64-gnu": 21.2.3 - "@nx/nx-linux-x64-musl": 21.2.3 - "@nx/nx-win32-arm64-msvc": 21.2.3 - "@nx/nx-win32-x64-msvc": 21.2.3 + "@nx/nx-darwin-arm64": 21.4.1 + "@nx/nx-darwin-x64": 21.4.1 + "@nx/nx-freebsd-x64": 21.4.1 + "@nx/nx-linux-arm-gnueabihf": 21.4.1 + "@nx/nx-linux-arm64-gnu": 21.4.1 + "@nx/nx-linux-arm64-musl": 21.4.1 + "@nx/nx-linux-x64-gnu": 21.4.1 + "@nx/nx-linux-x64-musl": 21.4.1 + "@nx/nx-win32-arm64-msvc": 21.4.1 + "@nx/nx-win32-x64-msvc": 21.4.1 "@yarnpkg/lockfile": ^1.1.0 "@yarnpkg/parsers": 3.0.2 "@zkochan/js-yaml": 0.0.7 @@ -15091,7 +14914,7 @@ __metadata: flat: ^5.0.2 front-matter: ^4.0.2 ignore: ^5.0.4 - jest-diff: ^29.4.1 + jest-diff: ^30.0.2 jsonc-parser: 3.2.0 lines-and-columns: 2.0.3 minimatch: 9.0.3 @@ -15142,11 +14965,11 @@ __metadata: bin: nx: bin/nx.js nx-cloud: bin/nx-cloud.js - checksum: faaef03d763f6da739f8108c3f8fe4ad5dd30926d15b279508266e8a272164b5d53598fb3ff5b636ee665bb8e9782ccc2a3134cb6c977b577c5c16d5f20722bd + checksum: babf4d271031fad5e300509310dd65cc1f3198c37a880ceb0c2eec105a61fcd903fa6fba4f597669b08b1c92445998f82f5f2cffab1a94ff45b015389bcb0515 languageName: node linkType: hard -"object-assign@npm:^4, object-assign@npm:^4.1.1": +"object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f @@ -15234,7 +15057,7 @@ __metadata: languageName: node linkType: hard -"on-finished@npm:2.4.1, on-finished@npm:^2.4.1": +"on-finished@npm:2.4.1": version: 2.4.1 resolution: "on-finished@npm:2.4.1" dependencies: @@ -15347,29 +15170,29 @@ __metadata: languageName: node linkType: hard -"oxc-resolver@npm:^11.1.0": - version: 11.6.1 - resolution: "oxc-resolver@npm:11.6.1" - dependencies: - "@oxc-resolver/binding-android-arm-eabi": 11.6.1 - "@oxc-resolver/binding-android-arm64": 11.6.1 - "@oxc-resolver/binding-darwin-arm64": 11.6.1 - "@oxc-resolver/binding-darwin-x64": 11.6.1 - "@oxc-resolver/binding-freebsd-x64": 11.6.1 - "@oxc-resolver/binding-linux-arm-gnueabihf": 11.6.1 - "@oxc-resolver/binding-linux-arm-musleabihf": 11.6.1 - "@oxc-resolver/binding-linux-arm64-gnu": 11.6.1 - "@oxc-resolver/binding-linux-arm64-musl": 11.6.1 - "@oxc-resolver/binding-linux-ppc64-gnu": 11.6.1 - "@oxc-resolver/binding-linux-riscv64-gnu": 11.6.1 - "@oxc-resolver/binding-linux-riscv64-musl": 11.6.1 - "@oxc-resolver/binding-linux-s390x-gnu": 11.6.1 - "@oxc-resolver/binding-linux-x64-gnu": 11.6.1 - "@oxc-resolver/binding-linux-x64-musl": 11.6.1 - "@oxc-resolver/binding-wasm32-wasi": 11.6.1 - "@oxc-resolver/binding-win32-arm64-msvc": 11.6.1 - "@oxc-resolver/binding-win32-ia32-msvc": 11.6.1 - "@oxc-resolver/binding-win32-x64-msvc": 11.6.1 +"oxc-resolver@npm:^11.6.2": + version: 11.7.1 + resolution: "oxc-resolver@npm:11.7.1" + dependencies: + "@oxc-resolver/binding-android-arm-eabi": 11.7.1 + "@oxc-resolver/binding-android-arm64": 11.7.1 + "@oxc-resolver/binding-darwin-arm64": 11.7.1 + "@oxc-resolver/binding-darwin-x64": 11.7.1 + "@oxc-resolver/binding-freebsd-x64": 11.7.1 + "@oxc-resolver/binding-linux-arm-gnueabihf": 11.7.1 + "@oxc-resolver/binding-linux-arm-musleabihf": 11.7.1 + "@oxc-resolver/binding-linux-arm64-gnu": 11.7.1 + "@oxc-resolver/binding-linux-arm64-musl": 11.7.1 + "@oxc-resolver/binding-linux-ppc64-gnu": 11.7.1 + "@oxc-resolver/binding-linux-riscv64-gnu": 11.7.1 + "@oxc-resolver/binding-linux-riscv64-musl": 11.7.1 + "@oxc-resolver/binding-linux-s390x-gnu": 11.7.1 + "@oxc-resolver/binding-linux-x64-gnu": 11.7.1 + "@oxc-resolver/binding-linux-x64-musl": 11.7.1 + "@oxc-resolver/binding-wasm32-wasi": 11.7.1 + "@oxc-resolver/binding-win32-arm64-msvc": 11.7.1 + "@oxc-resolver/binding-win32-ia32-msvc": 11.7.1 + "@oxc-resolver/binding-win32-x64-msvc": 11.7.1 napi-postinstall: ^0.3.0 dependenciesMeta: "@oxc-resolver/binding-android-arm-eabi": @@ -15410,7 +15233,7 @@ __metadata: optional: true "@oxc-resolver/binding-win32-x64-msvc": optional: true - checksum: 9cc70a0a88ed79c186b9f1bc450509bb7a0032b4ff72e5b0e674d8de167c7ea4d82751c6099b024ca2ae673f02352ce83cd0cee7119c2f5cbc4d48d18c982b38 + checksum: 44b60d188ec8f27c193d056317944ad70f2aca5e1435ee4a03d24a07c5b4c460ed57a6a855a3f4b268014d374059199a17ae2c14452e08d2ad6a53c665bf1180 languageName: node linkType: hard @@ -15618,7 +15441,7 @@ __metadata: languageName: node linkType: hard -"parseurl@npm:^1.3.3, parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": +"parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": version: 1.3.3 resolution: "parseurl@npm:1.3.3" checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 @@ -15734,13 +15557,6 @@ __metadata: languageName: node linkType: hard -"path-to-regexp@npm:^8.0.0": - version: 8.2.0 - resolution: "path-to-regexp@npm:8.2.0" - checksum: 56e13e45962e776e9e7cd72e87a441cfe41f33fd539d097237ceb16adc922281136ca12f5a742962e33d8dda9569f630ba594de56d8b7b6e49adf31803c5e771 - languageName: node - linkType: hard - "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" @@ -15810,13 +15626,6 @@ __metadata: languageName: node linkType: hard -"pkce-challenge@npm:^5.0.0": - version: 5.0.0 - resolution: "pkce-challenge@npm:5.0.0" - checksum: b5cc239f67ed525b49a23a86fdb8f49e3cdb9fd8f5e8612a15f35b553a18e5a43c99db474ffc6232e084c8328d4f2da51557e51ee4e7f8be42f710215df36f3f - languageName: node - linkType: hard - "pkg-dir@npm:^7.0.0": version: 7.0.0 resolution: "pkg-dir@npm:7.0.0" @@ -16725,14 +16534,14 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.7.0": - version: 29.7.0 - resolution: "pretty-format@npm:29.7.0" +"pretty-format@npm:30.0.5": + version: 30.0.5 + resolution: "pretty-format@npm:30.0.5" dependencies: - "@jest/schemas": ^29.6.3 - ansi-styles: ^5.0.0 - react-is: ^18.0.0 - checksum: 032c1602383e71e9c0c02a01bbd25d6759d60e9c7cf21937dde8357aa753da348fcec5def5d1002c9678a8524d5fe099ad98861286550ef44de8808cc61e43b6 + "@jest/schemas": 30.0.5 + ansi-styles: ^5.2.0 + react-is: ^18.3.1 + checksum: 0772b7432ff4083483dc12b5b9a1904a1a8f2654936af2a5fa3ba5dfa994a4c7ef843f132152894fd96203a09e0ef80dab2e99dabebd510da86948ed91238fed languageName: node linkType: hard @@ -16828,7 +16637,7 @@ __metadata: languageName: node linkType: hard -"proxy-addr@npm:^2.0.7, proxy-addr@npm:~2.0.7": +"proxy-addr@npm:~2.0.7": version: 2.0.7 resolution: "proxy-addr@npm:2.0.7" dependencies: @@ -16877,15 +16686,6 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.14.0": - version: 6.14.0 - resolution: "qs@npm:6.14.0" - dependencies: - side-channel: ^1.1.0 - checksum: 189b52ad4e9a0da1a16aff4c58b2a554a8dad9bd7e287c7da7446059b49ca2e33a49e570480e8be406b87fccebf134f51c373cbce36c8c83859efa0c9b71d635 - languageName: node - linkType: hard - "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -16944,18 +16744,6 @@ __metadata: languageName: node linkType: hard -"raw-body@npm:^3.0.0": - version: 3.0.0 - resolution: "raw-body@npm:3.0.0" - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.6.3 - unpipe: 1.0.0 - checksum: 25b7cf7964183db322e819050d758a5abd0f22c51e9f37884ea44a9ed6855a1fb61f8caa8ec5b61d07e69f54db43dbbc08ad98ef84556696d6aa806be247af0e - languageName: node - linkType: hard - "raw-loader@npm:^4.0.2": version: 4.0.2 resolution: "raw-loader@npm:4.0.2" @@ -17063,10 +16851,10 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^18.0.0": - version: 18.2.0 - resolution: "react-is@npm:18.2.0" - checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e +"react-is@npm:^18.3.1": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: e20fe84c86ff172fc8d898251b7cc2c43645d108bf96d0b8edf39b98f9a2cae97b40520ee7ed8ee0085ccc94736c4886294456033304151c3f94978cec03df21 languageName: node linkType: hard @@ -17853,19 +17641,6 @@ __metadata: languageName: node linkType: hard -"router@npm:^2.2.0": - version: 2.2.0 - resolution: "router@npm:2.2.0" - dependencies: - debug: ^4.4.0 - depd: ^2.0.0 - is-promise: ^4.0.0 - parseurl: ^1.3.3 - path-to-regexp: ^8.0.0 - checksum: 4c3bec8011ed10bb07d1ee860bc715f245fff0fdff991d8319741d2932d89c3fe0a56766b4fa78e95444bc323fd2538e09c8e43bfbd442c2a7fab67456df7fa5 - languageName: node - linkType: hard - "rtlcss@npm:^4.1.0": version: 4.1.1 resolution: "rtlcss@npm:4.1.1" @@ -18114,25 +17889,6 @@ __metadata: languageName: node linkType: hard -"send@npm:^1.1.0, send@npm:^1.2.0": - version: 1.2.0 - resolution: "send@npm:1.2.0" - dependencies: - debug: ^4.3.5 - encodeurl: ^2.0.0 - escape-html: ^1.0.3 - etag: ^1.8.1 - fresh: ^2.0.0 - http-errors: ^2.0.0 - mime-types: ^3.0.1 - ms: ^2.1.3 - on-finished: ^2.4.1 - range-parser: ^1.2.1 - statuses: ^2.0.1 - checksum: 7557ee6c1c257a1c53b402b4fba8ed88c95800b08abe085fc79e0824869274f213491be2efb2df3de228c70e4d40ce2019e5f77b58c42adb97149135420c3f34 - languageName: node - linkType: hard - "serialize-javascript@npm:^4.0.0": version: 4.0.0 resolution: "serialize-javascript@npm:4.0.0" @@ -18193,18 +17949,6 @@ __metadata: languageName: node linkType: hard -"serve-static@npm:^2.2.0": - version: 2.2.0 - resolution: "serve-static@npm:2.2.0" - dependencies: - encodeurl: ^2.0.0 - escape-html: ^1.0.3 - parseurl: ^1.3.3 - send: ^1.2.0 - checksum: 74f39e88f0444aa6732aae3b9597739c47552adecdc83fa32aa42555e76f1daad480d791af73894655c27a2d378275a461e691cead33fb35d8b976f1e2d24665 - languageName: node - linkType: hard - "set-blocking@npm:^2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" @@ -18477,7 +18221,7 @@ __metadata: languageName: node linkType: hard -"smol-toml@npm:^1.3.4, smol-toml@npm:^1.4.1": +"smol-toml@npm:^1.4.1": version: 1.4.2 resolution: "smol-toml@npm:1.4.2" checksum: f12d3fbc2d49396ec523170828a5c9a89bc7740eb7b205f8d8553af18629d936474c1ce55b70c7839aa239a11252e16fd1c3fc955b966b81c9dec00155df4f85 @@ -18685,7 +18429,7 @@ __metadata: languageName: node linkType: hard -"statuses@npm:2.0.1, statuses@npm:^2.0.1": +"statuses@npm:2.0.1": version: 2.0.1 resolution: "statuses@npm:2.0.1" checksum: 18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb @@ -19444,7 +19188,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.3, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.6.0, tslib@npm:^2.8.0": +"tslib@npm:^2.0.3, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.6.0": version: 2.8.1 resolution: "tslib@npm:2.8.1" checksum: e4aba30e632b8c8902b47587fd13345e2827fa639e7c3121074d5ee0880723282411a8838f830b55100cbe4517672f84a2472667d355b81e8af165a55dc6203a @@ -19504,17 +19248,6 @@ __metadata: languageName: node linkType: hard -"type-is@npm:^2.0.0, type-is@npm:^2.0.1": - version: 2.0.1 - resolution: "type-is@npm:2.0.1" - dependencies: - content-type: ^1.0.5 - media-typer: ^1.1.0 - mime-types: ^3.0.0 - checksum: 0266e7c782238128292e8c45e60037174d48c6366bb2d45e6bd6422b611c193f83409a8341518b6b5f33f8e4d5a959f38658cacfea77f0a3505b9f7ac1ddec8f - languageName: node - linkType: hard - "type-is@npm:~1.6.18": version: 1.6.18 resolution: "type-is@npm:1.6.18" @@ -19626,10 +19359,10 @@ __metadata: version: 0.0.0-use.local resolution: "typescript-eslint@workspace:packages/typescript-eslint" dependencies: - "@typescript-eslint/eslint-plugin": 8.41.0 - "@typescript-eslint/parser": 8.41.0 - "@typescript-eslint/typescript-estree": 8.41.0 - "@typescript-eslint/utils": 8.41.0 + "@typescript-eslint/eslint-plugin": 8.42.0 + "@typescript-eslint/parser": 8.42.0 + "@typescript-eslint/typescript-estree": 8.42.0 + "@typescript-eslint/utils": 8.42.0 "@vitest/coverage-v8": ^3.1.3 eslint: "*" rimraf: "*" @@ -19979,7 +19712,7 @@ __metadata: languageName: node linkType: hard -"vary@npm:^1, vary@npm:^1.1.2, vary@npm:~1.1.2": +"vary@npm:~1.1.2": version: 1.1.2 resolution: "vary@npm:1.1.2" checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b @@ -21032,15 +20765,6 @@ __metadata: languageName: node linkType: hard -"zod-to-json-schema@npm:^3.24.1": - version: 3.24.5 - resolution: "zod-to-json-schema@npm:3.24.5" - peerDependencies: - zod: ^3.24.1 - checksum: dc4e5e4c06e9a5494e4b1d8c8363ac907f9d488f36c8e4923e1e5ac4f91f737722f99200cd92a409551e7456d960734d4cabd37935234ca95e290572468ffc08 - languageName: node - linkType: hard - "zod-validation-error@npm:^3.0.3": version: 3.2.0 resolution: "zod-validation-error@npm:3.2.0" @@ -21050,7 +20774,7 @@ __metadata: languageName: node linkType: hard -"zod@npm:^3.22.4, zod@npm:^3.23.8, zod@npm:^3.24.2, zod@npm:^3.25.67": +"zod@npm:^3.22.4, zod@npm:^3.25.67": version: 3.25.67 resolution: "zod@npm:3.25.67" checksum: 56ab904d33b1cd00041ce64ae05b0628fcbfeb7e707fa31cd498a97b540135e4dfe685200c9c62aea307695ee132870b4bc34f035228ea728aa75cc96a4954cb