From 799212691036222fe40545fa28a06f234320b2f9 Mon Sep 17 00:00:00 2001 From: Mateusz Wronski Date: Fri, 31 Jul 2026 10:33:49 +0200 Subject: [PATCH 01/12] =?UTF-8?q?chore(deps):=20upgrade=20ESLint=208=20?= =?UTF-8?q?=E2=86=92=2010=20with=20flat=20config=20migration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ESLint 8 → 10, @typescript-eslint v5 → v8, typescript-eslint umbrella pkg - prettier v2 → v3, eslint-plugin-prettier v4 → v5, eslint-config-prettier v9 - eslint-plugin-import → eslint-plugin-import-x (ESLint 10 compat) - globals ^16 added (replaces env: declarations in flat config) - TypeScript 4.4.4 → 4.9.5 (required by @typescript-eslint v8) - .eslintrc + .eslintignore removed; replaced by eslint.config.mjs - .prettierignore created (prettier scripts previously used .eslintignore) - Removed --ext flag from lint.eslint script (removed in ESLint 9) - Renamed no-throw-literal → only-throw-error, removed deprecated rules (ban-types, ban-ts-ignore, camelcase) from config - prefer-optional-chain moved to type-checked block only - Fixed TypeScript 4.9 narrowing regression in serverVariables/index.ts - Fixed AggregateError.errors type cast for TypeScript 4.9 compat Co-Authored-By: Claude Sonnet 4.6 --- .eslintrc | 117 -- .eslintignore => .prettierignore | 0 eslint.config.mjs | 113 ++ package.json | 28 +- packages/cli/src/commands/lint.ts | 3 +- packages/cli/src/index.ts | 2 +- .../src/services/linter/utils/getResolver.ts | 2 +- .../src/services/linter/utils/getRuleset.ts | 2 +- .../linter/utils/readFileDescriptor.ts | 6 +- packages/core/src/document.ts | 6 +- packages/core/src/documentInventory.ts | 6 +- .../src/ruleset/__tests__/ruleset.test.ts | 2 +- packages/core/src/ruleset/function.ts | 1 + packages/core/src/ruleset/ruleset.ts | 21 +- packages/core/src/ruleset/types.ts | 3 +- .../core/src/ruleset/validation/errors.ts | 2 +- .../ruleset/validation/validators/function.ts | 6 +- packages/core/src/runner/lintNode.ts | 6 +- packages/core/src/spectral.ts | 10 +- packages/core/src/utils/replacer.ts | 3 +- .../src/__tests__/pretty.jest.test.ts | 5 +- packages/formatters/src/code-climate.ts | 9 +- packages/formatters/src/html/index.ts | 7 +- packages/formatters/src/junit.ts | 1 + packages/formatters/src/markdown.ts | 1 + packages/formatters/src/pretty.ts | 2 +- packages/formatters/src/sarif.ts | 2 +- packages/formatters/src/stylish.ts | 2 +- packages/formatters/src/utils/xmlEscape.ts | 1 - packages/functions/src/schema/ajv.ts | 2 - packages/functions/src/schema/index.ts | 1 - packages/functions/src/undefined.ts | 2 +- packages/ruleset-bundler/jest.setup.mjs | 1 - packages/ruleset-bundler/src/index.ts | 7 +- .../ruleset-bundler/src/loader/browser.ts | 2 +- packages/ruleset-bundler/src/loader/node.ts | 2 +- .../src/plugins/__tests__/builtins.spec.ts | 4 +- .../ruleset-bundler/src/plugins/builtins.ts | 4 +- .../ruleset-bundler/src/plugins/skypack.ts | 2 +- packages/rulesets/jest.setup.mjs | 1 - .../src/__tests__/__helpers__/tester.ts | 2 +- .../__tests__/arazzoStepIdUniqueness.test.ts | 4 +- .../arazzoStepOutputNamesValidation.test.ts | 4 +- ...razzoWorkflowOutputNamesValidation.test.ts | 4 +- .../arazzoStepOutputNamesValidation.ts | 8 +- .../arazzoWorkflowDependsOnValidation.ts | 2 +- .../arazzoWorkflowOutputNamesValidation.ts | 8 +- .../src/arazzo/functions/types/arazzoTypes.ts | 4 +- .../asyncApi2MessageExamplesValidation.ts | 2 +- .../asyncapi/functions/utils/mergeTraits.ts | 1 + .../src/asyncapi/functions/utils/specs.ts | 4 +- .../__tests__/oas3-unused-component.test.ts | 2 +- .../src/oas/functions/oasDocumentSchema.ts | 1 + .../src/oas/functions/oasSecurityDefined.ts | 4 +- .../shared/functions/serverVariables/index.ts | 14 +- yarn.lock | 1348 ++++++++++------- 56 files changed, 1042 insertions(+), 767 deletions(-) delete mode 100644 .eslintrc rename .eslintignore => .prettierignore (100%) create mode 100644 eslint.config.mjs diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index bb989174a..000000000 --- a/.eslintrc +++ /dev/null @@ -1,117 +0,0 @@ -{ - "parser": "@typescript-eslint/parser", - "env": { - "es6": true, - "shared-node-browser": true - }, - "extends": [ - "eslint:recommended", - "plugin:prettier/recommended", - "plugin:@typescript-eslint/recommended" - ], - "rules": { - "no-console": "error", - "@typescript-eslint/camelcase": "off", - "@typescript-eslint/prefer-optional-chain": "error", - "@typescript-eslint/prefer-for-of": "error", - "@typescript-eslint/no-unused-vars": [ - "error", - { - "argsIgnorePattern": "^_", - "varsIgnorePattern": "^_", - "args": "after-used", - "ignoreRestSiblings": true - } - ], - "@typescript-eslint/no-var-requires": "warn", - "@typescript-eslint/explicit-function-return-type": "warn" - }, - "overrides": [ - { - "files": [ - "packages/*/src/**/*.ts" - ], - "parserOptions": { - "project": "./tsconfig.eslint.json" - }, - "extends": [ - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking" - ], - "plugins": ["import"], - "rules": { - "@typescript-eslint/prefer-regexp-exec": "error", - "@typescript-eslint/prefer-nullish-coalescing": "error", - "@typescript-eslint/no-floating-promises": ["error", { "ignoreVoid": true }], - "@typescript-eslint/strict-boolean-expressions": "warn", - "@typescript-eslint/no-throw-literal": "error", - "@typescript-eslint/ban-types": "warn", - "@typescript-eslint/no-unsafe-argument": "warn", - - "import/no-extraneous-dependencies": ["error", { "devDependencies": ["**/*.{test,spec}.ts", "**/__tests__/__helpers__/*.ts"] }] - } - }, - - { - "files": [ - "packages/cli/src/**/*.ts" - ], - "rules": { - "no-console": "warn" - } - }, - - { - "files": [ - "packages/*/src/**/__tests__/*.ts", - "test-harness/**/*.{ts,js}" - ], - "rules": { - "@typescript-eslint/strict-boolean-expressions": "off", - "@typescript-eslint/ban-ts-ignore": "off", - "@typescript-eslint/explicit-function-return-type": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-non-null-assertion": "off", - "@typescript-eslint/no-floating-promises": "off", - "@typescript-eslint/require-await": "off", - "@typescript-eslint/unbound-method": "off", - "@typescript-eslint/no-var-requires": "off", - "@typescript-eslint/no-unsafe-call": "off", - "@typescript-eslint/no-unsafe-member-access": "off", - "@typescript-eslint/no-unsafe-assignment": "off", - "@typescript-eslint/restrict-template-expressions": "off" - } - }, - - { - "files": [ - "src/**/__tests__/**/*.jest.test.{ts,js}", - "__mocks__/**/*.{ts,js}" - ], - "env": { - "jest": true, - "node": true - } - }, - - { - "files": [ - "src/**/__tests__/**/*.karma.test.{ts,js}" - ], - "env": { - "browser": true, - "jasmine": true - } - }, - - { - "files": [ - "scripts/**/*.{mjs,ts}", - "test-harness/**/*.{ts,js}" - ], - "env": { - "node": true - } - } - ] -} diff --git a/.eslintignore b/.prettierignore similarity index 100% rename from .eslintignore rename to .prettierignore diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 000000000..ea02e2487 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,113 @@ +import tseslint from 'typescript-eslint'; +import prettierConfig from 'eslint-plugin-prettier/recommended'; +import importPlugin from 'eslint-plugin-import-x'; +import globals from 'globals'; + +export default tseslint.config( + // Global ignores (replaces .eslintignore) + { + ignores: [ + '**/__fixtures__/**', + 'test-harness/tests/**', + 'packages/*/dist/**', + 'packages/rulesets/src/oas/schemas/validators.ts', + 'packages/rulesets/src/arazzo/schemas/validators.ts', + 'packages/*/CHANGELOG.md', + 'packages/formatters/src/html/templates.ts', + ], + }, + + // Base for all linted files + { + files: ['packages/**/*.{js,mjs,ts}', 'test-harness/**/*.{js,mjs,ts}'], + extends: [tseslint.configs.recommended, prettierConfig], + languageOptions: { + globals: { ...globals.es2015, ...globals.browser, ...globals.node }, + }, + rules: { + 'no-console': 'error', + '@typescript-eslint/prefer-for-of': 'error', + '@typescript-eslint/no-unused-vars': [ + 'error', + { + argsIgnorePattern: '^_', + varsIgnorePattern: '^_', + args: 'after-used', + ignoreRestSiblings: true, + }, + ], + '@typescript-eslint/no-require-imports': 'warn', + '@typescript-eslint/explicit-function-return-type': 'warn', + }, + }, + + // TypeScript source files with type-checking + { + files: ['packages/*/src/**/*.ts'], + extends: [tseslint.configs.eslintRecommended, tseslint.configs.recommendedTypeChecked], + plugins: { import: importPlugin }, + languageOptions: { + parserOptions: { + project: './tsconfig.eslint.json', + tsconfigRootDir: import.meta.dirname, + }, + }, + rules: { + '@typescript-eslint/prefer-optional-chain': 'error', + '@typescript-eslint/prefer-regexp-exec': 'error', + '@typescript-eslint/prefer-nullish-coalescing': 'error', + '@typescript-eslint/no-floating-promises': ['error', { ignoreVoid: true }], + '@typescript-eslint/strict-boolean-expressions': 'warn', + '@typescript-eslint/only-throw-error': 'error', + '@typescript-eslint/no-unsafe-argument': 'warn', + 'import/no-extraneous-dependencies': [ + 'error', + { devDependencies: ['**/*.{test,spec}.ts', '**/__tests__/__helpers__/*.ts'] }, + ], + }, + }, + + // CLI package: downgrade no-console to warn + { + files: ['packages/cli/src/**/*.ts'], + rules: { 'no-console': 'warn' }, + }, + + // Test files: relax strict rules + { + files: ['packages/*/src/**/__tests__/*.ts', 'test-harness/**/*.{ts,js}'], + rules: { + '@typescript-eslint/strict-boolean-expressions': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/no-floating-promises': 'off', + '@typescript-eslint/require-await': 'off', + '@typescript-eslint/unbound-method': 'off', + '@typescript-eslint/no-require-imports': 'off', + '@typescript-eslint/prefer-promise-reject-errors': 'off', + '@typescript-eslint/no-unsafe-call': 'off', + '@typescript-eslint/no-unsafe-member-access': 'off', + '@typescript-eslint/no-unsafe-assignment': 'off', + '@typescript-eslint/restrict-template-expressions': 'off', + }, + }, + + // Jest test files: jest + node globals + { + files: ['**/__tests__/**/*.jest.test.{ts,js}', '__mocks__/**/*.{ts,js}'], + languageOptions: { globals: { ...globals.jest, ...globals.node } }, + }, + + // Karma test files: browser + jasmine globals + { + files: ['**/__tests__/**/*.karma.test.{ts,js}'], + languageOptions: { globals: { ...globals.browser, ...globals.jasmine } }, + }, + + // Scripts and test-harness: node globals + { + files: ['scripts/**/*.{mjs,ts}', 'test-harness/**/*.{ts,js}'], + languageOptions: { globals: { ...globals.node } }, + }, +); diff --git a/package.json b/package.json index 4e466682c..c78bc677f 100644 --- a/package.json +++ b/package.json @@ -33,8 +33,8 @@ "prelint": "yarn workspaces foreach run prelint", "lint": "yarn prelint && yarn lint.prettier && yarn lint.eslint", "lint.fix": "yarn lint.prettier --write && yarn lint.eslint --fix", - "lint.eslint": "eslint --cache --cache-location .cache/.eslintcache --ext=.js,.mjs,.ts packages test-harness", - "lint.prettier": "prettier --ignore-path .eslintignore --ignore-unknown --check packages/core/src/ruleset/meta/*.json packages/rulesets/src/{asyncapi,oas,arazzo}/schemas/**/*.json docs/**/*.md README.md", + "lint.eslint": "eslint --cache --cache-location .cache/.eslintcache packages test-harness", + "lint.prettier": "prettier --ignore-path .prettierignore --ignore-unknown --check packages/core/src/ruleset/meta/*.json packages/rulesets/src/{asyncapi,oas,arazzo}/schemas/**/*.json docs/**/*.md README.md", "pretest": "yarn workspaces foreach run pretest", "test": "yarn pretest && yarn test.karma && yarn test.jest", "pretest.harness": "ts-node -T test-harness/scripts/generate-tests.ts", @@ -108,16 +108,17 @@ "@types/node-fetch": "^2.5.12", "@types/node-powershell": "^3.1.1", "@types/text-table": "^0.2.2", - "@typescript-eslint/eslint-plugin": "^5.35.1", - "@typescript-eslint/parser": "^5.34.0", - "eslint": "^8.22.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-prettier": "^4.2.1", + "@typescript-eslint/eslint-plugin": "^8.0.0", + "@typescript-eslint/parser": "^8.0.0", + "eslint": "^10.0.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-import-x": "^4.0.0", + "eslint-plugin-prettier": "^5.0.0", "expect": "^27.5.1", "fast-glob": "^3.3.3", "fetch-mock": "^12.6.0", "file-entry-cache": "^6.0.1", + "globals": "^16.0.0", "husky": "^7.0.4", "jest": "^29.7.0", "jest-mock": "^29.7.0", @@ -131,27 +132,28 @@ "multi-semantic-release": "^3.1.0", "node-powershell": "^4.0.0", "patch-package": "^8.0.0", - "prettier": "^2.4.1", + "prettier": "^3.0.0", "semantic-release": "^25.0.3", "ts-jest": "^29.2.5", "ts-node": "^10.8.2", - "typescript": "4.7.4" + "typescript": "4.7.4", + "typescript-eslint": "^8.0.0" }, "lint-staged": { "*.{ts,js}": [ "eslint --fix --cache --cache-location .cache/.eslintcache" ], "docs/**/*.md": [ - "prettier --ignore-path .eslintignore --write" + "prettier --ignore-path .prettierignore --write" ], "README.md": [ "prettier --write" ], "packages/core/src/ruleset/meta/*.json": [ - "prettier --ignore-path .eslintignore --write" + "prettier --ignore-path .prettierignore --write" ], "packages/rulesets/src/{asyncapi,oas,arazzo}/schemas/**/*.json": [ - "prettier --ignore-path .eslintignore --write" + "prettier --ignore-path .prettierignore --write" ] }, "packageManager": "yarn@3.5.0" diff --git a/packages/cli/src/commands/lint.ts b/packages/cli/src/commands/lint.ts index 2528c4a80..ed5f67915 100644 --- a/packages/cli/src/commands/lint.ts +++ b/packages/cli/src/commands/lint.ts @@ -2,7 +2,6 @@ import { DiagnosticSeverity, Dictionary } from '@stoplight/types'; import { isPlainObject } from '@stoplight/json'; import { getDiagnosticSeverity, IRuleResult } from '@stoplight/spectral-core'; import { difference, isError, pick } from 'lodash'; -import type { ReadStream } from 'tty'; import type { CommandModule } from 'yargs'; import * as process from 'process'; import chalk from 'chalk'; @@ -38,7 +37,7 @@ const lintCommand: CommandModule = { return []; } - return [(process.stdin as ReadStream & { fd: 0 }).fd]; + return [process.stdin.fd]; }, }) .middleware((argv: Dictionary) => { diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index b965eff60..f71c0fcd2 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -6,7 +6,7 @@ import { DEFAULT_REQUEST_OPTIONS } from '@stoplight/spectral-runtime'; import lintCommand from './commands/lint'; if (typeof process.env.PROXY === 'string') { - // eslint-disable-next-line @typescript-eslint/no-var-requires + // eslint-disable-next-line @typescript-eslint/no-require-imports const { HttpProxyAgent, HttpsProxyAgent } = require('hpagent') as typeof import('hpagent'); const httpAgent = new HttpProxyAgent({ proxy: process.env.PROXY }); const httpsAgent = new HttpsProxyAgent({ proxy: process.env.PROXY }); diff --git a/packages/cli/src/services/linter/utils/getResolver.ts b/packages/cli/src/services/linter/utils/getResolver.ts index 4b1c0c696..9f6408bbc 100644 --- a/packages/cli/src/services/linter/utils/getResolver.ts +++ b/packages/cli/src/services/linter/utils/getResolver.ts @@ -7,7 +7,7 @@ import { CLIError } from '../../../errors'; export const getResolver = (resolver: Optional): Resolver => { if (resolver !== void 0) { try { - // eslint-disable-next-line @typescript-eslint/no-unsafe-return + // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-unsafe-return return require(isAbsolute(resolver) ? resolver : join(process.cwd(), resolver)); } catch (ex) { throw new CLIError(isError(ex) ? formatMessage(ex.message) : String(ex)); diff --git a/packages/cli/src/services/linter/utils/getRuleset.ts b/packages/cli/src/services/linter/utils/getRuleset.ts index 26a309848..79981a0f9 100644 --- a/packages/cli/src/services/linter/utils/getRuleset.ts +++ b/packages/cli/src/services/linter/utils/getRuleset.ts @@ -123,7 +123,7 @@ function load(source: string, uri: string): RulesetDefinition { const _require = (id: string): unknown => req(req.resolve(id, { paths })); - // eslint-disable-next-line @typescript-eslint/no-implied-eval + // eslint-disable-next-line @typescript-eslint/no-implied-eval, @typescript-eslint/no-unsafe-call Function('module, require', source)(m, _require); if (!isObject(m.exports)) { diff --git a/packages/cli/src/services/linter/utils/readFileDescriptor.ts b/packages/cli/src/services/linter/utils/readFileDescriptor.ts index 9b31e9884..91563b09f 100644 --- a/packages/cli/src/services/linter/utils/readFileDescriptor.ts +++ b/packages/cli/src/services/linter/utils/readFileDescriptor.ts @@ -9,10 +9,10 @@ export async function readFileDescriptor(fd: number, opts: IFileReadOptions): Pr stream.setEncoding(opts.encoding); stream.on('readable', () => { - let chunk: unknown; + let chunk: string | Buffer; - while ((chunk = stream.read()) !== null) { - result += chunk; + while ((chunk = stream.read() as string | Buffer) !== null) { + result += typeof chunk === 'string' ? chunk : chunk.toString(); } }); diff --git a/packages/core/src/document.ts b/packages/core/src/document.ts index daeb3c718..ddbb2ecd8 100644 --- a/packages/core/src/document.ts +++ b/packages/core/src/document.ts @@ -30,7 +30,11 @@ export class Document = IParserResult public readonly diagnostics: IRuleResult[]; public formats?: Set | null; - constructor(protected readonly input: string, protected readonly parser: IParser, source?: string) { + constructor( + protected readonly input: string, + protected readonly parser: IParser, + source?: string, + ) { this.parserResult = parser.parse(input); // we need to normalize the path in case path with forward slashes is given this.source = normalizeSource(source); diff --git a/packages/core/src/documentInventory.ts b/packages/core/src/documentInventory.ts index 12c90ba6f..643af4c5d 100644 --- a/packages/core/src/documentInventory.ts +++ b/packages/core/src/documentInventory.ts @@ -45,7 +45,10 @@ export class DocumentInventory implements IDocumentInventory { return this.document.formats ?? null; } - constructor(public readonly document: IDocument, protected resolver: Resolver) { + constructor( + public readonly document: IDocument, + protected resolver: Resolver, + ) { this.graph = null; this.errors = null; @@ -204,7 +207,6 @@ export class DocumentInventory implements IDocumentInventory { this.diagnostics.push(...formatParserDiagnostics(document.diagnostics, document.source)); } - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment this.referencedDocuments[source] = document; return Promise.resolve(resolveOpts); diff --git a/packages/core/src/ruleset/__tests__/ruleset.test.ts b/packages/core/src/ruleset/__tests__/ruleset.test.ts index 990a98cb7..7a77aebb0 100644 --- a/packages/core/src/ruleset/__tests__/ruleset.test.ts +++ b/packages/core/src/ruleset/__tests__/ruleset.test.ts @@ -1462,7 +1462,7 @@ describe('Ruleset', () => { describe('scoped aliases', () => { const createStubFormat = (): Format => - (input): input is unknown => + (_input): _input is unknown => true; it('should resolve locally defined aliases according to their targets', () => { diff --git a/packages/core/src/ruleset/function.ts b/packages/core/src/ruleset/function.ts index 8360ba90c..6d8d84070 100644 --- a/packages/core/src/ruleset/function.ts +++ b/packages/core/src/ruleset/function.ts @@ -11,6 +11,7 @@ import { printPath, PrintStyle, printValue } from '@stoplight/spectral-runtime'; import { RulesetValidationError } from './validation/index'; import { IFunctionResult, JSONSchema, RulesetFunction, RulesetFunctionWithValidator } from '../types'; import { isObject } from 'lodash'; +// eslint-disable-next-line @typescript-eslint/no-require-imports import AggregateError = require('es-aggregate-error'); const ajv = new Ajv({ allErrors: true, allowUnionTypes: true, strict: true, keywords: ['x-internal'] }); diff --git a/packages/core/src/ruleset/ruleset.ts b/packages/core/src/ruleset/ruleset.ts index 4be50b8a2..46c6ef362 100644 --- a/packages/core/src/ruleset/ruleset.ts +++ b/packages/core/src/ruleset/ruleset.ts @@ -59,7 +59,10 @@ export class Ruleset { readonly #context: RulesetContext & { severity: FileRulesetSeverityDefinition }; - constructor(readonly maybeDefinition: unknown, context?: RulesetContext) { + constructor( + readonly maybeDefinition: unknown, + context?: RulesetContext, + ) { let definition: RulesetDefinition; if (isPlainObject(maybeDefinition) && 'extends' in maybeDefinition) { const { extends: _, ...def } = maybeDefinition; @@ -248,16 +251,16 @@ export class Ruleset { overrides.length === 0 ? null : overrides.length > 1 - ? overrides - .slice(1) - .reduce( - (left, right) => mergeRulesets(left, right, true), - overrides[0] as RulesetDefinition, - ) - : overrides[0]; + ? overrides + .slice(1) + .reduce( + (left, right) => mergeRulesets(left, right, true), + overrides[0] as RulesetDefinition, + ) + : overrides[0]; const ruleset = new Ruleset( - mergedOverrides === null ? (definition as RulesetDefinition) : mergeRulesets(definition, mergedOverrides, false), + mergedOverrides === null ? definition : mergeRulesets(definition, mergedOverrides, false), { severity: 'recommended', source: rulesetSource, diff --git a/packages/core/src/ruleset/types.ts b/packages/core/src/ruleset/types.ts index 2b7a7c72c..714292848 100644 --- a/packages/core/src/ruleset/types.ts +++ b/packages/core/src/ruleset/types.ts @@ -63,8 +63,7 @@ export interface IRuleThen { export type GivenDefinition = string | string[]; export type RulesetExtendsDefinition = - | RulesetDefinition - | (RulesetDefinition | [RulesetDefinition, FileRulesetSeverityDefinition])[]; + RulesetDefinition | (RulesetDefinition | [RulesetDefinition, FileRulesetSeverityDefinition])[]; export type RulesetOverrideDefinition = Pick & ( diff --git a/packages/core/src/ruleset/validation/errors.ts b/packages/core/src/ruleset/validation/errors.ts index d31932ecf..362693c8b 100644 --- a/packages/core/src/ruleset/validation/errors.ts +++ b/packages/core/src/ruleset/validation/errors.ts @@ -111,7 +111,7 @@ export function convertAjvErrors( function flatErrors(error: RulesetValidationError | AggregateError): RulesetValidationError | RulesetValidationError[] { if (isAggregateError(error)) { - return error.errors.flatMap(flatErrors); + return (error.errors as (RulesetValidationError | AggregateError)[]).flatMap(flatErrors); } return error; diff --git a/packages/core/src/ruleset/validation/validators/function.ts b/packages/core/src/ruleset/validation/validators/function.ts index bf6249eba..55f16b342 100644 --- a/packages/core/src/ruleset/validation/validators/function.ts +++ b/packages/core/src/ruleset/validation/validators/function.ts @@ -10,11 +10,7 @@ function assertRulesetFunction( } } -export function validateFunction( - fn: unknown | RulesetFunction | RulesetFunctionWithValidator, - opts: unknown, - path: string, -): Error | void { +export function validateFunction(fn: unknown, opts: unknown, path: string): Error | void { try { assertRulesetFunction(fn); diff --git a/packages/core/src/runner/lintNode.ts b/packages/core/src/runner/lintNode.ts index 6070c6811..1cb70dcd7 100644 --- a/packages/core/src/runner/lintNode.ts +++ b/packages/core/src/runner/lintNode.ts @@ -77,8 +77,8 @@ function processTargetResults( associatedItem?.missingPropertyPath !== void 0 && associatedItem.missingPropertyPath.length > path.length ? printPath(associatedItem.missingPropertyPath.slice(path.length - 1), PrintStyle.Dot) : path.length > 0 - ? path[path.length - 1] - : '', + ? path[path.length - 1] + : '', error: result.message, path: printPath(path, PrintStyle.EscapedPointer), description: rule.description, @@ -94,7 +94,7 @@ function processTargetResults( context.results.push({ code: rule.name, - message: (rule.message === null ? rule.description ?? resultMessage : message(rule.message, vars)).trim(), + message: (rule.message === null ? (rule.description ?? resultMessage) : message(rule.message, vars)).trim(), path, severity, ...(source !== null ? { source } : null), diff --git a/packages/core/src/spectral.ts b/packages/core/src/spectral.ts index f2a7491cd..b1dd9bb95 100644 --- a/packages/core/src/spectral.ts +++ b/packages/core/src/spectral.ts @@ -31,11 +31,11 @@ export class Spectral { return target instanceof Document ? target : isParsedResult(target) - ? new ParsedDocument(target) - : new Document>( - typeof target === 'string' ? target : stringify(target, void 0, 2), - Parsers.Yaml, - ); + ? new ParsedDocument(target) + : new Document>( + typeof target === 'string' ? target : stringify(target, void 0, 2), + Parsers.Yaml, + ); } public async runWithResolved( diff --git a/packages/core/src/utils/replacer.ts b/packages/core/src/utils/replacer.ts index 6b9117e91..57a85a076 100644 --- a/packages/core/src/utils/replacer.ts +++ b/packages/core/src/utils/replacer.ts @@ -22,6 +22,7 @@ export class Replacer> { const functions = parser.functions as Record Value>; functions.toUpperCase = (value: Value): Value => { + // eslint-disable-next-line @typescript-eslint/no-base-to-string return String(value).toUpperCase(); }; @@ -30,7 +31,7 @@ export class Replacer> { }; Object.entries(this.functions).forEach(([name, fn]) => { - functions[name] = fn.bind(values) as (...args: Value[]) => Value; + functions[name] = fn.bind(values); }); const context = values as unknown as Record; diff --git a/packages/formatters/src/__tests__/pretty.jest.test.ts b/packages/formatters/src/__tests__/pretty.jest.test.ts index 8a14b1da4..7769b4fa7 100644 --- a/packages/formatters/src/__tests__/pretty.jest.test.ts +++ b/packages/formatters/src/__tests__/pretty.jest.test.ts @@ -83,9 +83,8 @@ ${chalk.red.bold('1 Unique Issue(s)')}\n`); test('should display proper severity level', () => { setColumnWidth(185, function (): void { const result = pretty(mixedErrors, { failSeverity: DiagnosticSeverity.Error }); - expect( - result, - ).toContain(`${chalk.white('3:10')} ${chalk.white.inverse('HINT')} ${chalk.white.bold('info-contact')} ${chalk.gray('Info object should contain `contact` object.')} ${chalk.cyan('info')} + expect(result) + .toContain(`${chalk.white('3:10')} ${chalk.white.inverse('HINT')} ${chalk.white.bold('info-contact')} ${chalk.gray('Info object should contain `contact` object.')} ${chalk.cyan('info')} ${chalk.yellow( '3:10', diff --git a/packages/formatters/src/code-climate.ts b/packages/formatters/src/code-climate.ts index 04f4a2af0..2df924e5f 100644 --- a/packages/formatters/src/code-climate.ts +++ b/packages/formatters/src/code-climate.ts @@ -18,14 +18,7 @@ interface CodeClimateIssue { fingerprint?: string; } type CodeClimateIssueCategory = - | 'Bug Risk' - | 'Clarity' - | 'Compatibility' - | 'Complexity' - | 'Duplication' - | 'Performance' - | 'Security' - | 'Style'; + 'Bug Risk' | 'Clarity' | 'Compatibility' | 'Complexity' | 'Duplication' | 'Performance' | 'Security' | 'Style'; interface CodeClimateIssueLocation { path: string; positions: { diff --git a/packages/formatters/src/html/index.ts b/packages/formatters/src/html/index.ts index 33bda5257..297572916 100644 --- a/packages/formatters/src/html/index.ts +++ b/packages/formatters/src/html/index.ts @@ -33,9 +33,10 @@ import templates from './templates'; // Helpers // ------------------------------------------------------------------------------ -const pageTemplate = template(templates['html-template-page.html']); -const messageTemplate = template(templates['html-template-message.html']); -const resultTemplate = template(templates['html-template-result.html']); +const templateMap = templates as Record; +const pageTemplate = template(templateMap['html-template-page.html']); +const messageTemplate = template(templateMap['html-template-message.html']); +const resultTemplate = template(templateMap['html-template-result.html']); function renderMessages(messages: IRuleResult[], parentIndex: number): string { return messages diff --git a/packages/formatters/src/junit.ts b/packages/formatters/src/junit.ts index 60eebf2c3..a015845ed 100644 --- a/packages/formatters/src/junit.ts +++ b/packages/formatters/src/junit.ts @@ -48,6 +48,7 @@ export const junit: Formatter = (results, { failSeverity }) => { const classname = source.replace(new RegExp(`${escapeRegExp(extname(source))}$`), ''); if (validationResults.length > 0) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison const filteredValidationResults = validationResults.filter(result => result.severity <= failSeverity); output += `\n`; diff --git a/packages/formatters/src/markdown.ts b/packages/formatters/src/markdown.ts index cea57f6ed..f43752c3f 100644 --- a/packages/formatters/src/markdown.ts +++ b/packages/formatters/src/markdown.ts @@ -13,6 +13,7 @@ export const markdown: Formatter = (results, { failSeverity }, ctx?: FormatterCo validationResults.sort((a, b) => a.range.start.line - b.range.start.line); if (validationResults.length > 0) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison const filteredValidationResults = validationResults.filter(result => result.severity <= failSeverity); for (const result of filteredValidationResults) { diff --git a/packages/formatters/src/pretty.ts b/packages/formatters/src/pretty.ts index a4fd63906..7d73bfa99 100644 --- a/packages/formatters/src/pretty.ts +++ b/packages/formatters/src/pretty.ts @@ -1,4 +1,4 @@ -/* eslint-disable @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment */ +/* eslint-disable @typescript-eslint/no-require-imports,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment */ /** * Copyright JS Foundation and other contributors, https://js.foundation * diff --git a/packages/formatters/src/sarif.ts b/packages/formatters/src/sarif.ts index fb7d69103..1b816b1e6 100644 --- a/packages/formatters/src/sarif.ts +++ b/packages/formatters/src/sarif.ts @@ -33,7 +33,7 @@ export const sarif: Formatter = (results, _, ctx) => { const sarifRuleBuilder = new SarifRuleBuilder().initSimple({ ruleId: rule.name, shortDescriptionText: rule.description ?? 'No description.', - helpUri: rule.documentationUrl !== null ? rule.documentationUrl : undefined, + helpUri: rule.documentationUrl ?? undefined, }); sarifRunBuilder.addRule(sarifRuleBuilder); } diff --git a/packages/formatters/src/stylish.ts b/packages/formatters/src/stylish.ts index 013eb6439..cceb22f12 100644 --- a/packages/formatters/src/stylish.ts +++ b/packages/formatters/src/stylish.ts @@ -1,4 +1,4 @@ -/* eslint-disable @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return */ +/* eslint-disable @typescript-eslint/no-require-imports,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return */ /** * Copyright JS Foundation and other contributors, https://js.foundation * diff --git a/packages/formatters/src/utils/xmlEscape.ts b/packages/formatters/src/utils/xmlEscape.ts index 2ef13ce94..81169ada5 100644 --- a/packages/formatters/src/utils/xmlEscape.ts +++ b/packages/formatters/src/utils/xmlEscape.ts @@ -30,7 +30,6 @@ * @private */ export const xmlEscape = (s: string): string => { - // eslint-disable-next-line no-control-regex return `${s}`.replace(/[<>&"'\x00-\x1F\x7F\u0080-\uFFFF]/gu, c => { switch (c) { case '<': diff --git a/packages/functions/src/schema/ajv.ts b/packages/functions/src/schema/ajv.ts index 635ca2d96..dae063174 100644 --- a/packages/functions/src/schema/ajv.ts +++ b/packages/functions/src/schema/ajv.ts @@ -86,10 +86,8 @@ export function createAjvInstances(): AssignAjvInstance { return ajv.getSchema($id) ?? ajv.compile(schema); } else { const actualCompiledSchemas = - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion compiledSchemas.get(ajv) ?? compiledSchemas.set(ajv, new WeakMap()).get(ajv)!; - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion return actualCompiledSchemas.get(schema) ?? actualCompiledSchemas.set(schema, ajv.compile(schema)).get(schema)!; } }; diff --git a/packages/functions/src/schema/index.ts b/packages/functions/src/schema/index.ts index 955c799b9..63a648b96 100644 --- a/packages/functions/src/schema/index.ts +++ b/packages/functions/src/schema/index.ts @@ -34,7 +34,6 @@ export default createRulesetFunction( const assignAjvInstance = instances.get(documentInventory) ?? - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion instances.set(documentInventory, createAjvInstances()).get(documentInventory)!; const results: IFunctionResult[] = []; diff --git a/packages/functions/src/undefined.ts b/packages/functions/src/undefined.ts index 6221a31b4..c172354e3 100644 --- a/packages/functions/src/undefined.ts +++ b/packages/functions/src/undefined.ts @@ -7,7 +7,7 @@ export default createRulesetFunction( input: null, options: optionSchemas.undefined, }, - // eslint-disable-next-line no-shadow-restricted-names + function undefined(targetVal) { if (typeof targetVal !== 'undefined') { return [ diff --git a/packages/ruleset-bundler/jest.setup.mjs b/packages/ruleset-bundler/jest.setup.mjs index ffce2d816..661948d51 100644 --- a/packages/ruleset-bundler/jest.setup.mjs +++ b/packages/ruleset-bundler/jest.setup.mjs @@ -1,2 +1 @@ -/*eslint-env jest*/ jest.mock('fs'); diff --git a/packages/ruleset-bundler/src/index.ts b/packages/ruleset-bundler/src/index.ts index 38c7920df..0b7f25bb9 100644 --- a/packages/ruleset-bundler/src/index.ts +++ b/packages/ruleset-bundler/src/index.ts @@ -51,9 +51,10 @@ export async function bundleRuleset( target === 'runtime' ? [] : target === 'browser' - ? id => isURL(id) - : (id, importer) => - id.startsWith('node:') || (!isURL(id) && isPackageImport(id) && (importer === void 0 || !isURL(importer))), + ? id => isURL(id) + : (id, importer) => + id.startsWith('node:') || + (!isURL(id) && isPackageImport(id) && (importer === void 0 || !isURL(importer))), }); const chunks = (await bundle.generate({ format: format ?? (target === 'runtime' ? 'iife' : 'esm'), exports: 'auto' })) diff --git a/packages/ruleset-bundler/src/loader/browser.ts b/packages/ruleset-bundler/src/loader/browser.ts index d7f3c7c80..909bd1463 100644 --- a/packages/ruleset-bundler/src/loader/browser.ts +++ b/packages/ruleset-bundler/src/loader/browser.ts @@ -15,7 +15,7 @@ export const bundleAndLoadRuleset: Loader = async (rulesetFile, io, plugins = [] io, ); - // eslint-disable-next-line @typescript-eslint/no-implied-eval + // eslint-disable-next-line @typescript-eslint/no-implied-eval, @typescript-eslint/no-unsafe-call return new Ruleset(Function(`return ${ruleset}`)(), { severity: 'recommended', source: rulesetFile, diff --git a/packages/ruleset-bundler/src/loader/node.ts b/packages/ruleset-bundler/src/loader/node.ts index ceaea8998..fcc204167 100644 --- a/packages/ruleset-bundler/src/loader/node.ts +++ b/packages/ruleset-bundler/src/loader/node.ts @@ -35,7 +35,7 @@ function load(source: string, uri: string): RulesetDefinition { const _require = (id: string): unknown => req(req.resolve(id, { paths })); - // eslint-disable-next-line @typescript-eslint/no-implied-eval + // eslint-disable-next-line @typescript-eslint/no-implied-eval, @typescript-eslint/no-unsafe-call Function('module, require', source)(m, _require); if (typeof m.exports !== 'object' || m.exports === null) { diff --git a/packages/ruleset-bundler/src/plugins/__tests__/builtins.spec.ts b/packages/ruleset-bundler/src/plugins/__tests__/builtins.spec.ts index 177436450..f7f311739 100644 --- a/packages/ruleset-bundler/src/plugins/__tests__/builtins.spec.ts +++ b/packages/ruleset-bundler/src/plugins/__tests__/builtins.spec.ts @@ -110,7 +110,6 @@ export { input as default }; readFile();`, }); - // eslint-disable-next-line @typescript-eslint/no-empty-function function readFile(): void {} const code = await bundleRuleset('/tmp/input.js', { @@ -161,9 +160,8 @@ readFile(); readFile();`, }); - // eslint-disable-next-line @typescript-eslint/no-empty-function function readFile(): void {} - // eslint-disable-next-line @typescript-eslint/no-empty-function + function readFile2(): void {} await bundleRuleset('/tmp/input.js', { diff --git a/packages/ruleset-bundler/src/plugins/builtins.ts b/packages/ruleset-bundler/src/plugins/builtins.ts index 32d3d8fa6..f6bb532e9 100644 --- a/packages/ruleset-bundler/src/plugins/builtins.ts +++ b/packages/ruleset-bundler/src/plugins/builtins.ts @@ -55,9 +55,7 @@ export const builtins = (overrides: Partial = {}): Plugin => { if (typeof external === 'function') { return { ...rawOptions, - external: ( - ((id, importer, isResolved) => !(id in modules) && external(id, importer, isResolved)) - ), + external: (id, importer, isResolved) => !(id in modules) && external(id, importer, isResolved), }; } diff --git a/packages/ruleset-bundler/src/plugins/skypack.ts b/packages/ruleset-bundler/src/plugins/skypack.ts index 2487d609b..6b8f8b014 100644 --- a/packages/ruleset-bundler/src/plugins/skypack.ts +++ b/packages/ruleset-bundler/src/plugins/skypack.ts @@ -5,7 +5,7 @@ import { isURL } from '@stoplight/path'; const DATA_URIS = /^(?:data|node|file):/; export const esmCdn = (opts?: { ignoreList?: (string | RegExp)[] }): Plugin => { - return { + return { name: '@stoplight-spectral/esmCdn', resolveId(id) { if (DATA_URIS.test(id) || isURL(id)) return; diff --git a/packages/rulesets/jest.setup.mjs b/packages/rulesets/jest.setup.mjs index ffce2d816..661948d51 100644 --- a/packages/rulesets/jest.setup.mjs +++ b/packages/rulesets/jest.setup.mjs @@ -1,2 +1 @@ -/*eslint-env jest*/ jest.mock('fs'); diff --git a/packages/rulesets/src/__tests__/__helpers__/tester.ts b/packages/rulesets/src/__tests__/__helpers__/tester.ts index d850fd187..a34b7c280 100644 --- a/packages/rulesets/src/__tests__/__helpers__/tester.ts +++ b/packages/rulesets/src/__tests__/__helpers__/tester.ts @@ -11,7 +11,7 @@ export type RuleName = keyof Ruleset['rules']; type Scenario = ReadonlyArray< Readonly<{ name: string; - document: Record | Document; + document: Record | Document; errors: ReadonlyArray>; mocks?: Record>; }> diff --git a/packages/rulesets/src/arazzo/functions/__tests__/arazzoStepIdUniqueness.test.ts b/packages/rulesets/src/arazzo/functions/__tests__/arazzoStepIdUniqueness.test.ts index eac61c470..f5b25ef52 100644 --- a/packages/rulesets/src/arazzo/functions/__tests__/arazzoStepIdUniqueness.test.ts +++ b/packages/rulesets/src/arazzo/functions/__tests__/arazzoStepIdUniqueness.test.ts @@ -6,8 +6,8 @@ const runRule = (target: { steps: Array<{ stepId: string }> }) => { const context: DeepPartial = { path: [], documentInventory: { - graph: {} as any, // Mock the graph property - referencedDocuments: {} as any, // Mock the referencedDocuments property as a Dictionary + graph: {}, // Mock the graph property + referencedDocuments: {}, // Mock the referencedDocuments property as a Dictionary findAssociatedItemForPath: jest.fn(), // Mock the findAssociatedItemForPath function }, document: { diff --git a/packages/rulesets/src/arazzo/functions/__tests__/arazzoStepOutputNamesValidation.test.ts b/packages/rulesets/src/arazzo/functions/__tests__/arazzoStepOutputNamesValidation.test.ts index 062d64402..741f45ea8 100644 --- a/packages/rulesets/src/arazzo/functions/__tests__/arazzoStepOutputNamesValidation.test.ts +++ b/packages/rulesets/src/arazzo/functions/__tests__/arazzoStepOutputNamesValidation.test.ts @@ -18,8 +18,8 @@ const runRule = ( const context: DeepPartial = { path: [], documentInventory: { - graph: {} as any, // Mock the graph property - referencedDocuments: {} as any, // Mock the referencedDocuments property as a Dictionary + graph: {}, // Mock the graph property + referencedDocuments: {}, // Mock the referencedDocuments property as a Dictionary findAssociatedItemForPath: jest.fn(), // Mock the findAssociatedItemForPath function }, document: { diff --git a/packages/rulesets/src/arazzo/functions/__tests__/arazzoWorkflowOutputNamesValidation.test.ts b/packages/rulesets/src/arazzo/functions/__tests__/arazzoWorkflowOutputNamesValidation.test.ts index 2dfae2e38..0d83868b0 100644 --- a/packages/rulesets/src/arazzo/functions/__tests__/arazzoWorkflowOutputNamesValidation.test.ts +++ b/packages/rulesets/src/arazzo/functions/__tests__/arazzoWorkflowOutputNamesValidation.test.ts @@ -7,8 +7,8 @@ const runRule = (target: ArazzoSpecification, contextOverrides: Partial = { path: [], documentInventory: { - graph: {} as any, // Mock the graph property - referencedDocuments: {} as any, // Mock the referencedDocuments property as a Dictionary + graph: {}, // Mock the graph property + referencedDocuments: {}, // Mock the referencedDocuments property as a Dictionary findAssociatedItemForPath: jest.fn(), // Mock the findAssociatedItemForPath function }, document: { diff --git a/packages/rulesets/src/arazzo/functions/arazzoStepOutputNamesValidation.ts b/packages/rulesets/src/arazzo/functions/arazzoStepOutputNamesValidation.ts index 6fef6615d..9754cf2bc 100644 --- a/packages/rulesets/src/arazzo/functions/arazzoStepOutputNamesValidation.ts +++ b/packages/rulesets/src/arazzo/functions/arazzoStepOutputNamesValidation.ts @@ -66,13 +66,7 @@ export default createRulesetFunction( } // Validate runtime expression - if ( - !arazzoRuntimeExpressionValidation( - outputValue, - targetVal as unknown as ArazzoSpecification, - workflowIndex, - ) - ) { + if (!arazzoRuntimeExpressionValidation(outputValue, targetVal, workflowIndex)) { results.push({ message: `"${outputValue}" is not a valid runtime expression.`, path: ['workflows', workflowIndex, 'steps', stepIndex, 'outputs', outputName, outputIndex] as JsonPath, diff --git a/packages/rulesets/src/arazzo/functions/arazzoWorkflowDependsOnValidation.ts b/packages/rulesets/src/arazzo/functions/arazzoWorkflowDependsOnValidation.ts index 265b1ac22..da74916eb 100644 --- a/packages/rulesets/src/arazzo/functions/arazzoWorkflowDependsOnValidation.ts +++ b/packages/rulesets/src/arazzo/functions/arazzoWorkflowDependsOnValidation.ts @@ -22,7 +22,7 @@ export default function arazzoWorkflowDependsOnValidation( const seenWorkflows = new Set(); if (Array.isArray(workflow.dependsOn)) { - workflow.dependsOn.forEach((dep: string | unknown, depIndex: number) => { + workflow.dependsOn.forEach((dep: unknown, depIndex: number) => { if (typeof dep !== 'string') { return; // Skip non-string dependencies } diff --git a/packages/rulesets/src/arazzo/functions/arazzoWorkflowOutputNamesValidation.ts b/packages/rulesets/src/arazzo/functions/arazzoWorkflowOutputNamesValidation.ts index 658f2ac86..3395f8685 100644 --- a/packages/rulesets/src/arazzo/functions/arazzoWorkflowOutputNamesValidation.ts +++ b/packages/rulesets/src/arazzo/functions/arazzoWorkflowOutputNamesValidation.ts @@ -54,13 +54,7 @@ export default createRulesetFunction( } // Validate runtime expression - if ( - !arazzoRuntimeExpressionValidation( - outputValue, - targetVal as unknown as ArazzoSpecification, - workflowIndex, - ) - ) { + if (!arazzoRuntimeExpressionValidation(outputValue, targetVal, workflowIndex)) { results.push({ message: `"${outputValue}" is not a valid runtime expression.`, path: ['workflows', workflowIndex, 'outputs', outputName, outputIndex] as JsonPath, diff --git a/packages/rulesets/src/arazzo/functions/types/arazzoTypes.ts b/packages/rulesets/src/arazzo/functions/types/arazzoTypes.ts index 16774b77a..12cf367a9 100644 --- a/packages/rulesets/src/arazzo/functions/types/arazzoTypes.ts +++ b/packages/rulesets/src/arazzo/functions/types/arazzoTypes.ts @@ -40,12 +40,12 @@ export type ReusableObject = { export type PayloadReplacement = { target: string; - value: unknown | string; + value: unknown; }; export type RequestBody = { contentType?: string; - payload?: unknown | string; + payload?: unknown; replacements?: PayloadReplacement[]; }; diff --git a/packages/rulesets/src/asyncapi/functions/asyncApi2MessageExamplesValidation.ts b/packages/rulesets/src/asyncapi/functions/asyncApi2MessageExamplesValidation.ts index 056838f47..d548c63a9 100644 --- a/packages/rulesets/src/asyncapi/functions/asyncApi2MessageExamplesValidation.ts +++ b/packages/rulesets/src/asyncapi/functions/asyncApi2MessageExamplesValidation.ts @@ -17,7 +17,7 @@ interface MessageExample { export interface MessageFragment { payload: unknown; headers: unknown; - traits?: any[]; + traits?: unknown[]; examples?: MessageExample[]; } diff --git a/packages/rulesets/src/asyncapi/functions/utils/mergeTraits.ts b/packages/rulesets/src/asyncapi/functions/utils/mergeTraits.ts index 7d398e98b..6fe1d84a3 100644 --- a/packages/rulesets/src/asyncapi/functions/utils/mergeTraits.ts +++ b/packages/rulesets/src/asyncapi/functions/utils/mergeTraits.ts @@ -1,5 +1,6 @@ import { isPlainObject } from '@stoplight/json'; +// eslint-disable-next-line @typescript-eslint/no-explicit-any type HaveTraits = { traits?: any[] } & Record; /** diff --git a/packages/rulesets/src/asyncapi/functions/utils/specs.ts b/packages/rulesets/src/asyncapi/functions/utils/specs.ts index caa20bcdf..eb2c38dbd 100644 --- a/packages/rulesets/src/asyncapi/functions/utils/specs.ts +++ b/packages/rulesets/src/asyncapi/functions/utils/specs.ts @@ -1,7 +1,5 @@ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ -/* eslint-disable @typescript-eslint/no-unsafe-member-access */ import allSchemas from '@asyncapi/specs'; -// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const specs = allSchemas.schemas; export type AsyncAPISpecVersion = keyof typeof specs; diff --git a/packages/rulesets/src/oas/__tests__/oas3-unused-component.test.ts b/packages/rulesets/src/oas/__tests__/oas3-unused-component.test.ts index f74df9d13..aadf205ae 100644 --- a/packages/rulesets/src/oas/__tests__/oas3-unused-component.test.ts +++ b/packages/rulesets/src/oas/__tests__/oas3-unused-component.test.ts @@ -133,7 +133,7 @@ testRule('oas3-unused-component', [ $ref: '#/components/schemas/HookedAsWell', }, { - $ref: `${definitionDocument}#/components/schemas/ExternalFs`, + $ref: `${definitionDocument.source}#/components/schemas/ExternalFs`, }, { $ref: 'https://oas3.library.com/defs.json#/components/schemas/ExternalHttp', diff --git a/packages/rulesets/src/oas/functions/oasDocumentSchema.ts b/packages/rulesets/src/oas/functions/oasDocumentSchema.ts index 15cda8a4d..e56db25f5 100644 --- a/packages/rulesets/src/oas/functions/oasDocumentSchema.ts +++ b/packages/rulesets/src/oas/functions/oasDocumentSchema.ts @@ -17,6 +17,7 @@ export default createRulesetFunction( if (formats === null || formats === void 0) return; const schema = formats.has(oas2) ? 'oas2_0' : formats.has(oas3_1) ? 'oas3_1' : 'oas3_0'; + const validator = validators[schema]; validator(input); diff --git a/packages/rulesets/src/oas/functions/oasSecurityDefined.ts b/packages/rulesets/src/oas/functions/oasSecurityDefined.ts index 1043a9bc2..df5a8b3d6 100644 --- a/packages/rulesets/src/oas/functions/oasSecurityDefined.ts +++ b/packages/rulesets/src/oas/functions/oasSecurityDefined.ts @@ -37,8 +37,8 @@ export default createRulesetFunction, Options>( oasVersion === 2 ? document.data.securityDefinitions : isPlainObject(document.data.components) - ? document.data.components.securitySchemes - : null; + ? document.data.components.securitySchemes + : null; let results: IFunctionResult[] | undefined; diff --git a/packages/rulesets/src/shared/functions/serverVariables/index.ts b/packages/rulesets/src/shared/functions/serverVariables/index.ts index 6b63fba4c..bb850bb35 100644 --- a/packages/rulesets/src/shared/functions/serverVariables/index.ts +++ b/packages/rulesets/src/shared/functions/serverVariables/index.ts @@ -12,10 +12,10 @@ type Input = { variables?: Record< string, { - enum: string[] | never; - default: string | never; - description: string | never; - examples: string | never; + enum?: string[]; + default?: string; + description?: string; + examples?: string; [key: string]: unknown; // ^x- } >; @@ -103,11 +103,11 @@ export default createRulesetFunction( const variable = variables[key]; if ('enum' in variable) { - variablePairs.push([key, variable.enum]); + variablePairs.push([key, variable.enum!]); - checkVariableEnumValues(results, ctx.path, key, variable.enum, variable.default); + checkVariableEnumValues(results, ctx.path, key, variable.enum!, variable.default); } else if ('default' in variable) { - variablePairs.push([key, [variable.default]]); + variablePairs.push([key, [variable.default!]]); } else { variablePairs.push([key, []]); } diff --git a/yarn.lock b/yarn.lock index df6c2def3..97e3ac9d4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1778,6 +1778,34 @@ __metadata: languageName: node linkType: hard +"@emnapi/core@npm:1.10.0": + version: 1.10.0 + resolution: "@emnapi/core@npm:1.10.0" + dependencies: + "@emnapi/wasi-threads": 1.2.1 + tslib: ^2.4.0 + checksum: d8cf0d6e0668db456190dda05bffb299395e58e814bacfbe78e6306aea9df8c48c0c276ad9ca787d5bbd4272e765fcc879e8156c0fc40398d5f43658819b7314 + languageName: node + linkType: hard + +"@emnapi/runtime@npm:1.10.0": + version: 1.10.0 + resolution: "@emnapi/runtime@npm:1.10.0" + dependencies: + tslib: ^2.4.0 + checksum: cc403db36a6875495f4f4a776eea8379c028d83d7d37a018b50079db226e7484f269a0447fc1e49235216d4fb2378bf2c61fa7f047d9f9c50e21698ce9b6e531 + languageName: node + linkType: hard + +"@emnapi/wasi-threads@npm:1.2.1": + version: 1.2.1 + resolution: "@emnapi/wasi-threads@npm:1.2.1" + dependencies: + tslib: ^2.4.0 + checksum: a2360553f8056e3e676f708b7e1639bae84212714ace6ee13b6e0ce667b3057bea6d120c7a4f5b32851f93d287fd4b5a0fd58b14f43363d365cb83bc538254d1 + languageName: node + linkType: hard + "@endemolshinegroup/cosmiconfig-typescript-loader@npm:^3.0.2": version: 3.0.2 resolution: "@endemolshinegroup/cosmiconfig-typescript-loader@npm:3.0.2" @@ -1792,38 +1820,67 @@ __metadata: languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.2.0": - version: 4.4.0 - resolution: "@eslint-community/eslint-utils@npm:4.4.0" +"@eslint-community/eslint-utils@npm:^4.8.0, @eslint-community/eslint-utils@npm:^4.9.1": + version: 4.10.1 + resolution: "@eslint-community/eslint-utils@npm:4.10.1" dependencies: - eslint-visitor-keys: ^3.3.0 + eslint-visitor-keys: ^3.4.3 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: cdfe3ae42b4f572cbfb46d20edafe6f36fc5fb52bf2d90875c58aefe226892b9677fef60820e2832caf864a326fe4fc225714c46e8389ccca04d5f9288aabd22 + checksum: ac9da8475207591237f79462fef7f201611b22481df1972e6b81bd2a05dc546e0b69b0094771d23b7a3075d7d69d413c955989473abc0e227f9473108124ded4 languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.4.0": - version: 4.11.0 - resolution: "@eslint-community/regexpp@npm:4.11.0" - checksum: 97d2fe46690b69417a551bd19a3dc53b6d9590d2295c43cc4c4e44e64131af541e2f4a44d5c12e87de990403654d3dae9d33600081f3a2f0386b368abc9111ec +"@eslint-community/regexpp@npm:^4.12.2": + version: 4.12.2 + resolution: "@eslint-community/regexpp@npm:4.12.2" + checksum: 1770bc81f676a72f65c7200b5675ff7a349786521f30e66125faaf767fde1ba1c19c3790e16ba8508a62a3933afcfc806a893858b3b5906faf693d862b9e4120 languageName: node linkType: hard -"@eslint/eslintrc@npm:^1.3.0": - version: 1.3.0 - resolution: "@eslint/eslintrc@npm:1.3.0" +"@eslint/config-array@npm:^0.23.5": + version: 0.23.5 + resolution: "@eslint/config-array@npm:0.23.5" dependencies: - ajv: ^6.12.4 - debug: ^4.3.2 - espree: ^9.3.2 - globals: ^13.15.0 - ignore: ^5.2.0 - import-fresh: ^3.2.1 - js-yaml: ^4.1.0 - minimatch: ^3.1.2 - strip-json-comments: ^3.1.1 - checksum: a1e734ad31a8b5328dce9f479f185fd4fc83dd7f06c538e1fa457fd8226b89602a55cc6458cd52b29573b01cdfaf42331be8cfc1fec732570086b591f4ed6515 + "@eslint/object-schema": ^3.0.5 + debug: ^4.3.1 + minimatch: ^10.2.4 + checksum: 2cb8c3d3450f2b1c91dcc21109bfee58356915cbfa1429b9e82efc04c2acf7ccdf12ef20734989afdb1e676b8bf5f2e10548405efc6b8b2c89bbd9e89e5a8e49 + languageName: node + linkType: hard + +"@eslint/config-helpers@npm:^0.7.0": + version: 0.7.0 + resolution: "@eslint/config-helpers@npm:0.7.0" + dependencies: + "@eslint/core": ^1.2.1 + checksum: 4367648fb52061a7142404eab8c4f5d7406a75c0e6aa6f90fd38846f7f07b8be3755c05b1e7d601fabbbb4e5a95f97e3b4aa865ab359e80dcc24d659489f1173 + languageName: node + linkType: hard + +"@eslint/core@npm:^1.2.1": + version: 1.2.1 + resolution: "@eslint/core@npm:1.2.1" + dependencies: + "@types/json-schema": ^7.0.15 + checksum: 430f53c5c6bcfabe54d7232d6b74bf9f6f62b0337f73ca0db70a0a0dbe4843243ce24577df61619fcbc0ef45cc6e2872074bed3295538acd72361b69f3b5eb47 + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^3.0.5": + version: 3.0.5 + resolution: "@eslint/object-schema@npm:3.0.5" + checksum: 4e9aee969d73a5c12c06dcf9e3a7903d441cdc946b3768099dba1937f2af58bd8ed4b1bcf34bbc54432440cdd00dfab970edd5ce2b4fb1afd2d0e6018c87aa0b + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.7.2": + version: 0.7.2 + resolution: "@eslint/plugin-kit@npm:0.7.2" + dependencies: + "@eslint/core": ^1.2.1 + levn: ^0.4.1 + checksum: 16fa97792c3f8e9723f5068abf854557cfa4da7c0b2eee691bff092fbb507d1dd2e1e86c027522c9165616954f4c1ae8d75911058813fb07c0b9ebda2cbfbae1 languageName: node linkType: hard @@ -1836,35 +1893,44 @@ __metadata: languageName: node linkType: hard -"@gar/promise-retry@npm:^1.0.2": - version: 1.0.3 - resolution: "@gar/promise-retry@npm:1.0.3" - checksum: 0d13ea3bb1025755e055648f6e290d2a7e0c87affaf552218f09f66b3fcd9ea9d5c9cc5fe2aa6e285e1530437768e40f9448fe9a86f4f3417b216dcf488d3d1a +"@humanfs/core@npm:^0.19.2": + version: 0.19.2 + resolution: "@humanfs/core@npm:0.19.2" + dependencies: + "@humanfs/types": ^0.15.0 + checksum: cfcf57302dafe41eadd900b30da5e10f8b4e51fac635c834c03ae11933d1911c131ef3cfa3ff14c47b17dd23524180c69f50cfe0b68c152034c2f6ba0ec2ccae languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.10.4": - version: 0.10.4 - resolution: "@humanwhocodes/config-array@npm:0.10.4" +"@humanfs/node@npm:^0.16.6": + version: 0.16.8 + resolution: "@humanfs/node@npm:0.16.8" dependencies: - "@humanwhocodes/object-schema": ^1.2.1 - debug: ^4.1.1 - minimatch: ^3.0.4 - checksum: d480e5d57e6d787565b6cff78e27c3d1b380692d4ffb0ada7d7f5957a56c9032f034da05a3e443065dbd0671ebf4d859036ced34e96b325bbc1badbae3c05300 + "@humanfs/core": ^0.19.2 + "@humanfs/types": ^0.15.0 + "@humanwhocodes/retry": ^0.4.0 + checksum: 179d1dae12c5d1330c262b79b037e4db3e98d870f4827a56c1eb8a6bc32a6d2b4c32603a5b13c4f2e11882239276ed2a559cf465dfba33a3ac37bc7d9f5c1e9b languageName: node linkType: hard -"@humanwhocodes/gitignore-to-minimatch@npm:^1.0.2": - version: 1.0.2 - resolution: "@humanwhocodes/gitignore-to-minimatch@npm:1.0.2" - checksum: aba5c40c9e3770ed73a558b0bfb53323842abfc2ce58c91d7e8b1073995598e6374456d38767be24ab6176915f0a8d8b23eaae5c85e2b488c0dccca6d795e2ad +"@humanfs/types@npm:^0.15.0": + version: 0.15.0 + resolution: "@humanfs/types@npm:0.15.0" + checksum: fe8abe73e36ded7bf854addd48a5a7defe3aa77af9e92a95195bc6abd7d2a22c193bbac38d47982c198e2683e5108acba691cd859c4e1104b94d76651139e2da languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^1.2.1": - version: 1.2.1 - resolution: "@humanwhocodes/object-schema@npm:1.2.1" - checksum: a824a1ec31591231e4bad5787641f59e9633827d0a2eaae131a288d33c9ef0290bd16fda8da6f7c0fcb014147865d12118df10db57f27f41e20da92369fcb3f1 +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 0fd22007db8034a2cdf2c764b140d37d9020bbfce8a49d3ec5c05290e77d4b0263b1b972b752df8c89e5eaa94073408f2b7d977aed131faf6cf396ebb5d7fb61 + languageName: node + linkType: hard + +"@humanwhocodes/retry@npm:^0.4.0, @humanwhocodes/retry@npm:^0.4.2": + version: 0.4.3 + resolution: "@humanwhocodes/retry@npm:0.4.3" + checksum: d423455b9d53cf01f778603404512a4246fb19b83e74fe3e28c70d9a80e9d4ae147d2411628907ca983e91a855a52535859a8bb218050bc3f6dbd7a553b7b442 languageName: node linkType: hard @@ -2372,6 +2438,18 @@ __metadata: languageName: node linkType: hard +"@napi-rs/wasm-runtime@npm:^1.1.4": + version: 1.2.2 + resolution: "@napi-rs/wasm-runtime@npm:1.2.2" + dependencies: + "@tybys/wasm-util": ^0.10.3 + peerDependencies: + "@emnapi/core": ^1.7.1 || ^2.0.0-alpha.3 + "@emnapi/runtime": ^1.7.1 || ^2.0.0-alpha.3 + checksum: f560c2f8552de395f0b1232a89add2574cf0b0bb1919b9e8d14aaa8c5ebd918a42480a86c112bc811fe082c2007058cd1326d573f2e885c92558b0b03c7fca3d + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.3": version: 2.1.3 resolution: "@nodelib/fs.scandir@npm:2.1.3" @@ -2834,6 +2912,13 @@ __metadata: languageName: node linkType: hard +"@pkgr/core@npm:^0.3.6": + version: 0.3.6 + resolution: "@pkgr/core@npm:0.3.6" + checksum: 29082aa13d36f13fc41cdc64cb1feb36b630de0d6ebde84e2ff68e3d7a7f1dce4462cca91f76176c46e50bbca6b1e7f1fd9cf907af12d5d70da83bc981ca4ccf + languageName: node + linkType: hard + "@pnpm/config.env-replace@npm:^1.1.0": version: 1.1.0 resolution: "@pnpm/config.env-replace@npm:1.1.0" @@ -3066,10 +3151,10 @@ __metadata: languageName: node linkType: hard -"@sigstore/core@npm:^3.2.0, @sigstore/core@npm:^3.2.1": - version: 3.2.1 - resolution: "@sigstore/core@npm:3.2.1" - checksum: 7123bb904b2e79f6521ede79a5f026267fb4c83e15088d02971833fad45bcbc976417ac0d697c0806e2826546a836b36357b17a322cf7ec307ff29fdd8eda326 +"@sigstore/core@npm:^3.1.0": + version: 3.1.0 + resolution: "@sigstore/core@npm:3.1.0" + checksum: 09e5d9c800821a10a8b0deeadb05376a536b1a0134044d823f5a7184f487c1a2874a6764d7f2e71108cfb2376faa7beb9cb9ba857daf27dc677455302b2738c0 languageName: node linkType: hard @@ -3080,17 +3165,17 @@ __metadata: languageName: node linkType: hard -"@sigstore/sign@npm:^4.1.1": - version: 4.1.1 - resolution: "@sigstore/sign@npm:4.1.1" +"@sigstore/sign@npm:^4.1.0": + version: 4.1.0 + resolution: "@sigstore/sign@npm:4.1.0" dependencies: - "@gar/promise-retry": ^1.0.2 "@sigstore/bundle": ^4.0.0 - "@sigstore/core": ^3.2.0 + "@sigstore/core": ^3.1.0 "@sigstore/protobuf-specs": ^0.5.0 - make-fetch-happen: ^15.0.4 + make-fetch-happen: ^15.0.3 proc-log: ^6.1.0 - checksum: 886d7237ab22a2b70cc72f581c90cf61055114b2b46b9b79b3cdb60fedd966bdd2570ac71043348d220a00d36cf382c19678ebe3679348340093e7af500bd20c + promise-retry: ^2.0.1 + checksum: 24c3b66a391142ffb65dc5b632c588455b1b9bafb4204cad2bd1e87985a712a5b11115cca6bf5d7de26a55488a8caf97575f9fd33babdb6d470009a0767a9461 languageName: node linkType: hard @@ -3104,24 +3189,14 @@ __metadata: languageName: node linkType: hard -"@sigstore/tuf@npm:^4.0.2": - version: 4.0.2 - resolution: "@sigstore/tuf@npm:4.0.2" - dependencies: - "@sigstore/protobuf-specs": ^0.5.0 - tuf-js: ^4.1.0 - checksum: d29383dc32cd1d2683bf7e35eb017f1e94c2e4778fffc305dae0baddfed624062849e5d2a9b9e81a35516dfcd46c24191fa6e245c0b22ccf2d021f01de61bc16 - languageName: node - linkType: hard - -"@sigstore/verify@npm:^3.1.1": - version: 3.1.1 - resolution: "@sigstore/verify@npm:3.1.1" +"@sigstore/verify@npm:^3.1.0": + version: 3.1.0 + resolution: "@sigstore/verify@npm:3.1.0" dependencies: "@sigstore/bundle": ^4.0.0 - "@sigstore/core": ^3.2.1 + "@sigstore/core": ^3.1.0 "@sigstore/protobuf-specs": ^0.5.0 - checksum: 0e94527b3f2b8fddbcf0d3476f15cacf4381c36ceb0bcae799af246bf3b8f8c74234291267c6a993c8a377efa1858e7ad6138efb00e920f7db7072b3eea8864c + checksum: fdb1e008fe346eeaf31ee58bfb5b7e1db1b292fe14f3eaf001e2d67eb3aa3af1637c2e17d87ceaf62d5fcee599a0ec30198480c91559b694bfe963e81d09879e languageName: node linkType: hard @@ -3758,6 +3833,15 @@ __metadata: languageName: node linkType: hard +"@tybys/wasm-util@npm:^0.10.3": + version: 0.10.3 + resolution: "@tybys/wasm-util@npm:0.10.3" + dependencies: + tslib: ^2.4.0 + checksum: 865f76e01c5834550e634690fa85b21a89cac90d9ef65354e9f7b022582d85f394bf4b8b7710c987dac2b66bb3de37f1d79e28605c3e09b3384ae09a864b5ab6 + languageName: node + linkType: hard + "@types/babel__core@npm:^7.1.14": version: 7.1.19 resolution: "@types/babel__core@npm:7.1.19" @@ -3822,6 +3906,13 @@ __metadata: languageName: node linkType: hard +"@types/esrecurse@npm:^4.3.1": + version: 4.3.1 + resolution: "@types/esrecurse@npm:4.3.1" + checksum: ada5798554b76ac466e90fff26a769b65f905666f32988dcd1b6cf8288896e0fb53080843fd644bf731d16719a6e09b155d623ce36545b75abdd99bb6dcec114 + languageName: node + linkType: hard + "@types/estree@npm:*": version: 0.0.50 resolution: "@types/estree@npm:0.0.50" @@ -3836,6 +3927,13 @@ __metadata: languageName: node linkType: hard +"@types/estree@npm:^1.0.6, @types/estree@npm:^1.0.8": + version: 1.0.9 + resolution: "@types/estree@npm:1.0.9" + checksum: 752c0afee3ec82b8e24484bf6a27dfa093bbf3de4ef1c20ed0364fb6ad2c0c7971e7504ed9a7aaff103a47e2d945ce7a17f74951743dd944782a0735f53170de + languageName: node + linkType: hard + "@types/file-entry-cache@npm:^5.0.2": version: 5.0.2 resolution: "@types/file-entry-cache@npm:5.0.2" @@ -3906,17 +4004,17 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:^7.0.11, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.6, @types/json-schema@npm:^7.0.7, @types/json-schema@npm:^7.0.9": +"@types/json-schema@npm:^7.0.11, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.6, @types/json-schema@npm:^7.0.7": version: 7.0.11 resolution: "@types/json-schema@npm:7.0.11" checksum: 527bddfe62db9012fccd7627794bd4c71beb77601861055d87e3ee464f2217c85fca7a4b56ae677478367bbd248dbde13553312b7d4dbc702a2f2bbf60c4018d languageName: node linkType: hard -"@types/json5@npm:^0.0.29": - version: 0.0.29 - resolution: "@types/json5@npm:0.0.29" - checksum: e60b153664572116dfea673c5bda7778dbff150498f44f998e34b5886d8afc47f16799280e4b6e241c0472aef1bc36add771c569c68fc5125fc2ae519a3eb9ac +"@types/json-schema@npm:^7.0.15": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 languageName: node linkType: hard @@ -4026,13 +4124,6 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:^7.3.12": - version: 7.5.8 - resolution: "@types/semver@npm:7.5.8" - checksum: ea6f5276f5b84c55921785a3a27a3cd37afee0111dfe2bcb3e03c31819c197c782598f17f0b150a69d453c9584cd14c4c4d7b9a55d2c5e6cacd4d66fdb3b3663 - languageName: node - linkType: hard - "@types/stack-utils@npm:^2.0.0": version: 2.0.0 resolution: "@types/stack-utils@npm:2.0.0" @@ -4102,169 +4193,296 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^5.35.1": - version: 5.62.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" +"@typescript-eslint/eslint-plugin@npm:8.65.0, @typescript-eslint/eslint-plugin@npm:^8.0.0": + version: 8.65.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.65.0" dependencies: - "@eslint-community/regexpp": ^4.4.0 - "@typescript-eslint/scope-manager": 5.62.0 - "@typescript-eslint/type-utils": 5.62.0 - "@typescript-eslint/utils": 5.62.0 - debug: ^4.3.4 - graphemer: ^1.4.0 - ignore: ^5.2.0 - natural-compare-lite: ^1.4.0 - semver: ^7.3.7 - tsutils: ^3.21.0 + "@eslint-community/regexpp": ^4.12.2 + "@typescript-eslint/scope-manager": 8.65.0 + "@typescript-eslint/type-utils": 8.65.0 + "@typescript-eslint/utils": 8.65.0 + "@typescript-eslint/visitor-keys": 8.65.0 + ignore: ^7.0.5 + natural-compare: ^1.4.0 + ts-api-utils: ^2.5.0 peerDependencies: - "@typescript-eslint/parser": ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: fc104b389c768f9fa7d45a48c86d5c1ad522c1d0512943e782a56b1e3096b2cbcc1eea3fcc590647bf0658eef61aac35120a9c6daf979bf629ad2956deb516a1 + "@typescript-eslint/parser": ^8.65.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.1.0" + checksum: 993643021fdeafc78c70068f51826953557f61a718b7d83eb30e5520056a49b81203794a67c075057888716e84015e4e9ead4ab4b959233232140700008fcb51 languageName: node linkType: hard -"@typescript-eslint/parser@npm:^5.34.0": - version: 5.34.0 - resolution: "@typescript-eslint/parser@npm:5.34.0" +"@typescript-eslint/parser@npm:8.65.0, @typescript-eslint/parser@npm:^8.0.0": + version: 8.65.0 + resolution: "@typescript-eslint/parser@npm:8.65.0" dependencies: - "@typescript-eslint/scope-manager": 5.34.0 - "@typescript-eslint/types": 5.34.0 - "@typescript-eslint/typescript-estree": 5.34.0 - debug: ^4.3.4 + "@typescript-eslint/scope-manager": 8.65.0 + "@typescript-eslint/types": 8.65.0 + "@typescript-eslint/typescript-estree": 8.65.0 + "@typescript-eslint/visitor-keys": 8.65.0 + debug: ^4.4.3 peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: eacbfe1495998b7a00b1254631f410874d001a59163daac877265cace428eb608acc0320a2801d950dcd8900f63aa1e056507e022def9ac312f7eabe87a1e4a9 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.1.0" + checksum: dee3028799e6c78f9ae5d3bfe2c686ffad189f1ee349c4d68429e6b09ef3658910782d4078a465a7bcda97fd8a40250e2825e7648adaaf68e6c7188007ebefdc languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.34.0": - version: 5.34.0 - resolution: "@typescript-eslint/scope-manager@npm:5.34.0" +"@typescript-eslint/project-service@npm:8.65.0": + version: 8.65.0 + resolution: "@typescript-eslint/project-service@npm:8.65.0" dependencies: - "@typescript-eslint/types": 5.34.0 - "@typescript-eslint/visitor-keys": 5.34.0 - checksum: 039893fa1b8d349427c642a24932dba7932be823f860ce191691d999cd77ac99c3cc743ecd9dd68ad58ba987626e77c1ec458dad9534623e136766b9f9c5c9bf + "@typescript-eslint/tsconfig-utils": ^8.65.0 + "@typescript-eslint/types": ^8.65.0 + debug: ^4.4.3 + peerDependencies: + typescript: ">=4.8.4 <6.1.0" + checksum: ee847273f3976b13801be5658ecc6ff636fe69b09e24a6a236a818d7deaf74371a93148f9714ba2f92b3341043171bd02987683d79be9a054b72b1433f752520 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/scope-manager@npm:5.62.0" +"@typescript-eslint/scope-manager@npm:8.65.0": + version: 8.65.0 + resolution: "@typescript-eslint/scope-manager@npm:8.65.0" dependencies: - "@typescript-eslint/types": 5.62.0 - "@typescript-eslint/visitor-keys": 5.62.0 - checksum: 6062d6b797fe1ce4d275bb0d17204c827494af59b5eaf09d8a78cdd39dadddb31074dded4297aaf5d0f839016d601032857698b0e4516c86a41207de606e9573 + "@typescript-eslint/types": 8.65.0 + "@typescript-eslint/visitor-keys": 8.65.0 + checksum: 322079f75ed6c05e0570eb5216d1875f2649506901f2b7e4d2d79d1001829b4e52e085e3a7642978b66fe1872a8528dca35cc1767bc7d8888ba9333152833158 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/type-utils@npm:5.62.0" - dependencies: - "@typescript-eslint/typescript-estree": 5.62.0 - "@typescript-eslint/utils": 5.62.0 - debug: ^4.3.4 - tsutils: ^3.21.0 +"@typescript-eslint/tsconfig-utils@npm:8.65.0, @typescript-eslint/tsconfig-utils@npm:^8.65.0": + version: 8.65.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.65.0" peerDependencies: - eslint: "*" - peerDependenciesMeta: - typescript: - optional: true - checksum: fc41eece5f315dfda14320be0da78d3a971d650ea41300be7196934b9715f3fe1120a80207551eb71d39568275dbbcf359bde540d1ca1439d8be15e9885d2739 + typescript: ">=4.8.4 <6.1.0" + checksum: 72f70f24414da1afd4edc671117928d39d55d44244a2049ec30bdffcf8e3637239833e4a03deddbc66114b33778b25d343a6ed861d684af0cfaf14268b790ed7 languageName: node linkType: hard -"@typescript-eslint/types@npm:5.34.0": - version: 5.34.0 - resolution: "@typescript-eslint/types@npm:5.34.0" - checksum: 74ad0302ebac160d1b8178ff07183868018a9b558137c638140b24589ba71dbeccfcedf57156f4d6b7443b139e186ede24a01cba66132f0bda6f891d515878fb +"@typescript-eslint/type-utils@npm:8.65.0": + version: 8.65.0 + resolution: "@typescript-eslint/type-utils@npm:8.65.0" + dependencies: + "@typescript-eslint/types": 8.65.0 + "@typescript-eslint/typescript-estree": 8.65.0 + "@typescript-eslint/utils": 8.65.0 + debug: ^4.4.3 + ts-api-utils: ^2.5.0 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.1.0" + checksum: 6e22156402fa61f7441db772ad72ccc951dd5ecce9af2f5005543b93bde23c6924d556fa4035b7828aba9a34948b8584c6774c94e407d8d30f8d4334b1ee5924 languageName: node linkType: hard -"@typescript-eslint/types@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/types@npm:5.62.0" - checksum: 48c87117383d1864766486f24de34086155532b070f6264e09d0e6139449270f8a9559cfef3c56d16e3bcfb52d83d42105d61b36743626399c7c2b5e0ac3b670 +"@typescript-eslint/types@npm:8.65.0, @typescript-eslint/types@npm:^8.56.0, @typescript-eslint/types@npm:^8.65.0": + version: 8.65.0 + resolution: "@typescript-eslint/types@npm:8.65.0" + checksum: 61ecc6fb57a2806a69a9e1ed514bd7b7b2b81049ea6976d3ef70dacc8907d8800f21b5b270b0765e323a299e7d597add3334105e0f3ff395c3912bee2e8c24af languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.34.0": - version: 5.34.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.34.0" +"@typescript-eslint/typescript-estree@npm:8.65.0": + version: 8.65.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.65.0" dependencies: - "@typescript-eslint/types": 5.34.0 - "@typescript-eslint/visitor-keys": 5.34.0 - debug: ^4.3.4 - globby: ^11.1.0 - is-glob: ^4.0.3 - semver: ^7.3.7 - tsutils: ^3.21.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 2b9dac41d6dc544a2f61384ef8ed6559a15bdc19d9e49257829441dd166dd0ca395f4f6b42c97fbb2f006b1a6e7c8907c149add7644267b638ec7f1c0d01de30 + "@typescript-eslint/project-service": 8.65.0 + "@typescript-eslint/tsconfig-utils": 8.65.0 + "@typescript-eslint/types": 8.65.0 + "@typescript-eslint/visitor-keys": 8.65.0 + debug: ^4.4.3 + minimatch: ^10.2.2 + semver: ^7.7.3 + tinyglobby: ^0.2.15 + ts-api-utils: ^2.5.0 + peerDependencies: + typescript: ">=4.8.4 <6.1.0" + checksum: 0a0a29c90b7b510f84246c2b112a608fee83bd8ff4564a490168d0727376b387f090791397a6c4e794cdaa763a011f0477b36544a8e339926f69b83c570b3160 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" +"@typescript-eslint/utils@npm:8.65.0": + version: 8.65.0 + resolution: "@typescript-eslint/utils@npm:8.65.0" dependencies: - "@typescript-eslint/types": 5.62.0 - "@typescript-eslint/visitor-keys": 5.62.0 - debug: ^4.3.4 - globby: ^11.1.0 - is-glob: ^4.0.3 - semver: ^7.3.7 - tsutils: ^3.21.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 3624520abb5807ed8f57b1197e61c7b1ed770c56dfcaca66372d584ff50175225798bccb701f7ef129d62c5989070e1ee3a0aa2d84e56d9524dcf011a2bb1a52 + "@eslint-community/eslint-utils": ^4.9.1 + "@typescript-eslint/scope-manager": 8.65.0 + "@typescript-eslint/types": 8.65.0 + "@typescript-eslint/typescript-estree": 8.65.0 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.1.0" + checksum: c24b9ac2c60c416d8447e6b57c00a02c602e1bdeb0a62f767e3e9e62a20df12e171a7f6e13cb0179e1e41a73be37c77b08bfe27e115e6fc4463b601737909202 languageName: node linkType: hard -"@typescript-eslint/utils@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/utils@npm:5.62.0" +"@typescript-eslint/visitor-keys@npm:8.65.0": + version: 8.65.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.65.0" dependencies: - "@eslint-community/eslint-utils": ^4.2.0 - "@types/json-schema": ^7.0.9 - "@types/semver": ^7.3.12 - "@typescript-eslint/scope-manager": 5.62.0 - "@typescript-eslint/types": 5.62.0 - "@typescript-eslint/typescript-estree": 5.62.0 - eslint-scope: ^5.1.1 - semver: ^7.3.7 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: ee9398c8c5db6d1da09463ca7bf36ed134361e20131ea354b2da16a5fdb6df9ba70c62a388d19f6eebb421af1786dbbd79ba95ddd6ab287324fc171c3e28d931 + "@typescript-eslint/types": 8.65.0 + eslint-visitor-keys: ^5.0.0 + checksum: 34052098a3448cb337a33308763d57f5bcbbeb750d14241a91394d5242cd0bb90777626c16fe62b18ef990b57bee9a14a9a63f28bf466ee70533d6d86e1ee1f1 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.34.0": - version: 5.34.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.34.0" - dependencies: - "@typescript-eslint/types": 5.34.0 - eslint-visitor-keys: ^3.3.0 - checksum: b5574ce8363f905f0a11e14126ec606130bbcc151c326c004d0f510c8e4e884175a70e0299adb0a82ed817db469558d2d385137c09837249118e15cbfa47bff2 +"@unrs/resolver-binding-android-arm-eabi@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-android-arm-eabi@npm:1.12.2" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-android-arm64@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-android-arm64@npm:1.12.2" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-arm64@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.12.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-x64@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-darwin-x64@npm:1.12.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-freebsd-x64@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.12.2" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.12.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.12.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-gnu@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.12.2" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-musl@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.12.2" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-loong64-gnu@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-loong64-gnu@npm:1.12.2" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-loong64-musl@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-loong64-musl@npm:1.12.2" + conditions: os=linux & cpu=loong64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.12.2" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.12.2" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-riscv64-musl@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-riscv64-musl@npm:1.12.2" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-s390x-gnu@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.12.2" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-gnu@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.12.2" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-musl@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.12.2" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-openharmony-arm64@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-openharmony-arm64@npm:1.12.2" + conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" +"@unrs/resolver-binding-wasm32-wasi@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.12.2" dependencies: - "@typescript-eslint/types": 5.62.0 - eslint-visitor-keys: ^3.3.0 - checksum: 976b05d103fe8335bef5c93ad3f76d781e3ce50329c0243ee0f00c0fcfb186c81df50e64bfdd34970148113f8ade90887f53e3c4938183afba830b4ba8e30a35 + "@emnapi/core": 1.10.0 + "@emnapi/runtime": 1.10.0 + "@napi-rs/wasm-runtime": ^1.1.4 + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-arm64-msvc@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.12.2" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-ia32-msvc@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.12.2" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-x64-msvc@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.12.2" + conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -4369,7 +4587,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.1.0, acorn@npm:^8.4.1, acorn@npm:^8.8.0, acorn@npm:^8.8.2": +"acorn@npm:^8.1.0, acorn@npm:^8.4.1, acorn@npm:^8.8.2": version: 8.11.3 resolution: "acorn@npm:8.11.3" bin: @@ -4378,6 +4596,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^8.16.0": + version: 8.18.0 + resolution: "acorn@npm:8.18.0" + bin: + acorn: bin/acorn + checksum: 97d3e1696acb3e85b15c82a4193a9ecffe5df55ae408ed804e07955f3e3e53d0bbfdb9e5c9885c938371b78481f7667e36d12814764863d190de2117ed4757d7 + languageName: node + linkType: hard + "agent-base@npm:6": version: 6.0.2 resolution: "agent-base@npm:6.0.2" @@ -4458,15 +4685,15 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.10.0, ajv@npm:^6.12.4": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" +"ajv@npm:^6.14.0": + version: 6.15.0 + resolution: "ajv@npm:6.15.0" dependencies: fast-deep-equal: ^3.1.1 fast-json-stable-stringify: ^2.0.0 json-schema-traverse: ^0.4.1 uri-js: ^4.2.2 - checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 + checksum: a8e0308f1b44c3dfd1143911353be51bf8aedc2f2bcd595061755ad241c8450a10e4b657af8ba764c5ec9ae2162010f21d5e0d43763e20d782a8171da99b967a languageName: node linkType: hard @@ -4640,19 +4867,6 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.4": - version: 3.1.4 - resolution: "array-includes@npm:3.1.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.1 - get-intrinsic: ^1.1.1 - is-string: ^1.0.7 - checksum: 69967c38c52698f84b50a7aed5554aadc89c6ac6399b6d92ad061a5952f8423b4bba054c51d40963f791dfa294d7247cdd7988b6b1f2c5861477031c6386e1c0 - languageName: node - linkType: hard - "array-union@npm:^2.1.0": version: 2.1.0 resolution: "array-union@npm:2.1.0" @@ -4660,17 +4874,6 @@ __metadata: languageName: node linkType: hard -"array.prototype.flat@npm:^1.2.5": - version: 1.2.5 - resolution: "array.prototype.flat@npm:1.2.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.0 - checksum: 9cc6414b111abfc7717e39546e4887b1e5ec74df8f1618d83425deaa95752bf05d475d1d241253b4d88d4a01f8e1bc84845ad5b7cc2047f8db2f614512acd40e - languageName: node - linkType: hard - "arrify@npm:^1.0.1": version: 1.0.1 resolution: "arrify@npm:1.0.1" @@ -5035,6 +5238,15 @@ __metadata: languageName: node linkType: hard +"brace-expansion@npm:^5.0.8": + version: 5.0.9 + resolution: "brace-expansion@npm:5.0.9" + dependencies: + balanced-match: ^4.0.2 + checksum: 81d14bf63c4683fa03163320a0686ee34e67c4fba8525c26949cae42aae6020369a3263f01345ec456a8bc572ab762f85216d6700997ae9ef3eeecb7f3d8b28a + languageName: node + linkType: hard + "braces@npm:^3.0.2, braces@npm:^3.0.3, braces@npm:~3.0.2": version: 3.0.3 resolution: "braces@npm:3.0.3" @@ -5697,6 +5909,13 @@ __metadata: languageName: node linkType: hard +"comment-parser@npm:^1.4.1": + version: 1.4.7 + resolution: "comment-parser@npm:1.4.7" + checksum: c67247fce8c995352bb53af95bc9afb990dab781035a86ade9264a7ae3d052d89c3a8bb91f07997d748f63e4d8d5e01ebdc8dbb1c249bf555d1f6d4c4ef99524 + languageName: node + linkType: hard + "common-ancestor-path@npm:^2.0.0": version: 2.0.0 resolution: "common-ancestor-path@npm:2.0.0" @@ -6018,7 +6237,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" dependencies: @@ -6145,7 +6364,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:2.6.9, debug@npm:^2.6.9": +"debug@npm:2.6.9": version: 2.6.9 resolution: "debug@npm:2.6.9" dependencies: @@ -6166,16 +6385,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:^3.2.7": - version: 3.2.7 - resolution: "debug@npm:3.2.7" - dependencies: - ms: ^2.1.1 - checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c - languageName: node - linkType: hard - -"debug@npm:^4.4.3": +"debug@npm:^4.4.1, debug@npm:^4.4.3": version: 4.4.3 resolution: "debug@npm:4.4.3" dependencies: @@ -6403,24 +6613,6 @@ __metadata: languageName: node linkType: hard -"doctrine@npm:^2.1.0": - version: 2.1.0 - resolution: "doctrine@npm:2.1.0" - dependencies: - esutils: ^2.0.2 - checksum: a45e277f7feaed309fe658ace1ff286c6e2002ac515af0aaf37145b8baa96e49899638c7cd47dccf84c3d32abfc113246625b3ac8f552d1046072adee13b0dc8 - languageName: node - linkType: hard - -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: ^2.0.2 - checksum: fd7673ca77fe26cd5cba38d816bc72d641f500f1f9b25b83e8ce28827fe2da7ad583a8da26ab6af85f834138cf8dae9f69b0cd6ab925f52ddab1754db44d99ce - languageName: node - linkType: hard - "dom-serialize@npm:^2.2.1": version: 2.2.1 resolution: "dom-serialize@npm:2.2.1" @@ -6723,7 +6915,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.1": +"es-abstract@npm:^1.19.0": version: 1.19.1 resolution: "es-abstract@npm:1.19.1" dependencies: @@ -6931,166 +7123,146 @@ __metadata: languageName: node linkType: hard -"eslint-config-prettier@npm:^8.5.0": - version: 8.5.0 - resolution: "eslint-config-prettier@npm:8.5.0" +"eslint-config-prettier@npm:^9.0.0": + version: 9.1.2 + resolution: "eslint-config-prettier@npm:9.1.2" peerDependencies: eslint: ">=7.0.0" bin: eslint-config-prettier: bin/cli.js - checksum: 0d0f5c32e7a0ad91249467ce71ca92394ccd343178277d318baf32063b79ea90216f4c81d1065d60f96366fdc60f151d4d68ae7811a58bd37228b84c2083f893 - languageName: node - linkType: hard - -"eslint-import-resolver-node@npm:^0.3.6": - version: 0.3.6 - resolution: "eslint-import-resolver-node@npm:0.3.6" - dependencies: - debug: ^3.2.7 - resolve: ^1.20.0 - checksum: 6266733af1e112970e855a5bcc2d2058fb5ae16ad2a6d400705a86b29552b36131ffc5581b744c23d550de844206fb55e9193691619ee4dbf225c4bde526b1c8 + checksum: e786b767331094fd024cb1b0899964a9da0602eaf4ebd617d6d9794752ccd04dbe997e3c14c17f256c97af20bee1c83c9273f69b74cb2081b6f514580d62408f languageName: node linkType: hard -"eslint-module-utils@npm:^2.7.3": - version: 2.7.3 - resolution: "eslint-module-utils@npm:2.7.3" +"eslint-import-context@npm:^0.1.9": + version: 0.1.9 + resolution: "eslint-import-context@npm:0.1.9" dependencies: - debug: ^3.2.7 - find-up: ^2.1.0 - checksum: 77048263f309167a1e6a1e1b896bfb5ddd1d3859b2e2abbd9c32c432aee13d610d46e6820b1ca81b37fba437cf423a404bc6649be64ace9148a3062d1886a678 + get-tsconfig: ^4.10.1 + stable-hash-x: ^0.2.0 + peerDependencies: + unrs-resolver: ^1.0.0 + peerDependenciesMeta: + unrs-resolver: + optional: true + checksum: f0778126bb3aae57c8c68946c71c4418927e9d39f72099b799d9c47a3b5712d6c9166b63ee8be58a020961dcc9216df09c856b825336af375ccbbdeedfc82a99 languageName: node linkType: hard -"eslint-plugin-import@npm:^2.26.0": - version: 2.26.0 - resolution: "eslint-plugin-import@npm:2.26.0" +"eslint-plugin-import-x@npm:^4.0.0": + version: 4.17.1 + resolution: "eslint-plugin-import-x@npm:4.17.1" dependencies: - array-includes: ^3.1.4 - array.prototype.flat: ^1.2.5 - debug: ^2.6.9 - doctrine: ^2.1.0 - eslint-import-resolver-node: ^0.3.6 - eslint-module-utils: ^2.7.3 - has: ^1.0.3 - is-core-module: ^2.8.1 + "@typescript-eslint/types": ^8.56.0 + comment-parser: ^1.4.1 + debug: ^4.4.1 + eslint-import-context: ^0.1.9 is-glob: ^4.0.3 - minimatch: ^3.1.2 - object.values: ^1.1.5 - resolve: ^1.22.0 - tsconfig-paths: ^3.14.1 + minimatch: ^9.0.3 || ^10.1.2 + semver: ^7.7.2 + stable-hash-x: ^0.2.0 + unrs-resolver: ^1.9.2 peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: 0bf77ad80339554481eafa2b1967449e1f816b94c7a6f9614ce33fb4083c4e6c050f10d241dd50b4975d47922880a34de1e42ea9d8e6fd663ebb768baa67e655 + "@typescript-eslint/utils": ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + eslint-import-resolver-node: "*" + peerDependenciesMeta: + "@typescript-eslint/utils": + optional: true + eslint-import-resolver-node: + optional: true + checksum: c31339adb35bcdb1e4a42a96dd26703b318e99f8d1cea9c1799847842303acda91d10f0677e4c48cd4eea6b3e7f9c9e1e62313297edc04d078112776a4f25f4c languageName: node linkType: hard -"eslint-plugin-prettier@npm:^4.2.1": - version: 4.2.1 - resolution: "eslint-plugin-prettier@npm:4.2.1" +"eslint-plugin-prettier@npm:^5.0.0": + version: 5.5.6 + resolution: "eslint-plugin-prettier@npm:5.5.6" dependencies: - prettier-linter-helpers: ^1.0.0 + prettier-linter-helpers: ^1.0.1 + synckit: ^0.11.13 peerDependencies: - eslint: ">=7.28.0" - prettier: ">=2.0.0" + "@types/eslint": ">=8.0.0" + eslint: ">=8.0.0" + eslint-config-prettier: ">= 7.0.0 <10.0.0 || >=10.1.0" + prettier: ">=3.0.0" peerDependenciesMeta: + "@types/eslint": + optional: true eslint-config-prettier: optional: true - checksum: b9e839d2334ad8ec7a5589c5cb0f219bded260839a857d7a486997f9870e95106aa59b8756ff3f37202085ebab658de382b0267cae44c3a7f0eb0bcc03a4f6d6 + checksum: 9e2d94d6631af110966733d19aea15699ef684b543de23d1812423b35a02203ac87ef2d8784f236950ecc4026828e98f00e7c2b41879ee9c974a0a0563f1c754 languageName: node linkType: hard -"eslint-scope@npm:^5.1.1": - version: 5.1.1 - resolution: "eslint-scope@npm:5.1.1" - dependencies: - esrecurse: ^4.3.0 - estraverse: ^4.1.1 - checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb - languageName: node - linkType: hard - -"eslint-scope@npm:^7.1.1": - version: 7.1.1 - resolution: "eslint-scope@npm:7.1.1" +"eslint-scope@npm:^9.1.2": + version: 9.1.2 + resolution: "eslint-scope@npm:9.1.2" dependencies: + "@types/esrecurse": ^4.3.1 + "@types/estree": ^1.0.8 esrecurse: ^4.3.0 estraverse: ^5.2.0 - checksum: 9f6e974ab2db641ca8ab13508c405b7b859e72afe9f254e8131ff154d2f40c99ad4545ce326fd9fde3212ff29707102562a4834f1c48617b35d98c71a97fbf3e + checksum: ea1a4333f5912e1ec83328ecf8103b0bb9628beca10d5efc17ce63a825ed3ab0b68c036c2dbd3127cf71f51cc04fb4685a27aac082d55c2faf134391d06443af languageName: node linkType: hard -"eslint-utils@npm:^3.0.0": - version: 3.0.0 - resolution: "eslint-utils@npm:3.0.0" - dependencies: - eslint-visitor-keys: ^2.0.0 - peerDependencies: - eslint: ">=5" - checksum: 0668fe02f5adab2e5a367eee5089f4c39033af20499df88fe4e6aba2015c20720404d8c3d6349b6f716b08fdf91b9da4e5d5481f265049278099c4c836ccb619 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^2.0.0": - version: 2.1.0 - resolution: "eslint-visitor-keys@npm:2.1.0" - checksum: e3081d7dd2611a35f0388bbdc2f5da60b3a3c5b8b6e928daffff7391146b434d691577aa95064c8b7faad0b8a680266bcda0a42439c18c717b80e6718d7e267d - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.3.0": - version: 3.3.0 - resolution: "eslint-visitor-keys@npm:3.3.0" - checksum: d59e68a7c5a6d0146526b0eec16ce87fbf97fe46b8281e0d41384224375c4e52f5ffb9e16d48f4ea50785cde93f766b0c898e31ab89978d88b0e1720fbfb7808 +"eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60 languageName: node linkType: hard -"eslint@npm:^8.22.0": - version: 8.22.0 - resolution: "eslint@npm:8.22.0" - dependencies: - "@eslint/eslintrc": ^1.3.0 - "@humanwhocodes/config-array": ^0.10.4 - "@humanwhocodes/gitignore-to-minimatch": ^1.0.2 - ajv: ^6.10.0 - chalk: ^4.0.0 - cross-spawn: ^7.0.2 +"eslint-visitor-keys@npm:^5.0.0, eslint-visitor-keys@npm:^5.0.1": + version: 5.0.1 + resolution: "eslint-visitor-keys@npm:5.0.1" + checksum: d6cc6830536ab4a808f25325686c2c27862f27aab0c1ffed39627293b06cee05d95187da113cafd366314ea5be803b456115de71ad625e365020f20e2a6af89b + languageName: node + linkType: hard + +"eslint@npm:^10.0.0": + version: 10.8.0 + resolution: "eslint@npm:10.8.0" + dependencies: + "@eslint-community/eslint-utils": ^4.8.0 + "@eslint-community/regexpp": ^4.12.2 + "@eslint/config-array": ^0.23.5 + "@eslint/config-helpers": ^0.7.0 + "@eslint/core": ^1.2.1 + "@eslint/plugin-kit": ^0.7.2 + "@humanfs/node": ^0.16.6 + "@humanwhocodes/module-importer": ^1.0.1 + "@humanwhocodes/retry": ^0.4.2 + "@types/estree": ^1.0.6 + ajv: ^6.14.0 + cross-spawn: ^7.0.6 debug: ^4.3.2 - doctrine: ^3.0.0 escape-string-regexp: ^4.0.0 - eslint-scope: ^7.1.1 - eslint-utils: ^3.0.0 - eslint-visitor-keys: ^3.3.0 - espree: ^9.3.3 - esquery: ^1.4.0 + eslint-scope: ^9.1.2 + eslint-visitor-keys: ^5.0.1 + espree: ^11.2.0 + esquery: ^1.7.0 esutils: ^2.0.2 fast-deep-equal: ^3.1.3 - file-entry-cache: ^6.0.1 + file-entry-cache: ^8.0.0 find-up: ^5.0.0 - functional-red-black-tree: ^1.0.1 - glob-parent: ^6.0.1 - globals: ^13.15.0 - globby: ^11.1.0 - grapheme-splitter: ^1.0.4 + glob-parent: ^6.0.2 ignore: ^5.2.0 - import-fresh: ^3.0.0 imurmurhash: ^0.1.4 is-glob: ^4.0.0 - js-yaml: ^4.1.0 json-stable-stringify-without-jsonify: ^1.0.1 - levn: ^0.4.1 - lodash.merge: ^4.6.2 - minimatch: ^3.1.2 + minimatch: ^10.2.5 natural-compare: ^1.4.0 - optionator: ^0.9.1 - regexpp: ^3.2.0 - strip-ansi: ^6.0.1 - strip-json-comments: ^3.1.0 - text-table: ^0.2.0 - v8-compile-cache: ^2.0.3 + optionator: ^0.9.3 + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true bin: eslint: bin/eslint.js - checksum: 2d84a7a2207138cdb250759b047fdb05a57fede7f87b7a039d9370edba7f26e23a873a208becfd4b2c9e4b5499029f3fc3b9318da3290e693d25c39084119c80 + checksum: 3c746957d5e95fc888c44c2cd3e61696d7c152273b4c521ee36a4b6ed8f58a34d0ccd3d85a2924404d8c0731cff687d2a64047842cda4e76d34ffe0c453e0b25 languageName: node linkType: hard @@ -7106,14 +7278,14 @@ __metadata: languageName: node linkType: hard -"espree@npm:^9.3.2, espree@npm:^9.3.3": - version: 9.3.3 - resolution: "espree@npm:9.3.3" +"espree@npm:^11.2.0": + version: 11.2.0 + resolution: "espree@npm:11.2.0" dependencies: - acorn: ^8.8.0 + acorn: ^8.16.0 acorn-jsx: ^5.3.2 - eslint-visitor-keys: ^3.3.0 - checksum: 33e8a36fc15d082e68672e322e22a53856b564d60aad8f291a667bfc21b2c900c42412d37dd3c7a0f18b9d0d8f8858dabe8776dbd4b4c2f72c5cf4d6afeabf65 + eslint-visitor-keys: ^5.0.1 + checksum: 7545dc501ab5cff558af1aa290c7e586d7d2a83c9ecdcb5f2c8ba7ee6634b70f4083d1bed198ec17ddf11d3265751aa78e315b4d4c7506711066a4ef38c1084a languageName: node linkType: hard @@ -7127,12 +7299,12 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.0": - version: 1.4.0 - resolution: "esquery@npm:1.4.0" +"esquery@npm:^1.7.0": + version: 1.7.0 + resolution: "esquery@npm:1.7.0" dependencies: estraverse: ^5.1.0 - checksum: a0807e17abd7fbe5fbd4fab673038d6d8a50675cdae6b04fbaa520c34581be0c5fa24582990e8acd8854f671dd291c78bb2efb9e0ed5b62f33bac4f9cf820210 + checksum: 3239792b68cf39fe18966d0ca01549bb15556734f0144308fd213739b0f153671ae916013fce0bca032044a4dbcda98b43c1c667f20c20a54dec3597ac0d7c27 languageName: node linkType: hard @@ -7145,13 +7317,6 @@ __metadata: languageName: node linkType: hard -"estraverse@npm:^4.1.1": - version: 4.3.0 - resolution: "estraverse@npm:4.3.0" - checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 - languageName: node - linkType: hard - "estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": version: 5.2.0 resolution: "estraverse@npm:5.2.0" @@ -7535,6 +7700,15 @@ __metadata: languageName: node linkType: hard +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0" + dependencies: + flat-cache: ^4.0.0 + checksum: f67802d3334809048c69b3d458f672e1b6d26daefda701761c81f203b80149c35dea04d78ea4238969dd617678e530876722a0634c43031a0957f10cc3ed190f + languageName: node + linkType: hard + "filelist@npm:^1.0.4": version: 1.0.4 resolution: "filelist@npm:1.0.4" @@ -7575,7 +7749,7 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^2.0.0, find-up@npm:^2.1.0": +"find-up@npm:^2.0.0": version: 2.1.0 resolution: "find-up@npm:2.1.0" dependencies: @@ -7633,6 +7807,16 @@ __metadata: languageName: node linkType: hard +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" + dependencies: + flatted: ^3.2.9 + keyv: ^4.5.4 + checksum: 899fc86bf6df093547d76e7bfaeb900824b869d7d457d02e9b8aae24836f0a99fbad79328cfd6415ee8908f180699bf259dc7614f793447cb14f707caf5996f6 + languageName: node + linkType: hard + "flatted@npm:^3.1.0, flatted@npm:^3.2.5": version: 3.4.2 resolution: "flatted@npm:3.4.2" @@ -7640,6 +7824,13 @@ __metadata: languageName: node linkType: hard +"flatted@npm:^3.2.9": + version: 3.4.4 + resolution: "flatted@npm:3.4.4" + checksum: f13e7db38118fdc8deb497b27c8ce6877ea97f8afc96af2d633817d46d368a2fac9ed16c0df422722f876e9252b6fce92a628943b5bf1ce0681d07b949939fcc + languageName: node + linkType: hard + "follow-redirects@npm:^1.0.0": version: 1.16.0 resolution: "follow-redirects@npm:1.16.0" @@ -7807,13 +7998,6 @@ __metadata: languageName: node linkType: hard -"functional-red-black-tree@npm:^1.0.1": - version: 1.0.1 - resolution: "functional-red-black-tree@npm:1.0.1" - checksum: ca6c170f37640e2d94297da8bb4bf27a1d12bea3e00e6a3e007fd7aa32e37e000f5772acf941b4e4f3cf1c95c3752033d0c509af157ad8f526e7f00723b9eb9f - languageName: node - linkType: hard - "functions-have-names@npm:^1.2.2": version: 1.2.2 resolution: "functions-have-names@npm:1.2.2" @@ -7996,6 +8180,15 @@ __metadata: languageName: node linkType: hard +"get-tsconfig@npm:^4.10.1": + version: 4.14.0 + resolution: "get-tsconfig@npm:4.14.0" + dependencies: + resolve-pkg-maps: ^1.0.0 + checksum: d3b757791338a0ce419d741e0600e0d3c6f14cac92fd7db7bb050421680ceeb127d306f5022e8fd660a918e2d5a69db0bb8b0dd2ea3f265e0bbedc4674abccf8 + languageName: node + linkType: hard + "git-log-parser@npm:^1.2.0": version: 1.2.0 resolution: "git-log-parser@npm:1.2.0" @@ -8055,7 +8248,7 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:^6.0.1": +"glob-parent@npm:^6.0.2": version: 6.0.2 resolution: "glob-parent@npm:6.0.2" dependencies: @@ -8139,12 +8332,10 @@ __metadata: languageName: node linkType: hard -"globals@npm:^13.15.0": - version: 13.16.0 - resolution: "globals@npm:13.16.0" - dependencies: - type-fest: ^0.20.2 - checksum: e571b28462b8922a29ac78c8df89848cfd5dc9bdd5d8077440c022864f512a4aae82e7561a2f366337daa86fd4b366aec16fd3f08686de387e4089b01be6cb14 +"globals@npm:^16.0.0": + version: 16.5.0 + resolution: "globals@npm:16.5.0" + checksum: e0363245cfc6e36ac6bf940415160a05d66e7985fa3856d5383ad49292b6d249d80fd03759e09d6491109648a121849b23b77c7391a11862923e6995268a7cd6 languageName: node linkType: hard @@ -8215,20 +8406,6 @@ __metadata: languageName: node linkType: hard -"grapheme-splitter@npm:^1.0.4": - version: 1.0.4 - resolution: "grapheme-splitter@npm:1.0.4" - checksum: 0c22ec54dee1b05cd480f78cf14f732cb5b108edc073572c4ec205df4cd63f30f8db8025afc5debc8835a8ddeacf648a1c7992fe3dcd6ad38f9a476d84906620 - languageName: node - linkType: hard - -"graphemer@npm:^1.4.0": - version: 1.4.0 - resolution: "graphemer@npm:1.4.0" - checksum: bab8f0be9b568857c7bec9fda95a89f87b783546d02951c40c33f84d05bb7da3fd10f863a9beb901463669b6583173a8c8cc6d6b306ea2b9b9d5d3d943c3a673 - languageName: node - linkType: hard - "gzip-size@npm:^6.0.0": version: 6.0.0 resolution: "gzip-size@npm:6.0.0" @@ -8633,6 +8810,13 @@ __metadata: languageName: node linkType: hard +"ignore@npm:^7.0.5": + version: 7.0.6 + resolution: "ignore@npm:7.0.6" + checksum: ed00cd496f32cb0a074619e6772012583515f78496719959e0b0fe7f6c7333c97f19c8ec7fa78cfb90ab0d4f9041389dfddcef5c124de5dd793436c702e2c451 + languageName: node + linkType: hard + "immer@npm:^9.0.6": version: 9.0.6 resolution: "immer@npm:9.0.6" @@ -8871,7 +9055,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:2.9.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.0": +"is-core-module@npm:2.9.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.9.0": version: 2.9.0 resolution: "is-core-module@npm:2.9.0" dependencies: @@ -9844,6 +10028,13 @@ __metadata: languageName: node linkType: hard +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 + languageName: node + linkType: hard + "json-parse-better-errors@npm:^1.0.1": version: 1.0.2 resolution: "json-parse-better-errors@npm:1.0.2" @@ -9954,17 +10145,6 @@ __metadata: languageName: node linkType: hard -"json5@npm:^1.0.1": - version: 1.0.2 - resolution: "json5@npm:1.0.2" - dependencies: - minimist: ^1.2.0 - bin: - json5: lib/cli.js - checksum: 866458a8c58a95a49bef3adba929c625e82532bcff1fe93f01d29cb02cac7c3fe1f4b79951b7792c2da9de0b32871a8401a6e3c5b36778ad852bf5b8a61165d7 - languageName: node - linkType: hard - "json5@npm:^2.2.1": version: 2.2.1 resolution: "json5@npm:2.2.1" @@ -10193,6 +10373,15 @@ __metadata: languageName: node linkType: hard +"keyv@npm:^4.5.4": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: 3.0.1 + checksum: 74a24395b1c34bd44ad5cb2b49140d087553e170625240b86755a6604cd65aa16efdbdeae5cdb17ba1284a0fbb25ad06263755dbc71b8d8b06f74232ce3cdd72 + languageName: node + linkType: hard + "kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" @@ -10502,13 +10691,6 @@ __metadata: languageName: node linkType: hard -"lodash.merge@npm:^4.6.2": - version: 4.6.2 - resolution: "lodash.merge@npm:4.6.2" - checksum: ad580b4bdbb7ca1f7abf7e1bce63a9a0b98e370cf40194b03380a46b4ed799c9573029599caebc1b14e3f24b111aef72b96674a56cfa105e0f5ac70546cdc005 - languageName: node - linkType: hard - "lodash.topath@npm:^4.5.2": version: 4.5.2 resolution: "lodash.topath@npm:4.5.2" @@ -10651,7 +10833,7 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^15.0.0, make-fetch-happen@npm:^15.0.1, make-fetch-happen@npm:^15.0.4": +"make-fetch-happen@npm:^15.0.0, make-fetch-happen@npm:^15.0.1, make-fetch-happen@npm:^15.0.3, make-fetch-happen@npm:^15.0.4": version: 15.0.4 resolution: "make-fetch-happen@npm:15.0.4" dependencies: @@ -10923,6 +11105,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^10.2.4, minimatch@npm:^10.2.5, minimatch@npm:^9.0.3 || ^10.1.2": + version: 10.2.6 + resolution: "minimatch@npm:10.2.6" + dependencies: + brace-expansion: ^5.0.8 + checksum: 6f3d0ba7654a6d667dc1787a3684192d65e130cbcf02c1b0cf0d0b2f7f69ab41703d4d255dc171632dc25994527a35fb6ea7d44cc6132e4d93de5a2efb210bd1 + languageName: node + linkType: hard + "minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" @@ -11118,7 +11309,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:^2.1.1, ms@npm:^2.1.2, ms@npm:^2.1.3": +"ms@npm:^2.1.2, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -11195,10 +11386,12 @@ __metadata: languageName: node linkType: hard -"natural-compare-lite@npm:^1.4.0": - version: 1.4.0 - resolution: "natural-compare-lite@npm:1.4.0" - checksum: 5222ac3986a2b78dd6069ac62cbb52a7bf8ffc90d972ab76dfe7b01892485d229530ed20d0c62e79a6b363a663b273db3bde195a1358ce9e5f779d4453887225 +"napi-postinstall@npm:^0.3.4": + version: 0.3.4 + resolution: "napi-postinstall@npm:0.3.4" + bin: + napi-postinstall: lib/cli.js + checksum: 01672ae6568e2b3a6d985371f1504a6e1c791aa308b94c9f89736fde8251b7b8ab3227d1a5ede8d0eb0552099e069970b038c6958052c01b2bdc5aae31f0a88c languageName: node linkType: hard @@ -11730,17 +11923,6 @@ __metadata: languageName: node linkType: hard -"object.values@npm:^1.1.5": - version: 1.1.5 - resolution: "object.values@npm:1.1.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.1 - checksum: 0f17e99741ebfbd0fa55ce942f6184743d3070c61bd39221afc929c8422c4907618c8da694c6915bc04a83ab3224260c779ba37fc07bb668bdc5f33b66a902a4 - languageName: node - linkType: hard - "on-finished@npm:2.4.1": version: 2.4.1 resolution: "on-finished@npm:2.4.1" @@ -11796,17 +11978,17 @@ __metadata: languageName: node linkType: hard -"optionator@npm:^0.9.1": - version: 0.9.1 - resolution: "optionator@npm:0.9.1" +"optionator@npm:^0.9.3": + version: 0.9.4 + resolution: "optionator@npm:0.9.4" dependencies: deep-is: ^0.1.3 fast-levenshtein: ^2.0.6 levn: ^0.4.1 prelude-ls: ^1.2.1 type-check: ^0.4.0 - word-wrap: ^1.2.3 - checksum: dbc6fa065604b24ea57d734261914e697bd73b69eff7f18e967e8912aa2a40a19a9f599a507fa805be6c13c24c4eae8c71306c239d517d42d4c041c942f508a0 + word-wrap: ^1.2.5 + checksum: ecbd010e3dc73e05d239976422d9ef54a82a13f37c11ca5911dff41c98a6c7f0f163b27f922c37e7f8340af9d36febd3b6e9cef508f3339d4c393d7276d716bb languageName: node linkType: hard @@ -12256,6 +12438,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:^4.0.4": + version: 4.0.5 + resolution: "picomatch@npm:4.0.5" + checksum: 44f305aa44f33c15d304f2e887409961d1c14eebd465b5553d8aefddcfe7b5e40d208148adef8c21a21183dda2fdba1e83c8a56918e3b5e5d3db6bcaba5b7e12 + languageName: node + linkType: hard + "pify@npm:^3.0.0": version: 3.0.0 resolution: "pify@npm:3.0.0" @@ -12358,12 +12547,12 @@ __metadata: languageName: node linkType: hard -"prettier-linter-helpers@npm:^1.0.0": - version: 1.0.0 - resolution: "prettier-linter-helpers@npm:1.0.0" +"prettier-linter-helpers@npm:^1.0.1": + version: 1.0.1 + resolution: "prettier-linter-helpers@npm:1.0.1" dependencies: fast-diff: ^1.1.2 - checksum: 00ce8011cf6430158d27f9c92cfea0a7699405633f7f1d4a45f07e21bf78e99895911cbcdc3853db3a824201a7c745bd49bfea8abd5fb9883e765a90f74f8392 + checksum: 2dc35f5036a35f4c4f5e645887edda1436acb63687a7f12b2383e0a6f3c1f76b8a0a4709fe4d82e19157210feb5984b159bb714d43290022911ab53d606474ec languageName: node linkType: hard @@ -12376,6 +12565,15 @@ __metadata: languageName: node linkType: hard +"prettier@npm:^3.0.0": + version: 3.9.6 + resolution: "prettier@npm:3.9.6" + bin: + prettier: bin/prettier.cjs + checksum: 3fb6a3b6462b05afb825697a3fdcdd9bd1480c11d10d655b7ddbcaf2560beb695caffbe155b5020466005aa06bff74a61ba9c16e602bff849331b62f5db26cdf + languageName: node + linkType: hard + "pretty-format@npm:^27.5.1": version: 27.5.1 resolution: "pretty-format@npm:27.5.1" @@ -12867,13 +13065,6 @@ __metadata: languageName: node linkType: hard -"regexpp@npm:^3.2.0": - version: 3.2.0 - resolution: "regexpp@npm:3.2.0" - checksum: a78dc5c7158ad9ddcfe01aa9144f46e192ddbfa7b263895a70a5c6c73edd9ce85faf7c0430e59ac38839e1734e275b9c3de5c57ee3ab6edc0e0b1bdebefccef8 - languageName: node - linkType: hard - "regexpu-core@npm:^4.7.1": version: 4.7.1 resolution: "regexpu-core@npm:4.7.1" @@ -12982,6 +13173,13 @@ __metadata: languageName: node linkType: hard +"resolve-pkg-maps@npm:^1.0.0": + version: 1.0.0 + resolution: "resolve-pkg-maps@npm:1.0.0" + checksum: 1012afc566b3fdb190a6309cc37ef3b2dcc35dff5fa6683a9d00cd25c3247edfbc4691b91078c97adc82a29b77a2660c30d791d65dab4fc78bfc473f60289977 + languageName: node + linkType: hard + "resolve.exports@npm:^2.0.0": version: 2.0.2 resolution: "resolve.exports@npm:2.0.2" @@ -13121,16 +13319,17 @@ __metadata: "@types/node-fetch": ^2.5.12 "@types/node-powershell": ^3.1.1 "@types/text-table": ^0.2.2 - "@typescript-eslint/eslint-plugin": ^5.35.1 - "@typescript-eslint/parser": ^5.34.0 - eslint: ^8.22.0 - eslint-config-prettier: ^8.5.0 - eslint-plugin-import: ^2.26.0 - eslint-plugin-prettier: ^4.2.1 + "@typescript-eslint/eslint-plugin": ^8.0.0 + "@typescript-eslint/parser": ^8.0.0 + eslint: ^10.0.0 + eslint-config-prettier: ^9.0.0 + eslint-plugin-import-x: ^4.0.0 + eslint-plugin-prettier: ^5.0.0 expect: ^27.5.1 fast-glob: ^3.3.3 fetch-mock: ^12.6.0 file-entry-cache: ^6.0.1 + globals: ^16.0.0 husky: ^7.0.4 jest: ^29.7.0 jest-mock: ^29.7.0 @@ -13144,11 +13343,12 @@ __metadata: multi-semantic-release: ^3.1.0 node-powershell: ^4.0.0 patch-package: ^8.0.0 - prettier: ^2.4.1 + prettier: ^3.0.0 semantic-release: ^25.0.3 ts-jest: ^29.2.5 ts-node: ^10.8.2 typescript: 4.7.4 + typescript-eslint: ^8.0.0 languageName: unknown linkType: soft @@ -13322,6 +13522,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.7.3": + version: 7.8.5 + resolution: "semver@npm:7.8.5" + bin: + semver: bin/semver.js + checksum: 0c580f17e88e2b45806dc5cf3d824f719c946999d3554bf30307c2b68b3300ab3c8bfcd84d8f489b93b4cbb5362f5fc8de4d2858954f18d834253c4450fc9f6b + languageName: node + linkType: hard + "set-function-length@npm:^1.2.1, set-function-length@npm:^1.2.2": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" @@ -13437,16 +13646,16 @@ __metadata: linkType: hard "sigstore@npm:^4.0.0": - version: 4.1.1 - resolution: "sigstore@npm:4.1.1" + version: 4.1.0 + resolution: "sigstore@npm:4.1.0" dependencies: "@sigstore/bundle": ^4.0.0 - "@sigstore/core": ^3.2.1 + "@sigstore/core": ^3.1.0 "@sigstore/protobuf-specs": ^0.5.0 - "@sigstore/sign": ^4.1.1 - "@sigstore/tuf": ^4.0.2 - "@sigstore/verify": ^3.1.1 - checksum: 4ec76cf1ba00ba2a06b70d2495cb84996ef307d525d7f18663eac921f12ab898641d5bb98de7fa0c34b2f6dde0327b243f2ee773a859f261ef007aa5cfdd7463 + "@sigstore/sign": ^4.1.0 + "@sigstore/tuf": ^4.0.1 + "@sigstore/verify": ^3.1.0 + checksum: 3a74c1efe18eaa73161c1be216fb55b54a5cd95af5604c29df1922144bcee1e7e5ddd4f2652510397ff4166bc8941c19d715dcfc2ce262ee861e3798e84a8859 languageName: node linkType: hard @@ -13724,6 +13933,13 @@ __metadata: languageName: node linkType: hard +"stable-hash-x@npm:^0.2.0": + version: 0.2.0 + resolution: "stable-hash-x@npm:0.2.0" + checksum: ed5d814ff4d74e7873d4672584a8c136cc452995459fede2ee897784b658ba4bc338c9b7cf7cca4c5cc43a84dcf1ebac60c4aa01345e9b8609d0265e95837a6c + languageName: node + linkType: hard + "stack-utils@npm:^2.0.3": version: 2.0.3 resolution: "stack-utils@npm:2.0.3" @@ -13977,7 +14193,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 @@ -14053,6 +14269,15 @@ __metadata: languageName: node linkType: hard +"synckit@npm:^0.11.13": + version: 0.11.13 + resolution: "synckit@npm:0.11.13" + dependencies: + "@pkgr/core": ^0.3.6 + checksum: ec989ed45f3df2e7eb3141f00060669fbc6cac5649846d0579f336cee4ab047c8bac65baa75b4df991e1c1bd224675b10efbe69af3596ead5180ec81a6d4ec06 + languageName: node + linkType: hard + "tagged-tag@npm:^1.0.0": version: 1.0.0 resolution: "tagged-tag@npm:1.0.0" @@ -14245,6 +14470,16 @@ __metadata: languageName: node linkType: hard +"tinyglobby@npm:^0.2.15": + version: 0.2.17 + resolution: "tinyglobby@npm:0.2.17" + dependencies: + fdir: ^6.5.0 + picomatch: ^4.0.4 + checksum: 041e73eae568152c376551b21b8a27909d474166a8f405cdb0345991c50cf6afd0f878d7a387645d9c05d8ea2c9a55cc2fd2cfe6c5d5a5264770972b1adcad86 + languageName: node + linkType: hard + "tmp@npm:^0.2.1": version: 0.2.1 resolution: "tmp@npm:0.2.1" @@ -14344,6 +14579,15 @@ __metadata: languageName: node linkType: hard +"ts-api-utils@npm:^2.5.0": + version: 2.5.0 + resolution: "ts-api-utils@npm:2.5.0" + peerDependencies: + typescript: ">=4.8.4" + checksum: 5b2a2db7aa041d60b040df691ee5e73d534fb4cb3cf4fd6d2c27c584a32836a7ca8272fb23d865e673559ea639fdba35f8623249bf931df22188f0aaef7f0075 + languageName: node + linkType: hard + "ts-jest@npm:^29.2.5": version: 29.2.5 resolution: "ts-jest@npm:29.2.5" @@ -14440,19 +14684,7 @@ __metadata: languageName: node linkType: hard -"tsconfig-paths@npm:^3.14.1": - version: 3.14.1 - resolution: "tsconfig-paths@npm:3.14.1" - dependencies: - "@types/json5": ^0.0.29 - json5: ^1.0.1 - minimist: ^1.2.6 - strip-bom: ^3.0.0 - checksum: 8afa01c673ebb4782ba53d3a12df97fa837ce524f8ad38ee4e2b2fd57f5ac79abc21c574e9e9eb014d93efe7fe8214001b96233b5c6ea75bd1ea82afe17a4c6d - languageName: node - linkType: hard - -"tslib@npm:^1.14.1, tslib@npm:^1.8.1, tslib@npm:^1.9.0": +"tslib@npm:^1.14.1, tslib@npm:^1.9.0": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd @@ -14466,24 +14698,13 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.8.1": +"tslib@npm:^2.4.0, tslib@npm:^2.8.1": version: 2.8.1 resolution: "tslib@npm:2.8.1" checksum: e4aba30e632b8c8902b47587fd13345e2827fa639e7c3121074d5ee0880723282411a8838f830b55100cbe4517672f84a2472667d355b81e8af165a55dc6203a languageName: node linkType: hard -"tsutils@npm:^3.21.0": - version: 3.21.0 - resolution: "tsutils@npm:3.21.0" - dependencies: - tslib: ^1.8.1 - peerDependencies: - typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - checksum: 1843f4c1b2e0f975e08c4c21caa4af4f7f65a12ac1b81b3b8489366826259323feb3fc7a243123453d2d1a02314205a7634e048d4a8009921da19f99755cdc48 - languageName: node - linkType: hard - "tty-browserify@npm:^0.0.1": version: 0.0.1 resolution: "tty-browserify@npm:0.0.1" @@ -14541,13 +14762,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73 - languageName: node - linkType: hard - "type-fest@npm:^0.21.3": version: 0.21.3 resolution: "type-fest@npm:0.21.3" @@ -14641,6 +14855,21 @@ __metadata: languageName: node linkType: hard +"typescript-eslint@npm:^8.0.0": + version: 8.65.0 + resolution: "typescript-eslint@npm:8.65.0" + dependencies: + "@typescript-eslint/eslint-plugin": 8.65.0 + "@typescript-eslint/parser": 8.65.0 + "@typescript-eslint/typescript-estree": 8.65.0 + "@typescript-eslint/utils": 8.65.0 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.1.0" + checksum: 4373f9f34879a66983fa6ae0922796bb17df8d58aed7e38ffdb0b7b98813d4b1b2e3bd956a7fea9977bbe84fbe8a2038cb804ee127064be2e29761f764ffa2ff + languageName: node + linkType: hard + "typescript@npm:4.7.4": version: 4.7.4 resolution: "typescript@npm:4.7.4" @@ -14871,6 +15100,82 @@ __metadata: languageName: node linkType: hard +"unrs-resolver@npm:^1.9.2": + version: 1.12.2 + resolution: "unrs-resolver@npm:1.12.2" + dependencies: + "@unrs/resolver-binding-android-arm-eabi": 1.12.2 + "@unrs/resolver-binding-android-arm64": 1.12.2 + "@unrs/resolver-binding-darwin-arm64": 1.12.2 + "@unrs/resolver-binding-darwin-x64": 1.12.2 + "@unrs/resolver-binding-freebsd-x64": 1.12.2 + "@unrs/resolver-binding-linux-arm-gnueabihf": 1.12.2 + "@unrs/resolver-binding-linux-arm-musleabihf": 1.12.2 + "@unrs/resolver-binding-linux-arm64-gnu": 1.12.2 + "@unrs/resolver-binding-linux-arm64-musl": 1.12.2 + "@unrs/resolver-binding-linux-loong64-gnu": 1.12.2 + "@unrs/resolver-binding-linux-loong64-musl": 1.12.2 + "@unrs/resolver-binding-linux-ppc64-gnu": 1.12.2 + "@unrs/resolver-binding-linux-riscv64-gnu": 1.12.2 + "@unrs/resolver-binding-linux-riscv64-musl": 1.12.2 + "@unrs/resolver-binding-linux-s390x-gnu": 1.12.2 + "@unrs/resolver-binding-linux-x64-gnu": 1.12.2 + "@unrs/resolver-binding-linux-x64-musl": 1.12.2 + "@unrs/resolver-binding-openharmony-arm64": 1.12.2 + "@unrs/resolver-binding-wasm32-wasi": 1.12.2 + "@unrs/resolver-binding-win32-arm64-msvc": 1.12.2 + "@unrs/resolver-binding-win32-ia32-msvc": 1.12.2 + "@unrs/resolver-binding-win32-x64-msvc": 1.12.2 + napi-postinstall: ^0.3.4 + dependenciesMeta: + "@unrs/resolver-binding-android-arm-eabi": + optional: true + "@unrs/resolver-binding-android-arm64": + optional: true + "@unrs/resolver-binding-darwin-arm64": + optional: true + "@unrs/resolver-binding-darwin-x64": + optional: true + "@unrs/resolver-binding-freebsd-x64": + optional: true + "@unrs/resolver-binding-linux-arm-gnueabihf": + optional: true + "@unrs/resolver-binding-linux-arm-musleabihf": + optional: true + "@unrs/resolver-binding-linux-arm64-gnu": + optional: true + "@unrs/resolver-binding-linux-arm64-musl": + optional: true + "@unrs/resolver-binding-linux-loong64-gnu": + optional: true + "@unrs/resolver-binding-linux-loong64-musl": + optional: true + "@unrs/resolver-binding-linux-ppc64-gnu": + optional: true + "@unrs/resolver-binding-linux-riscv64-gnu": + optional: true + "@unrs/resolver-binding-linux-riscv64-musl": + optional: true + "@unrs/resolver-binding-linux-s390x-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-musl": + optional: true + "@unrs/resolver-binding-openharmony-arm64": + optional: true + "@unrs/resolver-binding-wasm32-wasi": + optional: true + "@unrs/resolver-binding-win32-arm64-msvc": + optional: true + "@unrs/resolver-binding-win32-ia32-msvc": + optional: true + "@unrs/resolver-binding-win32-x64-msvc": + optional: true + checksum: fb01fa1262533f358fa23119a66d742f71d1ac0efb5395f8c54df00843e1ee05e70e87765f27ead6e0d25bb6d9c9b233b1c30ccf33716de1e9edeaee6e020914 + languageName: node + linkType: hard + "update-browserslist-db@npm:^1.0.5": version: 1.0.5 resolution: "update-browserslist-db@npm:1.0.5" @@ -14972,13 +15277,6 @@ __metadata: languageName: node linkType: hard -"v8-compile-cache@npm:^2.0.3": - version: 2.1.0 - resolution: "v8-compile-cache@npm:2.1.0" - checksum: 6fd2ff57eba4a51d57350597a53e7e83fa99696270784d6b7cfc8473572bab81a7920b21a0c4042fdaefd9a69c9f28fc633e07779579b090548633525be0a7c5 - languageName: node - linkType: hard - "v8-to-istanbul@npm:^9.0.1": version: 9.0.1 resolution: "v8-to-istanbul@npm:9.0.1" @@ -15158,7 +15456,7 @@ __metadata: languageName: node linkType: hard -"word-wrap@npm:^1.2.3": +"word-wrap@npm:^1.2.5": version: 1.2.5 resolution: "word-wrap@npm:1.2.5" checksum: f93ba3586fc181f94afdaff3a6fef27920b4b6d9eaefed0f428f8e07adea2a7f54a5f2830ce59406c8416f033f86902b91eb824072354645eea687dff3691ccb From 103f65558d7c404c01f283c92261153006e1ce5c Mon Sep 17 00:00:00 2001 From: Mateusz Wronski Date: Fri, 31 Jul 2026 12:07:21 +0200 Subject: [PATCH 02/12] chore(repo): fix prettier formatting in docs/reference Co-Authored-By: Claude Sonnet 4.6 --- docs/reference/asyncapi-rules.md | 3 +++ docs/reference/openapi-rules.md | 2 ++ 2 files changed, 5 insertions(+) diff --git a/docs/reference/asyncapi-rules.md b/docs/reference/asyncapi-rules.md index d32be7b36..d0dadd359 100644 --- a/docs/reference/asyncapi-rules.md +++ b/docs/reference/asyncapi-rules.md @@ -75,6 +75,7 @@ info: title: Descriptive API description: >+ Some description about the general point of this API, and why it exists when another similar but different API also exists. + ``` ### asyncapi-info-license-url @@ -580,6 +581,7 @@ tags: - name: Invoice Items description: |+ Giant long explanation about what this business concept is, because other people _might_ not have a clue! + ``` **Recommended:** No @@ -792,6 +794,7 @@ info: - name: Invoice Items description: |+ Giant long explanation about what this business concept is, because other people _might_ not have a clue! + ``` **Recommended:** No diff --git a/docs/reference/openapi-rules.md b/docs/reference/openapi-rules.md index 7b2e51187..fdde96faf 100644 --- a/docs/reference/openapi-rules.md +++ b/docs/reference/openapi-rules.md @@ -105,6 +105,7 @@ info: title: Descriptive API description: >+ Some description about the general point of this API, and why it exists when another similar but different API also exists.## AuthenticationThis API uses OAuth2 and tokens can be requested from [Dev Portal: Tokens](https://example.org/developers/tokens). + ``` ### info-license @@ -406,6 +407,7 @@ tags: - name: Invoice Items description: |+ Giant long explanation about what this business concept is, because other people _might_ not have a clue! + ``` **Recommended:** No From ae03bed155f43d8e74372d079d96c6af2fc7a99a Mon Sep 17 00:00:00 2001 From: Mateusz Wronski Date: Fri, 31 Jul 2026 12:15:11 +0200 Subject: [PATCH 03/12] =?UTF-8?q?fix(ruleset-migrator):=20update=20prettie?= =?UTF-8?q?r=20v2=20=E2=86=92=20v3=20API=20usage=20in=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit prettier.format() is now async in v3; update standalone plugin imports from prettier/parser-babel to prettier/plugins/babel + prettier/plugins/estree, and declare the actual resolved version (^3.0.0) in the package's deps. Also broaden the ESLint test-file override glob to cover __tests__/** (was __tests__/*.ts, missing __helpers__ subdirectories), and revert Document to Document in tester.ts where TypeScript 4.7 requires any to satisfy the IParserResult constraint. Co-Authored-By: Claude Sonnet 4.6 --- eslint.config.mjs | 2 +- packages/ruleset-migrator/package.json | 2 +- .../ruleset-migrator/scripts/generate-test-fixtures.ts | 4 +++- packages/ruleset-migrator/src/__tests__/ruleset.test.ts | 9 +++++---- packages/rulesets/src/__tests__/__helpers__/tester.ts | 2 +- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index ea02e2487..ffa8da9cb 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -75,7 +75,7 @@ export default tseslint.config( // Test files: relax strict rules { - files: ['packages/*/src/**/__tests__/*.ts', 'test-harness/**/*.{ts,js}'], + files: ['packages/*/src/**/__tests__/**/*.ts', 'test-harness/**/*.{ts,js}'], rules: { '@typescript-eslint/strict-boolean-expressions': 'off', '@typescript-eslint/explicit-function-return-type': 'off', diff --git a/packages/ruleset-migrator/package.json b/packages/ruleset-migrator/package.json index d223ab834..6648299c0 100644 --- a/packages/ruleset-migrator/package.json +++ b/packages/ruleset-migrator/package.json @@ -42,7 +42,7 @@ "fetch-mock": "^12.6.0", "json-schema-to-typescript": "^10.1.5", "memfs": "^3.5.3", - "prettier": "^2.4.1" + "prettier": "^3.0.0" }, "scripts": { "pretest": "ts-node -T ./scripts/generate-test-fixtures.ts && yarn prebuild", diff --git a/packages/ruleset-migrator/scripts/generate-test-fixtures.ts b/packages/ruleset-migrator/scripts/generate-test-fixtures.ts index 108281062..3340e4877 100644 --- a/packages/ruleset-migrator/scripts/generate-test-fixtures.ts +++ b/packages/ruleset-migrator/scripts/generate-test-fixtures.ts @@ -38,7 +38,9 @@ function sortKeys(input: T): T { function assign(bundled: Record, name: string) { return async (input: string): Promise => { - bundled[name] = /\.[mc]js$/.test(name) ? prettier.format(input as string, { parser: 'babel' }) : (input as string); + bundled[name] = /\.[mc]js$/.test(name) + ? await prettier.format(input as string, { parser: 'babel' }) + : (input as string); }; } diff --git a/packages/ruleset-migrator/src/__tests__/ruleset.test.ts b/packages/ruleset-migrator/src/__tests__/ruleset.test.ts index f939217bf..ca9505afe 100644 --- a/packages/ruleset-migrator/src/__tests__/ruleset.test.ts +++ b/packages/ruleset-migrator/src/__tests__/ruleset.test.ts @@ -1,7 +1,8 @@ import { vol } from 'memfs'; import * as path from '@stoplight/path'; -import * as prettier from 'prettier/standalone'; -import * as parserBabel from 'prettier/parser-babel'; +import { format as prettierFormat } from 'prettier/standalone'; +import * as parserBabel from 'prettier/plugins/babel'; +import * as parserEstree from 'prettier/plugins/estree'; import { Ruleset } from '@stoplight/spectral-core'; import { DiagnosticSeverity } from '@stoplight/types'; import fetchMockLib, { FetchMock as FetchMockInstance } from 'fetch-mock'; @@ -46,12 +47,12 @@ describe('migrator', () => { ['esm', '.mjs'], ])('given %s format, should generate a valid bundle', async (format, ext) => { expect( - prettier.format( + await prettierFormat( await migrateRuleset(ruleset, { format, fs: vol as any, }), - { parser: 'babel', plugins: [parserBabel] }, + { parser: 'babel', plugins: [parserEstree, parserBabel] }, ), ).toEqual(await vol.promises.readFile(path.join(dir, `output${ext}`), 'utf8')); }); diff --git a/packages/rulesets/src/__tests__/__helpers__/tester.ts b/packages/rulesets/src/__tests__/__helpers__/tester.ts index a34b7c280..29aa647d3 100644 --- a/packages/rulesets/src/__tests__/__helpers__/tester.ts +++ b/packages/rulesets/src/__tests__/__helpers__/tester.ts @@ -11,7 +11,7 @@ export type RuleName = keyof Ruleset['rules']; type Scenario = ReadonlyArray< Readonly<{ name: string; - document: Record | Document; + document: Record | Document; errors: ReadonlyArray>; mocks?: Record>; }> From 58b8738acad8ec7aa70d8aef0d794905c37a5ae3 Mon Sep 17 00:00:00 2001 From: Mateusz Wronski Date: Fri, 31 Jul 2026 12:23:38 +0200 Subject: [PATCH 04/12] chore(deps): update yarn.lock for ruleset-migrator prettier ^3.0.0 Co-Authored-By: Claude Sonnet 4.6 --- yarn.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index 97e3ac9d4..acdb481e8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3520,7 +3520,7 @@ __metadata: fetch-mock: ^12.6.0 json-schema-to-typescript: ^10.1.5 memfs: ^3.5.3 - prettier: ^2.4.1 + prettier: ^3.0.0 reserved: 0.1.2 tslib: ^2.8.1 validate-npm-package-name: 3.0.0 From e32ffa0894713997276254c8402162aed9e80cce Mon Sep 17 00:00:00 2001 From: Mateusz Wronski Date: Fri, 31 Jul 2026 12:24:58 +0200 Subject: [PATCH 05/12] chore(deps): update ruleset-bundler prettier to ^3.0.0 Aligns declared version with what Yarn actually resolves via workspace hoisting. Co-Authored-By: Claude Sonnet 4.6 --- packages/ruleset-bundler/package.json | 2 +- yarn.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/ruleset-bundler/package.json b/packages/ruleset-bundler/package.json index 6cf4d930f..201d0fb8d 100644 --- a/packages/ruleset-bundler/package.json +++ b/packages/ruleset-bundler/package.json @@ -56,6 +56,6 @@ "@types/validate-npm-package-name": "^3.0.3", "fetch-mock": "^12.6.0", "memfs": "^3.5.3", - "prettier": "^2.4.1" + "prettier": "^3.0.0" } } diff --git a/yarn.lock b/yarn.lock index acdb481e8..0918895bb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3493,7 +3493,7 @@ __metadata: fetch-mock: ^12.6.0 memfs: ^3.5.3 pony-cause: 1.1.1 - prettier: ^2.4.1 + prettier: ^3.0.0 rollup: ~2.80.0 tslib: ^2.8.1 validate-npm-package-name: 3.0.0 @@ -12556,7 +12556,7 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^2.2.0, prettier@npm:^2.4.1": +"prettier@npm:^2.2.0": version: 2.4.1 resolution: "prettier@npm:2.4.1" bin: From 0d2f68c50a3146a3f610aa9f407fa9d382014011 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wro=C5=84ski?= Date: Fri, 31 Jul 2026 12:28:42 +0200 Subject: [PATCH 06/12] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- eslint.config.mjs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index ffa8da9cb..ab3a0cd4e 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -46,11 +46,10 @@ export default tseslint.config( files: ['packages/*/src/**/*.ts'], extends: [tseslint.configs.eslintRecommended, tseslint.configs.recommendedTypeChecked], plugins: { import: importPlugin }, - languageOptions: { parserOptions: { project: './tsconfig.eslint.json', - tsconfigRootDir: import.meta.dirname, - }, + tsconfigRootDir: new URL('.', import.meta.url).pathname, + } }, rules: { '@typescript-eslint/prefer-optional-chain': 'error', From 8d36dceaaf6704fa9695409b0ed3b27fe1ec0022 Mon Sep 17 00:00:00 2001 From: Mateusz Wronski Date: Fri, 31 Jul 2026 12:58:23 +0200 Subject: [PATCH 07/12] fix(core): replace unsound AggregateError cast with runtime narrowing in flatErrors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous cast to (RulesetValidationError | AggregateError)[] was unsound — AggregateError.errors is untyped by spec and can hold arbitrary values. Rewrite flatErrors to accept unknown, narrow with instanceof/ isAggregateError at runtime, and always return RulesetValidationError[]. This eliminates the cast, drops the Array.isArray branch in the caller, and silently discards unexpected entries rather than propagating them typed as RulesetValidationError. Co-Authored-By: Claude Sonnet 4.6 --- packages/core/src/ruleset/validation/errors.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/core/src/ruleset/validation/errors.ts b/packages/core/src/ruleset/validation/errors.ts index 362693c8b..5dca8ee2f 100644 --- a/packages/core/src/ruleset/validation/errors.ts +++ b/packages/core/src/ruleset/validation/errors.ts @@ -94,9 +94,7 @@ export function convertAjvErrors( return filteredErrors.flatMap(error => { if (error.keyword === 'x-spectral-runtime') { - const flat = flatErrors(error.params.errors); - const list = Array.isArray(flat) ? flat : [flat]; - return list.map(e => enrichWithLocation(e, sourceContext)); + return flatErrors(error.params.errors).map(e => enrichWithLocation(e, sourceContext)); } const path = error.instancePath.slice(1).split('/'); @@ -109,12 +107,16 @@ export function convertAjvErrors( }); } -function flatErrors(error: RulesetValidationError | AggregateError): RulesetValidationError | RulesetValidationError[] { +function flatErrors(error: unknown): RulesetValidationError[] { if (isAggregateError(error)) { - return (error.errors as (RulesetValidationError | AggregateError)[]).flatMap(flatErrors); + return error.errors.flatMap(flatErrors); } - return error; + if (error instanceof RulesetValidationError) { + return [error]; + } + + return []; } function resolveLocation( From 4e96e817b6d487e948d92bf494ac9193d854d6b4 Mon Sep 17 00:00:00 2001 From: Mateusz Wronski Date: Fri, 31 Jul 2026 13:06:40 +0200 Subject: [PATCH 08/12] fix(repo): restore languageOptions wrapper in eslint.config.mjs lost during rebase Co-Authored-By: Claude Sonnet 4.6 --- eslint.config.mjs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index ab3a0cd4e..ffa8da9cb 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -46,10 +46,11 @@ export default tseslint.config( files: ['packages/*/src/**/*.ts'], extends: [tseslint.configs.eslintRecommended, tseslint.configs.recommendedTypeChecked], plugins: { import: importPlugin }, + languageOptions: { parserOptions: { project: './tsconfig.eslint.json', - tsconfigRootDir: new URL('.', import.meta.url).pathname, - } + tsconfigRootDir: import.meta.dirname, + }, }, rules: { '@typescript-eslint/prefer-optional-chain': 'error', From f76b0af5eaab6c1e94ee835254392e9e3d4880e5 Mon Sep 17 00:00:00 2001 From: Mateusz Wronski Date: Fri, 31 Jul 2026 13:11:15 +0200 Subject: [PATCH 09/12] fix(repo): use fileURLToPath for tsconfigRootDir in eslint.config.mjs import.meta.dirname is only available from Node 18.20 / 20.11 / 21.2, but the repo engines field allows ^18.18. Use fileURLToPath(new URL('.', import.meta.url)) which works across all ESM-capable Node versions and is stable across rebases. Co-Authored-By: Claude Sonnet 4.6 --- eslint.config.mjs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index ffa8da9cb..da40a33ef 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -2,6 +2,7 @@ import tseslint from 'typescript-eslint'; import prettierConfig from 'eslint-plugin-prettier/recommended'; import importPlugin from 'eslint-plugin-import-x'; import globals from 'globals'; +import { fileURLToPath } from 'node:url'; export default tseslint.config( // Global ignores (replaces .eslintignore) @@ -49,7 +50,7 @@ export default tseslint.config( languageOptions: { parserOptions: { project: './tsconfig.eslint.json', - tsconfigRootDir: import.meta.dirname, + tsconfigRootDir: fileURLToPath(new URL('.', import.meta.url)), }, }, rules: { From e13dfa928e9106f56c49ddd7ecfd2cd24467ffb4 Mon Sep 17 00:00:00 2001 From: Mateusz Wronski Date: Fri, 31 Jul 2026 13:15:51 +0200 Subject: [PATCH 10/12] refactor(formatters,cli): replace eslint-disable with Number() coercion; simplify readFileDescriptor Replace no-unsafe-enum-comparison suppression comments in junit.ts and markdown.ts with Number() coercion that makes the intent clear and satisfies the linter properly. Remove dead Buffer branch in readFileDescriptor since setEncoding guarantees string chunks. Co-Authored-By: Claude Sonnet 4.6 --- .../cli/src/services/linter/utils/readFileDescriptor.ts | 6 +++--- packages/formatters/src/junit.ts | 5 +++-- packages/formatters/src/markdown.ts | 5 +++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/cli/src/services/linter/utils/readFileDescriptor.ts b/packages/cli/src/services/linter/utils/readFileDescriptor.ts index 91563b09f..123214f9b 100644 --- a/packages/cli/src/services/linter/utils/readFileDescriptor.ts +++ b/packages/cli/src/services/linter/utils/readFileDescriptor.ts @@ -9,10 +9,10 @@ export async function readFileDescriptor(fd: number, opts: IFileReadOptions): Pr stream.setEncoding(opts.encoding); stream.on('readable', () => { - let chunk: string | Buffer; + let chunk: string; - while ((chunk = stream.read() as string | Buffer) !== null) { - result += typeof chunk === 'string' ? chunk : chunk.toString(); + while ((chunk = stream.read() as string) !== null) { + result += chunk; } }); diff --git a/packages/formatters/src/junit.ts b/packages/formatters/src/junit.ts index a015845ed..dbdadcf99 100644 --- a/packages/formatters/src/junit.ts +++ b/packages/formatters/src/junit.ts @@ -48,8 +48,9 @@ export const junit: Formatter = (results, { failSeverity }) => { const classname = source.replace(new RegExp(`${escapeRegExp(extname(source))}$`), ''); if (validationResults.length > 0) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison - const filteredValidationResults = validationResults.filter(result => result.severity <= failSeverity); + const filteredValidationResults = validationResults.filter( + result => Number(result.severity) <= Number(failSeverity), + ); output += `\n`; diff --git a/packages/formatters/src/markdown.ts b/packages/formatters/src/markdown.ts index f43752c3f..0bda8fe6f 100644 --- a/packages/formatters/src/markdown.ts +++ b/packages/formatters/src/markdown.ts @@ -13,8 +13,9 @@ export const markdown: Formatter = (results, { failSeverity }, ctx?: FormatterCo validationResults.sort((a, b) => a.range.start.line - b.range.start.line); if (validationResults.length > 0) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison - const filteredValidationResults = validationResults.filter(result => result.severity <= failSeverity); + const filteredValidationResults = validationResults.filter( + result => Number(result.severity) <= Number(failSeverity), + ); for (const result of filteredValidationResults) { const ruleDocumentationUrl = getRuleDocumentationUrl(result.code, ctx); From 1c98e5a1d6b943184fc2ad419c2289aa737ceebe Mon Sep 17 00:00:00 2001 From: Mateusz Wronski Date: Wed, 5 Aug 2026 15:43:39 +0200 Subject: [PATCH 11/12] chore(formatters): update ESLint rules and remove unnecessary ignores --- .prettierignore | 1 - eslint.config.mjs | 5 ++++- packages/formatters/src/utils/xmlEscape.ts | 1 + .../functions/src/__tests__/__helpers__/tester.ts | 1 - packages/functions/src/index.ts | 1 + packages/functions/src/undefined.ts | 1 + packages/ruleset-migrator/src/validation/types.ts | 2 -- packages/rulesets/src/asyncapi/index.ts | 2 +- packages/rulesets/src/oas/index.ts | 2 +- .../src/shared/functions/serverVariables/index.ts | 12 ++++++------ 10 files changed, 15 insertions(+), 13 deletions(-) diff --git a/.prettierignore b/.prettierignore index 53ca1704e..205cc780c 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,5 +1,4 @@ **/__fixtures__/** -/test-harness/tests/ /packages/*/dist /packages/rulesets/src/oas/schemas/validators.ts /packages/rulesets/src/arazzo/schemas/validators.ts diff --git a/eslint.config.mjs b/eslint.config.mjs index da40a33ef..f56a81b80 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -9,7 +9,6 @@ export default tseslint.config( { ignores: [ '**/__fixtures__/**', - 'test-harness/tests/**', 'packages/*/dist/**', 'packages/rulesets/src/oas/schemas/validators.ts', 'packages/rulesets/src/arazzo/schemas/validators.ts', @@ -27,6 +26,8 @@ export default tseslint.config( }, rules: { 'no-console': 'error', + 'no-control-regex': 'error', + 'no-shadow-restricted-names': 'error', '@typescript-eslint/prefer-for-of': 'error', '@typescript-eslint/no-unused-vars': [ 'error', @@ -61,6 +62,7 @@ export default tseslint.config( '@typescript-eslint/strict-boolean-expressions': 'warn', '@typescript-eslint/only-throw-error': 'error', '@typescript-eslint/no-unsafe-argument': 'warn', + '@typescript-eslint/no-empty-function': 'error', 'import/no-extraneous-dependencies': [ 'error', { devDependencies: ['**/*.{test,spec}.ts', '**/__tests__/__helpers__/*.ts'] }, @@ -83,6 +85,7 @@ export default tseslint.config( '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-non-null-assertion': 'off', '@typescript-eslint/no-floating-promises': 'off', + '@typescript-eslint/no-empty-function': 'off', '@typescript-eslint/require-await': 'off', '@typescript-eslint/unbound-method': 'off', '@typescript-eslint/no-require-imports': 'off', diff --git a/packages/formatters/src/utils/xmlEscape.ts b/packages/formatters/src/utils/xmlEscape.ts index 81169ada5..2ef13ce94 100644 --- a/packages/formatters/src/utils/xmlEscape.ts +++ b/packages/formatters/src/utils/xmlEscape.ts @@ -30,6 +30,7 @@ * @private */ export const xmlEscape = (s: string): string => { + // eslint-disable-next-line no-control-regex return `${s}`.replace(/[<>&"'\x00-\x1F\x7F\u0080-\uFFFF]/gu, c => { switch (c) { case '<': diff --git a/packages/functions/src/__tests__/__helpers__/tester.ts b/packages/functions/src/__tests__/__helpers__/tester.ts index bc77112c5..3e594287a 100644 --- a/packages/functions/src/__tests__/__helpers__/tester.ts +++ b/packages/functions/src/__tests__/__helpers__/tester.ts @@ -9,7 +9,6 @@ import { } from '@stoplight/spectral-core'; export default async function ( - // eslint-disable-next-line @typescript-eslint/no-explicit-any fn: RulesetFunction | RulesetFunctionWithValidator, input: unknown, opts: O | null = null, diff --git a/packages/functions/src/index.ts b/packages/functions/src/index.ts index c4f016fa4..39393735c 100644 --- a/packages/functions/src/index.ts +++ b/packages/functions/src/index.ts @@ -7,6 +7,7 @@ import { default as length, Options as LengthOptions } from './length'; import { default as pattern, Options as PatternOptions } from './pattern'; import { default as schema, Options as SchemaOptions } from './schema'; import { default as truthy } from './truthy'; +// eslint-disable-next-line no-shadow-restricted-names import { default as undefined } from './undefined'; import { default as unreferencedReusableObject, diff --git a/packages/functions/src/undefined.ts b/packages/functions/src/undefined.ts index c172354e3..b743f5e53 100644 --- a/packages/functions/src/undefined.ts +++ b/packages/functions/src/undefined.ts @@ -8,6 +8,7 @@ export default createRulesetFunction( options: optionSchemas.undefined, }, + // eslint-disable-next-line no-shadow-restricted-names function undefined(targetVal) { if (typeof targetVal !== 'undefined') { return [ diff --git a/packages/ruleset-migrator/src/validation/types.ts b/packages/ruleset-migrator/src/validation/types.ts index ae4aa3d12..51f34705d 100644 --- a/packages/ruleset-migrator/src/validation/types.ts +++ b/packages/ruleset-migrator/src/validation/types.ts @@ -1,5 +1,3 @@ -/*eslint-disable*/ - export interface Ruleset { aliases?: { [k: string]: unknown; diff --git a/packages/rulesets/src/asyncapi/index.ts b/packages/rulesets/src/asyncapi/index.ts index da9abe6cd..235e1ad6c 100644 --- a/packages/rulesets/src/asyncapi/index.ts +++ b/packages/rulesets/src/asyncapi/index.ts @@ -15,7 +15,7 @@ import { pattern, unreferencedReusableObject, schema, - undefined, + undefined, // eslint-disable-line no-shadow-restricted-names alphabetical, } from '@stoplight/spectral-functions'; diff --git a/packages/rulesets/src/oas/index.ts b/packages/rulesets/src/oas/index.ts index 9ad40310f..103c7c47c 100644 --- a/packages/rulesets/src/oas/index.ts +++ b/packages/rulesets/src/oas/index.ts @@ -5,7 +5,7 @@ import { unreferencedReusableObject, schema, xor, - undefined, + undefined, // eslint-disable-line no-shadow-restricted-names alphabetical, length, } from '@stoplight/spectral-functions'; diff --git a/packages/rulesets/src/shared/functions/serverVariables/index.ts b/packages/rulesets/src/shared/functions/serverVariables/index.ts index bb850bb35..20d83048d 100644 --- a/packages/rulesets/src/shared/functions/serverVariables/index.ts +++ b/packages/rulesets/src/shared/functions/serverVariables/index.ts @@ -102,17 +102,17 @@ export default createRulesetFunction( const variable = variables[key]; - if ('enum' in variable) { - variablePairs.push([key, variable.enum!]); + if (variable.enum !== undefined) { + variablePairs.push([key, variable.enum]); - checkVariableEnumValues(results, ctx.path, key, variable.enum!, variable.default); - } else if ('default' in variable) { - variablePairs.push([key, [variable.default!]]); + checkVariableEnumValues(results, ctx.path, key, variable.enum, variable.default); + } else if (variable.default !== undefined) { + variablePairs.push([key, [variable.default]]); } else { variablePairs.push([key, []]); } - if (!('default' in variable) && opts?.requireDefault === true) { + if (variable.default === undefined && opts?.requireDefault === true) { results.push({ message: `Server Variable "${key}" has a missing default.`, path: [...ctx.path, 'variables', key], From ca27542b21fec2c685da3e796d377e7b31aee748 Mon Sep 17 00:00:00 2001 From: Mateusz Wronski Date: Wed, 5 Aug 2026 16:35:19 +0200 Subject: [PATCH 12/12] chore(repo): add no-non-null-assertion rule with warning level so that it's overriden in tests violations shall be fixed in the separate PR --- eslint.config.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/eslint.config.mjs b/eslint.config.mjs index f56a81b80..c9caac8ec 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -62,6 +62,7 @@ export default tseslint.config( '@typescript-eslint/strict-boolean-expressions': 'warn', '@typescript-eslint/only-throw-error': 'error', '@typescript-eslint/no-unsafe-argument': 'warn', + '@typescript-eslint/no-non-null-assertion': 'warn', '@typescript-eslint/no-empty-function': 'error', 'import/no-extraneous-dependencies': [ 'error',