diff --git a/.README/rules/no-undefined-types.md b/.README/rules/no-undefined-types.md index 9fe06e459..ba26533af 100644 --- a/.README/rules/no-undefined-types.md +++ b/.README/rules/no-undefined-types.md @@ -40,7 +40,7 @@ types for a tag, the function will silently ignore that tag, leaving it to the `valid-types` rule to report parsing errors. If you define your own tags, you can use `settings.jsdoc.structuredTags` -to indicate that a tag's `name` is "namepath-defining" (and should prevent +to indicate that a tag's `name` is "name-defining" or "namepath-defining" (and should prevent reporting on use of that namepath elsewhere) and/or that a tag's `type` is `false` (and should not be checked for types). If the `type` is an array, that array's items will be considered as defined for the purposes of that tag. diff --git a/.README/settings.md b/.README/settings.md index 2fcf19650..50bfdc1c3 100644 --- a/.README/settings.md +++ b/.README/settings.md @@ -315,6 +315,7 @@ values are objects with the following optional properties: name position (non-whitespace immediately after the tag and whitespace), e.g., in `@throws This is an error`, "This" would normally be the name, but "text" allows non-name text here also. This is the default. + - `"name-defining"` - Indicates the tag adds a name to definitions. May not be an arbitrary namepath, unlike `"namepath-defining"` - `"namepath-defining"` - As with `namepath-referencing`, but also indicates the tag adds a namepath to definitions, e.g., to prevent `no-undefined-types` from reporting references to that namepath. diff --git a/docs/rules/no-undefined-types.md b/docs/rules/no-undefined-types.md index ac9804a02..f395b3b57 100644 --- a/docs/rules/no-undefined-types.md +++ b/docs/rules/no-undefined-types.md @@ -50,7 +50,7 @@ types for a tag, the function will silently ignore that tag, leaving it to the `valid-types` rule to report parsing errors. If you define your own tags, you can use `settings.jsdoc.structuredTags` -to indicate that a tag's `name` is "namepath-defining" (and should prevent +to indicate that a tag's `name` is "name-defining" or "namepath-defining" (and should prevent reporting on use of that namepath elsewhere) and/or that a tag's `type` is `false` (and should not be checked for types). If the `type` is an array, that array's items will be considered as defined for the purposes of that tag. diff --git a/docs/rules/valid-types.md b/docs/rules/valid-types.md index 4d03d2d75..8dda9c915 100644 --- a/docs/rules/valid-types.md +++ b/docs/rules/valid-types.md @@ -503,6 +503,15 @@ function quux (items) { * @param {SomeType} aName An inline {@link} tag without content. */ // Message: Inline tag "link" missing content + +/** + * With reserved word in type + * @param {Array} foo + */ +function quux() { + +} +// Message: Syntax error in type: Array ```` @@ -919,5 +928,42 @@ export function onGlobalEvent (selector, type, callback, options) { */ function a () {} // Settings: {"jsdoc":{"structuredTags":{"next":{"required":["type"]}}}} + +/** + * With reserved word in name + * @typedef {SomeType} import + */ + +/** + * With reserved word in namepath + * @param {SomeType} import + */ + +/** + * @param readonly + */ + +/** + * @param {boolean} readonly + */ + +/** + * @param {object} params + * @param {boolean} params.readonly + */ + +/** + * An object interface + * @typedef {Object} FooBar + * @property {boolean} readonly + * @property {boolean} private + * @property {boolean} public + * @property {boolean} constant + */ + +/** + * @param {object} props + * @param {string} props.is + */ ```` diff --git a/docs/settings.md b/docs/settings.md index d22a8a06b..83eff2277 100644 --- a/docs/settings.md +++ b/docs/settings.md @@ -342,6 +342,7 @@ values are objects with the following optional properties: name position (non-whitespace immediately after the tag and whitespace), e.g., in `@throws This is an error`, "This" would normally be the name, but "text" allows non-name text here also. This is the default. + - `"name-defining"` - Indicates the tag adds a name to definitions. May not be an arbitrary namepath, unlike `"namepath-defining"` - `"namepath-defining"` - As with `namepath-referencing`, but also indicates the tag adds a namepath to definitions, e.g., to prevent `no-undefined-types` from reporting references to that namepath. diff --git a/package.json b/package.json index d12d0bae1..482bc4092 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "url": "http://gajus.com" }, "dependencies": { - "@es-joy/jsdoccomment": "~0.65.2", + "@es-joy/jsdoccomment": "~0.67.2", "are-docs-informative": "^0.0.2", "comment-parser": "1.4.1", "debug": "^4.4.3", @@ -41,7 +41,7 @@ "@types/estree": "^1.0.8", "@types/json-schema": "^7.0.15", "@types/mocha": "^10.0.10", - "@types/node": "^24.6.1", + "@types/node": "^24.6.2", "@types/semver": "^7.7.1", "@types/spdx-expression-parse": "^3.0.5", "@typescript-eslint/types": "^8.45.0", @@ -52,17 +52,17 @@ "camelcase": "^8.0.0", "chai": "^6.2.0", "decamelize": "^6.0.1", - "eslint": "9.36.0", - "eslint-config-canonical": "^45.0.0", + "eslint": "9.37.0", + "eslint-config-canonical": "^45.0.1", "gitdown": "^4.1.1", "glob": "^11.0.3", "globals": "^16.4.0", "husky": "^9.1.7", - "jsdoc-type-pratt-parser": "^6.1.2", + "jsdoc-type-pratt-parser": "^6.3.2", "json-schema": "^0.4.0", "json-schema-to-typescript": "^15.0.4", "lint-staged": "^16.2.3", - "mocha": "^11.7.3", + "mocha": "^11.7.4", "open-editor": "^5.1.0", "replace": "^1.2.2", "rimraf": "^6.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6a2e1d80f..bfa523945 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: .: dependencies: '@es-joy/jsdoccomment': - specifier: ~0.65.2 - version: 0.65.2 + specifier: ~0.67.2 + version: 0.67.2 are-docs-informative: specifier: ^0.0.2 version: 0.0.2 @@ -59,7 +59,7 @@ importers: version: 7.28.4 '@babel/eslint-parser': specifier: ^7.28.4 - version: 7.28.4(@babel/core@7.28.4)(eslint@9.36.0(jiti@2.6.1)) + version: 7.28.4(@babel/core@7.28.4)(eslint@9.37.0(jiti@2.6.1)) '@babel/plugin-syntax-class-properties': specifier: ^7.12.13 version: 7.12.13(@babel/core@7.28.4) @@ -112,8 +112,8 @@ importers: specifier: ^10.0.10 version: 10.0.10 '@types/node': - specifier: ^24.6.1 - version: 24.6.1 + specifier: ^24.6.2 + version: 24.6.2 '@types/semver': specifier: ^7.7.1 version: 7.7.1 @@ -145,11 +145,11 @@ importers: specifier: ^6.0.1 version: 6.0.1 eslint: - specifier: 9.36.0 - version: 9.36.0(jiti@2.6.1) + specifier: 9.37.0 + version: 9.37.0(jiti@2.6.1) eslint-config-canonical: - specifier: ^45.0.0 - version: 45.0.0(@types/node@24.6.1)(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + specifier: ^45.0.1 + version: 45.0.1(@types/node@24.6.2)(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) gitdown: specifier: ^4.1.1 version: 4.1.1(re2@1.20.9) @@ -163,8 +163,8 @@ importers: specifier: ^9.1.7 version: 9.1.7 jsdoc-type-pratt-parser: - specifier: ^6.1.2 - version: 6.1.2 + specifier: ^6.3.2 + version: 6.3.2 json-schema: specifier: ^0.4.0 version: 0.4.0 @@ -175,8 +175,8 @@ importers: specifier: ^16.2.3 version: 16.2.3 mocha: - specifier: ^11.7.3 - version: 11.7.3 + specifier: ^11.7.4 + version: 11.7.4 open-editor: specifier: ^5.1.0 version: 5.1.0 @@ -194,7 +194,7 @@ importers: version: 5.9.3 typescript-eslint: specifier: ^8.45.0 - version: 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) packages: @@ -366,6 +366,13 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/plugin-proposal-private-methods@7.18.6': + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} @@ -789,8 +796,8 @@ packages: resolution: {integrity: sha512-yWi6sm7INEwnfS7IJvE0dU+RTrwzLPFcY7e7eGpu/l5Q9lWfQ2ROwZ0qVnc242jw2TUPsfHX3XMIISkGBv57RQ==} engines: {node: '>=20.11.0'} - '@es-joy/jsdoccomment@0.65.2': - resolution: {integrity: sha512-/rrj5oayCc7xdoQZ24Tz/+V41IDm+9ILYpTFJOZgav9vfncMNApKR0t/4d1oRXYTcyLZEcGHGOg4xBsD0Doing==} + '@es-joy/jsdoccomment@0.67.2': + resolution: {integrity: sha512-roH+w/W97L5+gXv9c9n2RrAS/KwIn/10fi7SG+gB9ZOs3pDhhpnnq8lObKCEUTWABL4JTpDXeThU3Q64VqT9UQ==} engines: {node: '>=20.11.0'} '@eslint-community/eslint-utils@4.9.0': @@ -807,8 +814,8 @@ packages: resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.3.1': - resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==} + '@eslint/config-helpers@0.4.0': + resolution: {integrity: sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/core@0.15.2': @@ -823,8 +830,8 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.36.0': - resolution: {integrity: sha512-uhCbYtYynH30iZErszX78U+nR3pJU3RHGQ57NXy5QupD4SBVwDeU8TNBy+MjMngc1UyIW9noKqsRqfjQTBU2dw==} + '@eslint/js@9.37.0': + resolution: {integrity: sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': @@ -835,6 +842,10 @@ packages: resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.4.0': + resolution: {integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@fastify/busboy@3.2.0': resolution: {integrity: sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==} @@ -1232,8 +1243,8 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@24.6.1': - resolution: {integrity: sha512-ljvjjs3DNXummeIaooB4cLBKg2U6SPI6Hjra/9rRIy7CpM0HpLtG9HptkMKAb4HYWy5S7HUvJEuWgr/y0U8SHw==} + '@types/node@24.6.2': + resolution: {integrity: sha512-d2L25Y4j+W3ZlNAeMKcy7yDsK425ibcAOO2t7aPTz6gNMH0z2GThtwENCDc0d/Pw9wgyRqE5Px1wkV7naz8ang==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -2215,8 +2226,8 @@ packages: peerDependencies: eslint: '>=6.0.0' - eslint-config-canonical@45.0.0: - resolution: {integrity: sha512-Ar0FukYoH/42WdiZOBVNdfCAJ4owQ8iAf6pXWDULHCUx2Lw+KNmfj/d3dup40LIiEnc//6anHEwwY4+KyzZPVA==} + eslint-config-canonical@45.0.1: + resolution: {integrity: sha512-NLVSc+oyDJfQewT/WnMr+wlmhZYrgBejLe/iE3qMTe1EeCUIvS/IJWQyWprQwWfUKrZwUXFu/OERg2AbbB5Vqg==} engines: {node: '>=16.0.0'} peerDependencies: eslint: ^9 @@ -2424,9 +2435,9 @@ packages: peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - eslint-plugin-react-hooks@5.2.0: - resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} - engines: {node: '>=10'} + eslint-plugin-react-hooks@6.1.0: + resolution: {integrity: sha512-72mucw/WLzEqGvL2vwE6fWR6geO6UbmDjz3eAb3pezxTpFzgbfyUeFKzmZKr9LhwUWMXfTVh1g0rKEJoyKNdoA==} + engines: {node: '>=18'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 @@ -2486,8 +2497,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.36.0: - resolution: {integrity: sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ==} + eslint@9.37.0: + resolution: {integrity: sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -2935,6 +2946,12 @@ packages: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true + hermes-estree@0.25.1: + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} + + hermes-parser@0.25.1: + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + highlight.js@10.7.3: resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} @@ -3182,6 +3199,10 @@ packages: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} @@ -3346,8 +3367,8 @@ packages: resolution: {integrity: sha512-TYzkACp/wPvDJLRY7qpHXtrhgwoAaojIOnLaaVNi+AbPU2u1kkjfKd9hXXTq0qSAGsyYXvwUXt99h9I5iCmjjw==} engines: {node: '>=12.0.0'} - jsdoc-type-pratt-parser@6.1.2: - resolution: {integrity: sha512-ruy+JcplsWkqnYq1m/qokaErhEURwf/vhdTzlPNpei7RJabVWxPxGWoCPSCP0sbsz03d590hTkjLdXjyMxH0iA==} + jsdoc-type-pratt-parser@6.3.2: + resolution: {integrity: sha512-u5bv2XxJjwoSL4jyQ+QIrFmo7tFollOnE+BDQbxWJv/m7/kSiZ/P2+E2Y2TmYmST8EeavzFzrGoG4VstTLP5bA==} engines: {node: '>=20.0.0'} jsdom@6.5.1: @@ -3678,8 +3699,8 @@ packages: engines: {node: '>=10'} hasBin: true - mocha@11.7.3: - resolution: {integrity: sha512-iorDKDzBKgVk/npVkW2S+b57ekA9+xKWijVvNpgPMl1odxeB4HavgiydLN54Lhyn/jpcM+Z/BohCzIvHmfaPCw==} + mocha@11.7.4: + resolution: {integrity: sha512-1jYAaY8x0kAZ0XszLWu14pzsf4KV740Gld4HXkhNTXwcHx4AUEDkPzgEHg9CM5dVcW+zv036tjpsEbLraPJj4w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true @@ -5077,6 +5098,15 @@ packages: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} + zod-validation-error@3.5.3: + resolution: {integrity: sha512-OT5Y8lbUadqVZCsnyFaTQ4/O2mys4tj7PqhdbBCp7McPwvIEKfPtdA6QfPeFQK2/Rz5LgwmAXRJTugBNBi0btw==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + snapshots: '@andrewbranch/untar.js@1.0.3': {} @@ -5150,11 +5180,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/eslint-parser@7.28.4(@babel/core@7.28.4)(eslint@9.36.0(jiti@2.6.1))': + '@babel/eslint-parser@7.28.4(@babel/core@7.28.4)(eslint@9.37.0(jiti@2.6.1))': dependencies: '@babel/core': 7.28.4 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) eslint-visitor-keys: 2.1.0 semver: 6.3.1 @@ -5323,6 +5353,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.4)': dependencies: '@babel/core': 7.28.4 @@ -5853,10 +5891,10 @@ snapshots: '@es-joy/jsdoc-eslint-parser@0.24.0(jiti@2.6.1)': dependencies: '@babel/core': 7.28.4 - '@babel/eslint-parser': 7.28.4(@babel/core@7.28.4)(eslint@9.36.0(jiti@2.6.1)) + '@babel/eslint-parser': 7.28.4(@babel/core@7.28.4)(eslint@9.37.0(jiti@2.6.1)) '@es-joy/jsdoccomment': 0.62.0 - '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.36.0(jiti@2.6.1) + '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.37.0(jiti@2.6.1) esquery: 1.6.0 typescript: 5.9.3 transitivePeerDependencies: @@ -5879,17 +5917,17 @@ snapshots: esquery: 1.6.0 jsdoc-type-pratt-parser: 5.9.2 - '@es-joy/jsdoccomment@0.65.2': + '@es-joy/jsdoccomment@0.67.2': dependencies: '@types/estree': 1.0.8 '@typescript-eslint/types': 8.45.0 comment-parser: 1.4.1 esquery: 1.6.0 - jsdoc-type-pratt-parser: 6.1.2 + jsdoc-type-pratt-parser: 6.3.2 - '@eslint-community/eslint-utils@4.9.0(eslint@9.36.0(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.37.0(jiti@2.6.1))': dependencies: - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -5902,7 +5940,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.3.1': {} + '@eslint/config-helpers@0.4.0': + dependencies: + '@eslint/core': 0.16.0 '@eslint/core@0.15.2': dependencies: @@ -5926,7 +5966,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.36.0': {} + '@eslint/js@9.37.0': {} '@eslint/object-schema@2.1.6': {} @@ -5935,18 +5975,23 @@ snapshots: '@eslint/core': 0.15.2 levn: 0.4.1 + '@eslint/plugin-kit@0.4.0': + dependencies: + '@eslint/core': 0.16.0 + levn: 0.4.1 + '@fastify/busboy@3.2.0': {} - '@graphql-eslint/eslint-plugin@4.4.0(@types/node@24.6.1)(eslint@9.36.0(jiti@2.6.1))(graphql@16.11.0)(typescript@5.9.3)': + '@graphql-eslint/eslint-plugin@4.4.0(@types/node@24.6.2)(eslint@9.37.0(jiti@2.6.1))(graphql@16.11.0)(typescript@5.9.3)': dependencies: '@graphql-tools/code-file-loader': 8.1.22(graphql@16.11.0) '@graphql-tools/graphql-tag-pluck': 8.3.21(graphql@16.11.0) '@graphql-tools/utils': 10.9.1(graphql@16.11.0) debug: 4.4.3(supports-color@8.1.1) - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) fast-glob: 3.3.3 graphql: 16.11.0 - graphql-config: 5.1.5(@types/node@24.6.1)(graphql@16.11.0)(typescript@5.9.3) + graphql-config: 5.1.5(@types/node@24.6.2)(graphql@16.11.0)(typescript@5.9.3) graphql-depth-limit: 1.1.0(graphql@16.11.0) lodash.lowercase: 4.3.0 transitivePeerDependencies: @@ -6023,7 +6068,7 @@ snapshots: - uWebSockets.js - utf-8-validate - '@graphql-tools/executor-http@1.3.3(@types/node@24.6.1)(graphql@16.11.0)': + '@graphql-tools/executor-http@1.3.3(@types/node@24.6.2)(graphql@16.11.0)': dependencies: '@graphql-hive/signal': 1.0.0 '@graphql-tools/executor-common': 0.0.4(graphql@16.11.0) @@ -6033,7 +6078,7 @@ snapshots: '@whatwg-node/fetch': 0.10.11 '@whatwg-node/promise-helpers': 1.3.2 graphql: 16.11.0 - meros: 1.3.2(@types/node@24.6.1) + meros: 1.3.2(@types/node@24.6.2) tslib: 2.8.1 transitivePeerDependencies: - '@types/node' @@ -6123,10 +6168,10 @@ snapshots: graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/url-loader@8.0.33(@types/node@24.6.1)(graphql@16.11.0)': + '@graphql-tools/url-loader@8.0.33(@types/node@24.6.2)(graphql@16.11.0)': dependencies: '@graphql-tools/executor-graphql-ws': 2.0.7(graphql@16.11.0) - '@graphql-tools/executor-http': 1.3.3(@types/node@24.6.1)(graphql@16.11.0) + '@graphql-tools/executor-http': 1.3.3(@types/node@24.6.2)(graphql@16.11.0) '@graphql-tools/executor-legacy-ws': 1.1.19(graphql@16.11.0) '@graphql-tools/utils': 10.9.1(graphql@16.11.0) '@graphql-tools/wrap': 10.1.4(graphql@16.11.0) @@ -6442,10 +6487,10 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} - '@stylistic/eslint-plugin@4.4.1(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': + '@stylistic/eslint-plugin@4.4.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.36.0(jiti@2.6.1) + '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.37.0(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -6500,7 +6545,7 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@24.6.1': + '@types/node@24.6.2': dependencies: undici-types: 7.13.0 @@ -6512,17 +6557,17 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 24.6.1 + '@types/node': 24.6.2 - '@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.45.0 - '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.45.0 - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -6531,14 +6576,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.45.0 '@typescript-eslint/types': 8.45.0 '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.45.0 debug: 4.4.3(supports-color@8.1.1) - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -6561,13 +6606,13 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.45.0 '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@8.1.1) - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -6591,13 +6636,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.45.0 '@typescript-eslint/types': 8.45.0 '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -6666,11 +6711,11 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitest/eslint-plugin@1.3.13(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3)': + '@vitest/eslint-plugin@1.3.13(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.45.0 - '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.36.0(jiti@2.6.1) + '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.37.0(jiti@2.6.1) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -7544,55 +7589,55 @@ snapshots: lodash.get: 4.4.2 lodash.zip: 4.2.0 - eslint-compat-utils@0.5.1(eslint@9.36.0(jiti@2.6.1)): + eslint-compat-utils@0.5.1(eslint@9.37.0(jiti@2.6.1)): dependencies: - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) semver: 7.7.2 - eslint-compat-utils@0.6.5(eslint@9.36.0(jiti@2.6.1)): + eslint-compat-utils@0.6.5(eslint@9.37.0(jiti@2.6.1)): dependencies: - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) semver: 7.7.2 - eslint-config-canonical@45.0.0(@types/node@24.6.1)(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3): + eslint-config-canonical@45.0.1(@types/node@24.6.2)(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@graphql-eslint/eslint-plugin': 4.4.0(@types/node@24.6.1)(eslint@9.36.0(jiti@2.6.1))(graphql@16.11.0)(typescript@5.9.3) + '@graphql-eslint/eslint-plugin': 4.4.0(@types/node@24.6.2)(eslint@9.37.0(jiti@2.6.1))(graphql@16.11.0)(typescript@5.9.3) '@next/eslint-plugin-next': 15.5.4 - '@stylistic/eslint-plugin': 4.4.1(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/eslint-plugin': 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - '@vitest/eslint-plugin': 1.3.13(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.36.0(jiti@2.6.1) - eslint-config-prettier: 10.1.8(eslint@9.36.0(jiti@2.6.1)) - eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1)) - eslint-plugin-ava: 15.1.0(eslint@9.36.0(jiti@2.6.1)) - eslint-plugin-canonical: 5.1.3(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - eslint-plugin-eslint-comments: 3.2.0(eslint@9.36.0(jiti@2.6.1)) - eslint-plugin-fp: 2.3.0(eslint@9.36.0(jiti@2.6.1)) - eslint-plugin-functional: 9.0.2(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - eslint-plugin-import: eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)) - eslint-plugin-jest: 28.14.0(@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - eslint-plugin-jsdoc: 50.8.0(eslint@9.36.0(jiti@2.6.1)) - eslint-plugin-jsonc: 2.20.1(eslint@9.36.0(jiti@2.6.1)) - eslint-plugin-jsx-a11y: 6.10.2(eslint@9.36.0(jiti@2.6.1)) - eslint-plugin-lodash: 8.0.0(eslint@9.36.0(jiti@2.6.1)) - eslint-plugin-mocha: 10.5.0(eslint@9.36.0(jiti@2.6.1)) + '@stylistic/eslint-plugin': 4.4.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@vitest/eslint-plugin': 1.3.13(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.37.0(jiti@2.6.1) + eslint-config-prettier: 10.1.8(eslint@9.37.0(jiti@2.6.1)) + eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1)) + eslint-plugin-ava: 15.1.0(eslint@9.37.0(jiti@2.6.1)) + eslint-plugin-canonical: 5.1.3(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + eslint-plugin-eslint-comments: 3.2.0(eslint@9.37.0(jiti@2.6.1)) + eslint-plugin-fp: 2.3.0(eslint@9.37.0(jiti@2.6.1)) + eslint-plugin-functional: 9.0.2(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + eslint-plugin-import: eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)) + eslint-plugin-jest: 28.14.0(@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + eslint-plugin-jsdoc: 50.8.0(eslint@9.37.0(jiti@2.6.1)) + eslint-plugin-jsonc: 2.20.1(eslint@9.37.0(jiti@2.6.1)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.37.0(jiti@2.6.1)) + eslint-plugin-lodash: 8.0.0(eslint@9.37.0(jiti@2.6.1)) + eslint-plugin-mocha: 10.5.0(eslint@9.37.0(jiti@2.6.1)) eslint-plugin-modules-newline: 0.0.6 - eslint-plugin-n: 17.23.1(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - eslint-plugin-perfectionist: 4.15.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - eslint-plugin-prettier: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1))(prettier@3.6.2) - eslint-plugin-promise: 7.2.1(eslint@9.36.0(jiti@2.6.1)) - eslint-plugin-react: 7.37.5(eslint@9.36.0(jiti@2.6.1)) - eslint-plugin-react-hooks: 5.2.0(eslint@9.36.0(jiti@2.6.1)) - eslint-plugin-regexp: 2.10.0(eslint@9.36.0(jiti@2.6.1)) - eslint-plugin-unicorn: 60.0.0(eslint@9.36.0(jiti@2.6.1)) - eslint-plugin-yml: 1.18.0(eslint@9.36.0(jiti@2.6.1)) - eslint-plugin-zod: 1.4.0(eslint@9.36.0(jiti@2.6.1)) + eslint-plugin-n: 17.23.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + eslint-plugin-perfectionist: 4.15.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + eslint-plugin-prettier: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1))(prettier@3.6.2) + eslint-plugin-promise: 7.2.1(eslint@9.37.0(jiti@2.6.1)) + eslint-plugin-react: 7.37.5(eslint@9.37.0(jiti@2.6.1)) + eslint-plugin-react-hooks: 6.1.0(eslint@9.37.0(jiti@2.6.1)) + eslint-plugin-regexp: 2.10.0(eslint@9.37.0(jiti@2.6.1)) + eslint-plugin-unicorn: 60.0.0(eslint@9.37.0(jiti@2.6.1)) + eslint-plugin-yml: 1.18.0(eslint@9.37.0(jiti@2.6.1)) + eslint-plugin-zod: 1.4.0(eslint@9.37.0(jiti@2.6.1)) globals: 16.4.0 graphql: 16.11.0 prettier: 3.6.2 ramda: 0.30.1 - typescript-eslint: 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + typescript-eslint: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) yaml-eslint-parser: 1.3.0 transitivePeerDependencies: - '@apollo/subgraph' @@ -7615,9 +7660,9 @@ snapshots: - utf-8-validate - vitest - eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.1)): + eslint-config-prettier@10.1.8(eslint@9.37.0(jiti@2.6.1)): dependencies: - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) eslint-import-context@0.1.9(unrs-resolver@1.11.1): dependencies: @@ -7626,26 +7671,26 @@ snapshots: optionalDependencies: unrs-resolver: 1.11.1 - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3(supports-color@8.1.1) - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) get-tsconfig: 4.10.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)) - eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)) + eslint-plugin-import: eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)) + eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1)): + eslint-import-resolver-typescript@4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1)): dependencies: debug: 4.4.3(supports-color@8.1.1) - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) eslint-import-context: 0.1.9(unrs-resolver@1.11.1) get-tsconfig: 4.10.1 is-bun-module: 2.0.0 @@ -7653,32 +7698,32 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)) - eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)) + eslint-plugin-import: eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)) + eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-json-compat-utils@0.2.1(eslint@9.36.0(jiti@2.6.1))(jsonc-eslint-parser@2.4.1): + eslint-json-compat-utils@0.2.1(eslint@9.37.0(jiti@2.6.1))(jsonc-eslint-parser@2.4.1): dependencies: - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) esquery: 1.6.0 jsonc-eslint-parser: 2.4.1 - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.36.0(jiti@2.6.1) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1)) + '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.37.0(jiti@2.6.1) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-plugin-ava@15.1.0(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-ava@15.1.0(eslint@9.37.0(jiti@2.6.1)): dependencies: enhance-visitors: 1.0.0 - eslint: 9.36.0(jiti@2.6.1) - eslint-utils: 3.0.0(eslint@9.36.0(jiti@2.6.1)) + eslint: 9.37.0(jiti@2.6.1) + eslint-utils: 3.0.0(eslint@9.37.0(jiti@2.6.1)) espree: 9.6.1 espurify: 2.1.1 import-modules: 2.1.0 @@ -7686,14 +7731,14 @@ snapshots: pkg-dir: 5.0.0 resolve-from: 5.0.0 - eslint-plugin-canonical@5.1.3(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3): + eslint-plugin-canonical@5.1.3(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) array-includes: 3.1.9 debug: 4.4.3(supports-color@8.1.1) doctrine: 3.0.0 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1)) - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1)) is-get-set-prop: 1.0.0 is-js-type: 2.0.0 is-obj-prop: 1.0.0 @@ -7713,34 +7758,34 @@ snapshots: - supports-color - typescript - eslint-plugin-es-x@7.8.0(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-es-x@7.8.0(eslint@9.37.0(jiti@2.6.1)): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.1 - eslint: 9.36.0(jiti@2.6.1) - eslint-compat-utils: 0.5.1(eslint@9.36.0(jiti@2.6.1)) + eslint: 9.37.0(jiti@2.6.1) + eslint-compat-utils: 0.5.1(eslint@9.37.0(jiti@2.6.1)) - eslint-plugin-eslint-comments@3.2.0(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-eslint-comments@3.2.0(eslint@9.37.0(jiti@2.6.1)): dependencies: escape-string-regexp: 1.0.5 - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) ignore: 5.3.2 - eslint-plugin-fp@2.3.0(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-fp@2.3.0(eslint@9.37.0(jiti@2.6.1)): dependencies: create-eslint-index: 1.0.0 - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) eslint-ast-utils: 1.1.0 lodash: 4.17.21 req-all: 0.1.0 - eslint-plugin-functional@9.0.2(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3): + eslint-plugin-functional@9.0.2(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) deepmerge-ts: 7.1.5 escape-string-regexp: 5.0.0 - eslint: 9.36.0(jiti@2.6.1) - is-immutable-type: 5.0.1(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.37.0(jiti@2.6.1) + is-immutable-type: 5.0.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) ts-api-utils: 2.1.0(typescript@5.9.3) ts-declaration-location: 1.0.7(typescript@5.9.3) optionalDependencies: @@ -7748,12 +7793,12 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1)): dependencies: '@typescript-eslint/types': 8.45.0 comment-parser: 1.4.1 debug: 4.4.3(supports-color@8.1.1) - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) eslint-import-context: 0.1.9(unrs-resolver@1.11.1) is-glob: 4.0.3 minimatch: 10.0.3 @@ -7761,28 +7806,28 @@ snapshots: stable-hash-x: 0.2.0 unrs-resolver: 1.11.1 optionalDependencies: - '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - supports-color - eslint-plugin-jest@28.14.0(@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3): + eslint-plugin-jest@28.14.0(@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.36.0(jiti@2.6.1) + '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.37.0(jiti@2.6.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-jsdoc@50.8.0(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-jsdoc@50.8.0(eslint@9.37.0(jiti@2.6.1)): dependencies: '@es-joy/jsdoccomment': 0.50.2 are-docs-informative: 0.0.2 comment-parser: 1.4.1 debug: 4.4.3(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) espree: 10.4.0 esquery: 1.6.0 parse-imports-exports: 0.2.4 @@ -7791,12 +7836,12 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-jsonc@2.20.1(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-jsonc@2.20.1(eslint@9.37.0(jiti@2.6.1)): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1)) - eslint: 9.36.0(jiti@2.6.1) - eslint-compat-utils: 0.6.5(eslint@9.36.0(jiti@2.6.1)) - eslint-json-compat-utils: 0.2.1(eslint@9.36.0(jiti@2.6.1))(jsonc-eslint-parser@2.4.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) + eslint: 9.37.0(jiti@2.6.1) + eslint-compat-utils: 0.6.5(eslint@9.37.0(jiti@2.6.1)) + eslint-json-compat-utils: 0.2.1(eslint@9.37.0(jiti@2.6.1))(jsonc-eslint-parser@2.4.1) espree: 10.4.0 graphemer: 1.4.0 jsonc-eslint-parser: 2.4.1 @@ -7805,7 +7850,7 @@ snapshots: transitivePeerDependencies: - '@eslint/json' - eslint-plugin-jsx-a11y@6.10.2(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.37.0(jiti@2.6.1)): dependencies: aria-query: 5.3.2 array-includes: 3.1.9 @@ -7815,7 +7860,7 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -7824,15 +7869,15 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-lodash@8.0.0(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-lodash@8.0.0(eslint@9.37.0(jiti@2.6.1)): dependencies: - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) lodash: 4.17.21 - eslint-plugin-mocha@10.5.0(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-mocha@10.5.0(eslint@9.37.0(jiti@2.6.1)): dependencies: - eslint: 9.36.0(jiti@2.6.1) - eslint-utils: 3.0.0(eslint@9.36.0(jiti@2.6.1)) + eslint: 9.37.0(jiti@2.6.1) + eslint-utils: 3.0.0(eslint@9.37.0(jiti@2.6.1)) globals: 13.24.0 rambda: 7.5.0 @@ -7840,12 +7885,12 @@ snapshots: dependencies: requireindex: 1.1.0 - eslint-plugin-n@17.23.1(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3): + eslint-plugin-n@17.23.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) enhanced-resolve: 5.18.3 - eslint: 9.36.0(jiti@2.6.1) - eslint-plugin-es-x: 7.8.0(eslint@9.36.0(jiti@2.6.1)) + eslint: 9.37.0(jiti@2.6.1) + eslint-plugin-es-x: 7.8.0(eslint@9.37.0(jiti@2.6.1)) get-tsconfig: 4.10.1 globals: 15.15.0 globrex: 0.1.2 @@ -7855,35 +7900,43 @@ snapshots: transitivePeerDependencies: - typescript - eslint-plugin-perfectionist@4.15.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3): + eslint-plugin-perfectionist@4.15.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3): dependencies: '@typescript-eslint/types': 8.45.0 - '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.36.0(jiti@2.6.1) + '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.37.0(jiti@2.6.1) natural-orderby: 5.0.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1))(prettier@3.6.2): + eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1))(prettier@3.6.2): dependencies: - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) prettier: 3.6.2 prettier-linter-helpers: 1.0.0 synckit: 0.11.11 optionalDependencies: - eslint-config-prettier: 10.1.8(eslint@9.36.0(jiti@2.6.1)) + eslint-config-prettier: 10.1.8(eslint@9.37.0(jiti@2.6.1)) - eslint-plugin-promise@7.2.1(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-promise@7.2.1(eslint@9.37.0(jiti@2.6.1)): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1)) - eslint: 9.36.0(jiti@2.6.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) + eslint: 9.37.0(jiti@2.6.1) - eslint-plugin-react-hooks@5.2.0(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-react-hooks@6.1.0(eslint@9.37.0(jiti@2.6.1)): dependencies: - eslint: 9.36.0(jiti@2.6.1) + '@babel/core': 7.28.4 + '@babel/parser': 7.28.4 + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.28.4) + eslint: 9.37.0(jiti@2.6.1) + hermes-parser: 0.25.1 + zod: 3.25.76 + zod-validation-error: 3.5.3(zod@3.25.76) + transitivePeerDependencies: + - supports-color - eslint-plugin-react@7.37.5(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-react@7.37.5(eslint@9.37.0(jiti@2.6.1)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -7891,7 +7944,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -7905,27 +7958,27 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-regexp@2.10.0(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-regexp@2.10.0(eslint@9.37.0(jiti@2.6.1)): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.1 comment-parser: 1.4.1 - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) jsdoc-type-pratt-parser: 4.8.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-unicorn@60.0.0(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-unicorn@60.0.0(eslint@9.37.0(jiti@2.6.1)): dependencies: '@babel/helper-validator-identifier': 7.27.1 - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) '@eslint/plugin-kit': 0.3.5 change-case: 5.4.4 ci-info: 4.3.0 clean-regexp: 1.0.0 core-js-compat: 3.45.1 - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) esquery: 1.6.0 find-up-simple: 1.0.1 globals: 16.4.0 @@ -7938,20 +7991,20 @@ snapshots: semver: 7.7.2 strip-indent: 4.1.0 - eslint-plugin-yml@1.18.0(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-yml@1.18.0(eslint@9.37.0(jiti@2.6.1)): dependencies: debug: 4.4.3(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint: 9.36.0(jiti@2.6.1) - eslint-compat-utils: 0.6.5(eslint@9.36.0(jiti@2.6.1)) + eslint: 9.37.0(jiti@2.6.1) + eslint-compat-utils: 0.6.5(eslint@9.37.0(jiti@2.6.1)) natural-compare: 1.4.0 yaml-eslint-parser: 1.3.0 transitivePeerDependencies: - supports-color - eslint-plugin-zod@1.4.0(eslint@9.36.0(jiti@2.6.1)): + eslint-plugin-zod@1.4.0(eslint@9.37.0(jiti@2.6.1)): dependencies: - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) eslint-scope@5.1.1: dependencies: @@ -7963,9 +8016,9 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-utils@3.0.0(eslint@9.36.0(jiti@2.6.1)): + eslint-utils@3.0.0(eslint@9.37.0(jiti@2.6.1)): dependencies: - eslint: 9.36.0(jiti@2.6.1) + eslint: 9.37.0(jiti@2.6.1) eslint-visitor-keys: 2.1.0 eslint-visitor-keys@2.1.0: {} @@ -7974,16 +8027,16 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.36.0(jiti@2.6.1): + eslint@9.37.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 - '@eslint/config-helpers': 0.3.1 - '@eslint/core': 0.15.2 + '@eslint/config-helpers': 0.4.0 + '@eslint/core': 0.16.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.36.0 - '@eslint/plugin-kit': 0.3.5 + '@eslint/js': 9.37.0 + '@eslint/plugin-kit': 0.4.0 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -8403,13 +8456,13 @@ snapshots: graphemer@1.4.0: {} - graphql-config@5.1.5(@types/node@24.6.1)(graphql@16.11.0)(typescript@5.9.3): + graphql-config@5.1.5(@types/node@24.6.2)(graphql@16.11.0)(typescript@5.9.3): dependencies: '@graphql-tools/graphql-file-loader': 8.1.2(graphql@16.11.0) '@graphql-tools/json-file-loader': 8.0.20(graphql@16.11.0) '@graphql-tools/load': 8.1.2(graphql@16.11.0) '@graphql-tools/merge': 9.1.1(graphql@16.11.0) - '@graphql-tools/url-loader': 8.0.33(@types/node@24.6.1)(graphql@16.11.0) + '@graphql-tools/url-loader': 8.0.33(@types/node@24.6.2)(graphql@16.11.0) '@graphql-tools/utils': 10.9.1(graphql@16.11.0) cosmiconfig: 8.3.6(typescript@5.9.3) graphql: 16.11.0 @@ -8482,6 +8535,12 @@ snapshots: he@1.2.0: {} + hermes-estree@0.25.1: {} + + hermes-parser@0.25.1: + dependencies: + hermes-estree: 0.25.1 + highlight.js@10.7.3: {} hook-std@4.0.0: {} @@ -8686,10 +8745,10 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-immutable-type@5.0.1(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3): + is-immutable-type@5.0.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.36.0(jiti@2.6.1) + '@typescript-eslint/type-utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.37.0(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) ts-declaration-location: 1.0.7(typescript@5.9.3) typescript: 5.9.3 @@ -8725,6 +8784,8 @@ snapshots: is-obj@2.0.0: {} + is-path-inside@3.0.3: {} + is-plain-obj@2.1.0: {} is-plain-obj@4.1.0: {} @@ -8879,7 +8940,7 @@ snapshots: jsdoc-type-pratt-parser@5.9.2: {} - jsdoc-type-pratt-parser@6.1.2: {} + jsdoc-type-pratt-parser@6.3.2: {} jsdom@6.5.1: dependencies: @@ -9158,9 +9219,9 @@ snapshots: merge2@1.4.1: {} - meros@1.3.2(@types/node@24.6.1): + meros@1.3.2(@types/node@24.6.2): optionalDependencies: - '@types/node': 24.6.1 + '@types/node': 24.6.2 micro-spelling-correcter@1.1.1: {} @@ -9247,7 +9308,7 @@ snapshots: mkdirp@1.0.4: optional: true - mocha@11.7.3: + mocha@11.7.4: dependencies: browser-stdout: 1.3.1 chokidar: 4.0.3 @@ -9257,6 +9318,7 @@ snapshots: find-up: 5.0.0 glob: 10.4.5 he: 1.2.0 + is-path-inside: 3.0.3 js-yaml: 4.1.0 log-symbols: 4.1.0 minimatch: 9.0.5 @@ -10415,13 +10477,13 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3): + typescript-eslint@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.36.0(jiti@2.6.1) + '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.37.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -10728,3 +10790,9 @@ snapshots: yocto-queue@0.1.0: {} yoctocolors@2.1.2: {} + + zod-validation-error@3.5.3(zod@3.25.76): + dependencies: + zod: 3.25.76 + + zod@3.25.76: {} diff --git a/src/getDefaultTagStructureForMode.js b/src/getDefaultTagStructureForMode.js index fb6080729..75c1ffab4 100644 --- a/src/getDefaultTagStructureForMode.js +++ b/src/getDefaultTagStructureForMode.js @@ -18,7 +18,7 @@ const getDefaultTagStructureForMode = (mode) => { const isJsdocTypescriptOrPermissive = isJsdocOrTypescript || isPermissive; // Properties: - // `namepathRole` - 'namepath-referencing'|'namepath-defining'|'namepath-or-url-referencing'|'text'|false + // `namepathRole` - 'namepath-referencing'|'name-defining'|'namepath-defining'|'namepath-or-url-referencing'|'text'|false // `typeAllowed` - boolean // `nameRequired` - boolean // `typeRequired` - boolean @@ -35,11 +35,7 @@ const getDefaultTagStructureForMode = (mode) => { // Among `namepath-defining` and `namepath-referencing`, these do not seem // to allow curly brackets in their doc signature or examples (`modifies` - // references namepaths within its type brackets and `param` is - // name-defining but not namepath-defining, so not part of these groups) - - // Todo: Should support special processing for "name" as distinct from - // "namepath" (e.g., param can't define a namepath) + // references namepaths within its type brackets) // Todo: Should support a `tutorialID` type (for `@tutorial` block and // inline) @@ -249,6 +245,9 @@ const getDefaultTagStructureForMode = (mode) => { [ 'enum', new Map(/** @type {[string, string|boolean][]} */ ([ + [ + 'namepathRole', 'name-defining', + ], // Has example showing curly brackets but not in doc signature [ 'typeAllowed', true, @@ -614,7 +613,7 @@ const getDefaultTagStructureForMode = (mode) => { 'module', new Map(/** @type {[string, string|boolean][]} */ ([ // Optional "name" and no curly brackets // this block impacts `no-undefined-types` and `valid-types` (search for - // "isNamepathDefiningTag|tagMightHaveNamepath|tagMightHaveEitherTypeOrNamePosition") + // "isNameOrNamepathDefiningTag|tagMightHaveNameOrNamepath|tagMightHaveEitherTypeOrNamePosition") [ 'namepathRole', isJsdoc ? 'namepath-defining' : 'text', ], @@ -907,7 +906,7 @@ const getDefaultTagStructureForMode = (mode) => { // Seems to require a "namepath" in the signature (with no // counter-examples) [ - 'namepathRole', 'namepath-defining', + 'namepathRole', 'name-defining', ], // TypeScript may allow it to be dropped if followed by @property or @member; diff --git a/src/iterateJsdoc.js b/src/iterateJsdoc.js index 11b1235f7..7064f9d9a 100644 --- a/src/iterateJsdoc.js +++ b/src/iterateJsdoc.js @@ -92,10 +92,10 @@ import esquery from 'esquery'; * parseClosureTemplateTag: ParseClosureTemplateTag, * getPreferredTagNameObject: GetPreferredTagNameObject, * pathDoesNotBeginWith: import('./jsdocUtils.js').PathDoesNotBeginWith - * isNamepathDefiningTag: IsNamepathX, + * isNameOrNamepathDefiningTag: IsNamepathX, * isNamepathReferencingTag: IsNamepathX, * isNamepathOrUrlReferencingTag: IsNamepathX, - * tagMightHaveNamepath: IsNamepathX, + * tagMightHaveNameOrNamepath: IsNamepathX, * }} BasicUtils */ @@ -526,10 +526,10 @@ import esquery from 'esquery'; * tagMustHaveNamePosition: TagMustHave, * tagMustHaveTypePosition: TagMustHave, * tagMissingRequiredTypeOrNamepath: TagMissingRequiredTypeOrNamepath, - * isNamepathDefiningTag: IsNamepathX, + * isNameOrNamepathDefiningTag: IsNamepathX, * isNamepathReferencingTag: IsNamepathX, * isNamepathOrUrlReferencingTag: IsNamepathX, - * tagMightHaveNamepath: IsNamepathX, + * tagMightHaveNameOrNamepath: IsNamepathX, * getTagStructureForMode: GetTagStructureForMode, * mayBeUndefinedTypeTag: MayBeUndefinedTypeTag, * hasValueOrExecutorHasNonEmptyResolveValue: HasValueOrExecutorHasNonEmptyResolveValue, @@ -614,18 +614,18 @@ const getBasicUtils = (context, { const utils = {}; for (const method of [ - 'isNamepathDefiningTag', + 'isNameOrNamepathDefiningTag', 'isNamepathReferencingTag', 'isNamepathOrUrlReferencingTag', - 'tagMightHaveNamepath', + 'tagMightHaveNameOrNamepath', ]) { /** @type {IsNamepathX} */ utils[ - /** @type {"isNamepathDefiningTag"|"isNamepathReferencingTag"|"isNamepathOrUrlReferencingTag"|"tagMightHaveNamepath"} */ ( + /** @type {"isNameOrNamepathDefiningTag"|"isNamepathReferencingTag"|"isNamepathOrUrlReferencingTag"|"tagMightHaveNameOrNamepath"} */ ( method )] = (tagName) => { return jsdocUtils[ - /** @type {"isNamepathDefiningTag"|"isNamepathReferencingTag"|"isNamepathOrUrlReferencingTag"|"tagMightHaveNamepath"} */ + /** @type {"isNameOrNamepathDefiningTag"|"isNamepathReferencingTag"|"isNamepathOrUrlReferencingTag"|"tagMightHaveNameOrNamepath"} */ (method) ](tagName); }; @@ -1769,7 +1769,7 @@ const getUtils = ( /** * @typedef {{ * [key: string]: { - * name?: "text"|"namepath-defining"|"namepath-referencing"|false, + * name?: "text"|"name-defining"|"namepath-defining"|"namepath-referencing"|false, * type?: boolean|string[], * required?: ("name"|"type"|"typeOrNameRequired")[] * } diff --git a/src/jsdocUtils.js b/src/jsdocUtils.js index b1b4f170f..4a6554fa3 100644 --- a/src/jsdocUtils.js +++ b/src/jsdocUtils.js @@ -1055,10 +1055,14 @@ const getTagStructureForMode = (mode, structuredTags) => { * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap * @returns {boolean} */ -const isNamepathDefiningTag = (tag, tagMap = tagStructure) => { +const isNameOrNamepathDefiningTag = (tag, tagMap = tagStructure) => { const tagStruct = ensureMap(tagMap, tag); - return tagStruct.get('namepathRole') === 'namepath-defining'; + return /** @type {(string|boolean|undefined)[]} */ ([ + 'name-defining', + 'namepath-defining', + ]).includes(/** @type {string|boolean|undefined} */ ( + tagStruct.get('namepathRole'))); }; /** @@ -1110,7 +1114,8 @@ const tagMightHaveTypePosition = (tag, tagMap = tagStructure) => { }; const namepathTypes = new Set([ - 'namepath-defining', 'namepath-referencing', + 'name-defining', 'namepath-defining', + 'namepath-referencing', ]); /** @@ -1131,7 +1136,7 @@ const tagMightHaveNamePosition = (tag, tagMap = tagStructure) => { * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap * @returns {boolean} */ -const tagMightHaveNamepath = (tag, tagMap = tagStructure) => { +const tagMightHaveNameOrNamepath = (tag, tagMap = tagStructure) => { const tagStruct = ensureMap(tagMap, tag); const nampathRole = tagStruct.get('namepathRole'); @@ -1157,7 +1162,7 @@ const tagMustHaveNamePosition = (tag, tagMap = tagStructure) => { * @returns {boolean} */ const tagMightHaveEitherTypeOrNamePosition = (tag, tagMap) => { - return Boolean(tagMightHaveTypePosition(tag, tagMap)) || tagMightHaveNamepath(tag, tagMap); + return Boolean(tagMightHaveTypePosition(tag, tagMap)) || tagMightHaveNameOrNamepath(tag, tagMap); }; /** @@ -1182,7 +1187,7 @@ const tagMissingRequiredTypeOrNamepath = (tag, tagMap = tagStructure) => { const hasTypePosition = mightHaveTypePosition && Boolean(tag.type); const hasNameOrNamepathPosition = ( tagMustHaveNamePosition(tag.tag, tagMap) || - tagMightHaveNamepath(tag.tag, tagMap) + tagMightHaveNameOrNamepath(tag.tag, tagMap) ) && Boolean(tag.name); const mustHaveEither = tagMustHaveEitherTypeOrNamePosition(tag.tag, tagMap); const hasEither = tagMightHaveEitherTypeOrNamePosition(tag.tag, tagMap) && @@ -1890,7 +1895,7 @@ export { hasYieldValue, isConstructor, isGetter, - isNamepathDefiningTag, + isNameOrNamepathDefiningTag, isNamepathOrUrlReferencingTag, isNamepathReferencingTag, isSetter, @@ -1902,7 +1907,7 @@ export { setTagStructure, strictNativeTypes, tagMightHaveEitherTypeOrNamePosition, - tagMightHaveNamepath, + tagMightHaveNameOrNamepath, tagMightHaveNamePosition, tagMightHaveTypePosition, tagMissingRequiredTypeOrNamepath, diff --git a/src/rules/checkLineAlignment.js b/src/rules/checkLineAlignment.js index 5f2d9da03..10929b8a9 100644 --- a/src/rules/checkLineAlignment.js +++ b/src/rules/checkLineAlignment.js @@ -49,7 +49,7 @@ const checkNotAlignedPerTag = (utils, tag, customSpacings) => { let spacerProps; /** @type {ContentProp[]} */ let contentProps; - const mightHaveNamepath = utils.tagMightHaveNamepath(tag.tag); + const mightHaveNamepath = utils.tagMightHaveNameOrNamepath(tag.tag); if (mightHaveNamepath) { spacerProps = [ 'postDelimiter', 'postTag', 'postType', 'postName', diff --git a/src/rules/noUndefinedTypes.js b/src/rules/noUndefinedTypes.js index acd08b6fd..fbb070e35 100644 --- a/src/rules/noUndefinedTypes.js +++ b/src/rules/noUndefinedTypes.js @@ -139,7 +139,7 @@ export default iterateJsdoc(({ return doc.tags.filter(({ tag, }) => { - return utils.isNamepathDefiningTag(tag) && ![ + return utils.isNameOrNamepathDefiningTag(tag) && ![ 'arg', 'argument', 'param', @@ -569,7 +569,7 @@ export default iterateJsdoc(({ const tags = doc.tags.filter(({ tag, }) => { - return utils.isNamepathDefiningTag(tag); + return utils.isNameOrNamepathDefiningTag(tag); }); if (!tags.length) { return []; diff --git a/src/rules/preferImportTag.js b/src/rules/preferImportTag.js index 132d43c51..216e1f204 100644 --- a/src/rules/preferImportTag.js +++ b/src/rules/preferImportTag.js @@ -48,7 +48,7 @@ export default iterateJsdoc(({ return doc.tags.filter(({ tag, }) => { - return utils.isNamepathDefiningTag(tag); + return utils.isNameOrNamepathDefiningTag(tag); }); }); @@ -437,7 +437,7 @@ export default iterateJsdoc(({ for (const tag of jsdoc.tags) { const mightHaveTypePosition = utils.tagMightHaveTypePosition(tag.tag); const hasTypePosition = mightHaveTypePosition === true && Boolean(tag.type); - if (hasTypePosition && (!exemptTypedefs || !utils.isNamepathDefiningTag(tag.tag))) { + if (hasTypePosition && (!exemptTypedefs || !utils.isNameOrNamepathDefiningTag(tag.tag))) { iterateInlineImports(tag); } } diff --git a/src/rules/validTypes.js b/src/rules/validTypes.js index bf91c2b14..7a9e32703 100644 --- a/src/rules/validTypes.js +++ b/src/rules/validTypes.js @@ -1,6 +1,8 @@ import iterateJsdoc from '../iterateJsdoc.js'; import { parse, + // parseName, + parseNamePath, traverse, tryParse, } from '@es-joy/jsdoccomment'; @@ -10,14 +12,6 @@ const inlineTags = new Set([ 'tutorial', ]); -const jsdocTypePrattKeywords = new Set([ - 'extends', - 'import', - 'is', - 'readonly', - 'typeof', -]); - const asExpression = /as\s+/v; const suppressTypes = new Set([ @@ -88,11 +82,14 @@ const suppressTypes = new Set([ /** * @param {string} path + * @param {import('jsdoc-type-pratt-parser').ParseMode|"permissive"} mode * @returns {boolean} */ -const tryParsePathIgnoreError = (path) => { +const tryParsePathIgnoreError = (path, mode) => { try { - tryParse(path); + parseNamePath(path, mode === 'permissive' ? 'jsdoc' : mode, { + includeSpecial: true, + }); return true; } catch { @@ -125,8 +122,7 @@ export default iterateJsdoc(({ */ const validNamepathParsing = function (namepath, tagName) { if ( - tryParsePathIgnoreError(namepath) || - jsdocTypePrattKeywords.has(namepath) + tryParsePathIgnoreError(namepath, mode) ) { return true; } @@ -141,7 +137,7 @@ export default iterateJsdoc(({ if ([ '#', '.', '~', ].includes(endChar)) { - handled = tryParsePathIgnoreError(namepath.slice(0, -1)); + handled = tryParsePathIgnoreError(namepath.slice(0, -1), mode); } break; @@ -149,7 +145,7 @@ export default iterateJsdoc(({ case 'module': case 'requires': { if (!namepath.startsWith('module:')) { - handled = tryParsePathIgnoreError(`module:${namepath}`); + handled = tryParsePathIgnoreError(`module:${namepath}`, mode); } break; @@ -160,7 +156,7 @@ export default iterateJsdoc(({ if ([ '#', '.', '~', ].includes(startChar)) { - handled = tryParsePathIgnoreError(namepath.slice(1)); + handled = tryParsePathIgnoreError(namepath.slice(1), mode); } } } @@ -356,7 +352,7 @@ export default iterateJsdoc(({ // VALID NAME/NAMEPATH const hasNameOrNamepathPosition = ( tagMustHaveNamePosition !== false || - utils.tagMightHaveNamepath(tag.tag) + utils.tagMightHaveNameOrNamepath(tag.tag) ) && Boolean(tag.name); if (hasNameOrNamepathPosition) { @@ -366,6 +362,7 @@ export default iterateJsdoc(({ // `utils.parseClosureTemplateTag`, so first try a raw // value; we really need a proper parser instead, however. tag.name.trim().replace(/^\[?(?.*?)=.*$/v, '$'), + mode, )) { for (const namepath of utils.parseClosureTemplateTag(tag)) { validNamepathParsing(namepath); diff --git a/test/rules/assertions/validTypes.js b/test/rules/assertions/validTypes.js index ab0ac0c7b..76db1b39b 100644 --- a/test/rules/assertions/validTypes.js +++ b/test/rules/assertions/validTypes.js @@ -1129,6 +1129,23 @@ export default /** @type {import('../index.js').TestCases} */ ({ }, ], }, + { + code: ` + /** + * With reserved word in type + * @param {Array} foo + */ + function quux() { + + } + `, + errors: [ + { + line: 4, + message: 'Syntax error in type: Array', + }, + ], + }, ], valid: [ { @@ -1908,5 +1925,57 @@ export default /** @type {import('../index.js').TestCases} */ ({ }, }, }, + { + code: ` + /** + * With reserved word in name + * @typedef {SomeType} import + */ + `, + }, + { + code: ` + /** + * With reserved word in namepath + * @param {SomeType} import + */ + `, + }, + { + code: ` + /** + * @param readonly + */ + + /** + * @param {boolean} readonly + */ + + /** + * @param {object} params + * @param {boolean} params.readonly + */ + `, + }, + { + code: ` + /** + * An object interface + * @typedef {Object} FooBar + * @property {boolean} readonly + * @property {boolean} private + * @property {boolean} public + * @property {boolean} constant + */ + `, + }, + { + code: ` + /** + * @param {object} props + * @param {string} props.is + */ + `, + }, ], });