From 86ed747797b6b954b83060de3b13c0ffb551ed49 Mon Sep 17 00:00:00 2001 From: Shinigami Date: Sat, 11 Jan 2025 12:17:58 +0100 Subject: [PATCH] chore(deps): upgrade eslint v9 (#1308) --- .eslintrc.cjs | 152 ---- eslint.config.ts | 256 +++++++ package.json | 18 +- pnpm-lock.yaml | 670 +++++++++--------- .../operators/createOperatorFamily.ts | 1 + test/db.spec.ts | 14 +- test/migration.spec.ts | 2 +- test/runner.spec.ts | 8 +- 8 files changed, 613 insertions(+), 508 deletions(-) delete mode 100644 .eslintrc.cjs create mode 100644 eslint.config.ts diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index 5e3e6426..00000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,152 +0,0 @@ -// @ts-check -const { defineConfig } = require('eslint-define-config'); -const { readGitignoreFiles } = require('eslint-gitignore'); - -/// -/// -/// - -module.exports = defineConfig({ - ignorePatterns: [ - ...readGitignoreFiles(), - 'templates', - '.eslintrc.cjs', // Skip self linting - ], - root: true, - env: { - node: true, - }, - reportUnusedDisableDirectives: true, - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/strict-type-checked', - 'plugin:unicorn/recommended', - 'plugin:prettier/recommended', - ], - parserOptions: { - project: ['./tsconfig.lint.json'], - warnOnUnsupportedTypeScriptVersion: false, - }, - rules: { - eqeqeq: ['error', 'always', { null: 'ignore' }], - 'no-else-return': 'error', - 'prefer-exponentiation-operator': 'error', - 'prefer-template': 'error', - quotes: 'off', - - 'unicorn/consistent-function-scoping': 'off', - 'unicorn/filename-case': 'off', - 'unicorn/import-style': [ - 'error', - { styles: { 'node:path': { named: true } } }, - ], - 'unicorn/no-array-callback-reference': 'off', // reduces readability - 'unicorn/no-array-reduce': 'off', - 'unicorn/no-nested-ternary': 'off', // incompatible with prettier - 'unicorn/no-null': 'off', // incompatible with TypeScript - 'unicorn/no-zero-fractions': 'off', // deactivated to raise awareness of floating operations - 'unicorn/number-literal-case': 'off', // incompatible with prettier - 'unicorn/prefer-module': 'off', - 'unicorn/prefer-ternary': 'off', // ternaries aren't always better - 'unicorn/prefer-type-error': 'off', - - // TODO @Shinigami92 2024-04-27: Potentially enable later - 'unicorn/no-process-exit': 'off', - 'unicorn/prefer-at': 'off', - 'unicorn/prefer-native-coercion-functions': 'off', - 'unicorn/prefer-string-raw': 'off', - 'unicorn/prefer-string-replace-all': 'off', - 'unicorn/prefer-structured-clone': 'off', - 'unicorn/prefer-top-level-await': 'off', - 'unicorn/prevent-abbreviations': 'off', - - '@typescript-eslint/array-type': [ - 'error', - { default: 'array-simple', readonly: 'generic' }, - ], - '@typescript-eslint/ban-ts-comment': [ - 'error', - { - 'ts-expect-error': 'allow-with-description', - 'ts-ignore': 'allow-with-description', - }, - ], - '@typescript-eslint/consistent-type-exports': 'error', - '@typescript-eslint/consistent-type-imports': [ - 'error', - { - prefer: 'type-imports', - disallowTypeAnnotations: false, - fixStyle: 'separate-type-imports', - }, - ], - '@typescript-eslint/explicit-module-boundary-types': 'error', - '@typescript-eslint/naming-convention': [ - 'error', - { - format: ['PascalCase'], - selector: ['class', 'interface', 'typeAlias'], - leadingUnderscore: 'forbid', - trailingUnderscore: 'forbid', - }, - { - format: ['UPPER_CASE', 'snake_case'], - selector: ['enumMember'], - leadingUnderscore: 'forbid', - trailingUnderscore: 'forbid', - }, - { - format: ['PascalCase'], - selector: ['typeParameter'], - prefix: ['T'], - leadingUnderscore: 'forbid', - trailingUnderscore: 'forbid', - }, - ], - '@typescript-eslint/no-inferrable-types': [ - 'error', - { ignoreParameters: true }, - ], - '@typescript-eslint/no-non-null-assertion': 'warn', - '@typescript-eslint/no-redundant-type-constituents': 'off', - '@typescript-eslint/no-unnecessary-condition': 'off', // requires `strictNullChecks` to be enabled - '@typescript-eslint/no-unsafe-assignment': 'off', - '@typescript-eslint/no-unsafe-call': 'off', - '@typescript-eslint/no-unsafe-member-access': 'off', - '@typescript-eslint/padding-line-between-statements': [ - 'error', - { blankLine: 'always', prev: 'block-like', next: '*' }, - ], - '@typescript-eslint/prefer-regexp-exec': 'error', - '@typescript-eslint/quotes': ['error', 'single', { avoidEscape: true }], - // TODO @Shinigami92 2024-02-29: Enable restrict-template-expressions later - // '@typescript-eslint/restrict-template-expressions': [ - // 'error', - // { allowNumber: true, allowBoolean: true }, - // ], - '@typescript-eslint/switch-exhaustiveness-check': [ - 'error', - { requireDefaultForNonUnion: true }, - ], - '@typescript-eslint/unbound-method': 'off', - - // TODO @Shinigami92 2024-02-29: Remove these later - '@typescript-eslint/no-base-to-string': 'off', - '@typescript-eslint/no-floating-promises': 'off', - '@typescript-eslint/no-unsafe-argument': 'off', - '@typescript-eslint/no-unsafe-return': 'off', - '@typescript-eslint/no-var-requires': 'off', - '@typescript-eslint/restrict-template-expressions': 'off', - '@typescript-eslint/unified-signatures': 'off', - }, - overrides: [ - { - files: ['test/migrations/*.js'], - rules: { - 'unicorn/prefer-module': 'off', - - '@typescript-eslint/no-throw-literal': 'off', - }, - }, - ], -}); diff --git a/eslint.config.ts b/eslint.config.ts new file mode 100644 index 00000000..502158ca --- /dev/null +++ b/eslint.config.ts @@ -0,0 +1,256 @@ +import { includeIgnoreFile } from '@eslint/compat'; +import eslint from '@eslint/js'; +import stylistic from '@stylistic/eslint-plugin'; +import eslintPluginVitest from '@vitest/eslint-plugin'; +import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; +import eslintPluginUnicorn from 'eslint-plugin-unicorn'; +import { dirname, resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import tseslint from 'typescript-eslint'; + +const __filename = fileURLToPath( + // @ts-expect-error: tsconfig needs to be configured to support 'import.meta' + import.meta.url +); +const __dirname = dirname(__filename); +const gitignorePath = resolve(__dirname, '.gitignore'); + +const config: ReturnType = tseslint.config( + //#region global + includeIgnoreFile(gitignorePath), + { + name: 'manual ignores', + ignores: [ + 'docs/.vitepress/config.mts', + 'docs/.vitepress/theme/index.ts', + 'templates', + '.prettierrc.js', + ], + }, + { + name: 'linter options', + linterOptions: { + reportUnusedDisableDirectives: 'error', + }, + }, + //#endregion + + //#region eslint (js) + eslint.configs.recommended, + { + name: 'eslint overrides', + rules: { + eqeqeq: ['error', 'always', { null: 'ignore' }], + 'logical-assignment-operators': 'error', + 'no-else-return': 'error', + 'prefer-exponentiation-operator': 'error', + 'prefer-template': 'error', + }, + }, + //#endregion + + //#region typescript-eslint + ...tseslint.configs.strictTypeChecked, + { + name: 'typescript-eslint overrides', + languageOptions: { + parserOptions: { + // project: true, + project: './tsconfig.lint.json', + warnOnUnsupportedTypeScriptVersion: false, + }, + }, + rules: { + '@typescript-eslint/array-type': [ + 'error', + { default: 'array-simple', readonly: 'generic' }, + ], + '@typescript-eslint/ban-ts-comment': [ + 'error', + { + 'ts-expect-error': 'allow-with-description', + 'ts-ignore': 'allow-with-description', + }, + ], + '@typescript-eslint/consistent-type-imports': [ + 'error', + { + prefer: 'type-imports', + disallowTypeAnnotations: false, + fixStyle: 'separate-type-imports', + }, + ], + '@typescript-eslint/explicit-module-boundary-types': 'error', + '@typescript-eslint/naming-convention': [ + 'error', + { + format: ['PascalCase'], + selector: ['class', 'interface', 'typeAlias'], + leadingUnderscore: 'forbid', + trailingUnderscore: 'forbid', + }, + { + format: ['UPPER_CASE', 'snake_case'], + selector: ['enumMember'], + leadingUnderscore: 'forbid', + trailingUnderscore: 'forbid', + }, + { + format: ['PascalCase'], + selector: ['typeParameter'], + prefix: ['T'], + leadingUnderscore: 'forbid', + trailingUnderscore: 'forbid', + }, + ], + '@typescript-eslint/no-confusing-void-expression': [ + 'error', + { + ignoreArrowShorthand: true, + }, + ], + '@typescript-eslint/no-inferrable-types': [ + 'error', + { ignoreParameters: true }, + ], + '@typescript-eslint/no-non-null-assertion': 'warn', + '@typescript-eslint/no-unnecessary-condition': 'off', // requires `strictNullChecks` to be enabled + '@typescript-eslint/no-unsafe-assignment': 'off', + '@typescript-eslint/no-unsafe-call': 'off', + '@typescript-eslint/no-unsafe-member-access': 'off', + '@typescript-eslint/prefer-regexp-exec': 'error', + '@typescript-eslint/restrict-plus-operands': [ + 'error', + { + allowAny: false, + allowBoolean: false, + allowNullish: false, + allowNumberAndString: true, + allowRegExp: false, + }, + ], + // TODO @Shinigami92 2024-02-29: Enable restrict-template-expressions later + // '@typescript-eslint/restrict-template-expressions': [ + // 'error', + // { allowNumber: true, allowBoolean: true }, + // ], + '@typescript-eslint/switch-exhaustiveness-check': [ + 'error', + { requireDefaultForNonUnion: true }, + ], + '@typescript-eslint/unbound-method': 'off', + + // TODO @Shinigami92 2024-02-29: Remove these later + '@typescript-eslint/consistent-type-exports': 'off', + '@typescript-eslint/no-base-to-string': 'off', + '@typescript-eslint/no-deprecated': 'off', + '@typescript-eslint/no-floating-promises': 'off', + '@typescript-eslint/no-unnecessary-type-parameters': 'off', + '@typescript-eslint/no-unsafe-argument': 'off', + '@typescript-eslint/no-unsafe-return': 'off', + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/restrict-template-expressions': 'off', + '@typescript-eslint/unified-signatures': 'off', + }, + }, + //#endregion + + //#region stylistic + { + name: 'stylistic overrides', + plugins: { + '@stylistic': stylistic, + }, + rules: { + '@stylistic/padding-line-between-statements': [ + 'error', + { blankLine: 'always', prev: 'block-like', next: '*' }, + ], + }, + }, + //#endregion + + //#region unicorn + eslintPluginUnicorn.configs['flat/recommended'], + { + name: 'unicorn overrides', + rules: { + 'unicorn/filename-case': 'off', + 'unicorn/import-style': 'off', // subjective & doesn't do anything for us + 'unicorn/no-array-callback-reference': 'off', // reduces readability + 'unicorn/no-nested-ternary': 'off', // incompatible with prettier + 'unicorn/no-object-as-default-parameter': 'off', // https://github.com/sindresorhus/eslint-plugin-unicorn/issues/2199 + 'unicorn/no-null': 'off', // incompatible with TypeScript + 'unicorn/no-zero-fractions': 'off', // deactivated to raise awareness of floating operations + 'unicorn/number-literal-case': 'off', // incompatible with prettier + 'unicorn/numeric-separators-style': 'off', // "magic numbers" may carry specific meaning + 'unicorn/prefer-string-slice': 'off', // string.substring is sometimes easier to use + 'unicorn/prefer-ternary': 'off', // ternaries aren't always better + + // TODO @Shinigami92 2024-04-27: Potentially enable later + 'unicorn/consistent-existence-index-check': 'off', + 'unicorn/consistent-function-scoping': 'off', + 'unicorn/no-process-exit': 'off', + 'unicorn/prefer-at': 'off', + 'unicorn/prefer-native-coercion-functions': 'off', + 'unicorn/prefer-string-raw': 'off', + 'unicorn/prefer-string-replace-all': 'off', + 'unicorn/prefer-structured-clone': 'off', + 'unicorn/prefer-top-level-await': 'off', + 'unicorn/prefer-type-error': 'off', + 'unicorn/prevent-abbreviations': 'off', + }, + }, + //#endregion + + //#region prettier + eslintPluginPrettierRecommended, + //#endregion + + //#region overrides + { + name: 'test/**/*.ts overrides', + files: ['test/**/*.spec.ts', 'test/**/*.spec.d.ts'], + plugins: { + vitest: eslintPluginVitest, + }, + rules: { + 'deprecation/deprecation': 'off', + + '@typescript-eslint/restrict-template-expressions': [ + 'error', + { + allowNumber: true, + allowBoolean: true, + allowAny: true, + }, + ], + + ...eslintPluginVitest.configs.recommended.rules, + + 'vitest/expect-expect': 'off', + 'vitest/no-alias-methods': 'error', + 'vitest/prefer-each': 'error', + 'vitest/prefer-to-have-length': 'error', + 'vitest/valid-expect': ['error', { maxArgs: 2 }], + }, + settings: { + vitest: { + typecheck: true, + }, + }, + }, + { + name: 'test/migrations/*.js overrides', + rules: { + 'no-undef': 'off', + 'unicorn/prefer-module': 'off', + '@typescript-eslint/no-require-imports': 'off', + '@typescript-eslint/no-throw-literal': 'off', + 'unicorn/no-array-reduce': 'off', + }, + } + //#endregion +); + +export default config; diff --git a/package.json b/package.json index 1629f1fe..8cfcd050 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "build:types": "tsc --project tsconfig.build.json", "build": "run-s build:clean build:code build:types build:bin", "format": "prettier --cache --write .", - "lint": "eslint --cache --cache-strategy content --report-unused-disable-directives .", + "lint": "eslint --cache --cache-strategy content .", "ts-check": "tsc", "test": "vitest", "test:update-snapshots": "vitest run -u", @@ -101,27 +101,28 @@ "yargs": "~17.7.0" }, "devDependencies": { - "@eslint-types/prettier": "5.1.3", - "@eslint-types/typescript-eslint": "7.5.0", - "@eslint-types/unicorn": "52.0.0", + "@eslint/compat": "1.2.5", + "@eslint/js": "9.18.0", + "@stylistic/eslint-plugin": "2.12.1", "@types/config": "3.3.5", + "@types/eslint__js": "8.42.3", "@types/node": "18.19.70", "@types/pg": "8.11.10", "@types/yargs": "17.0.33", - "@typescript-eslint/eslint-plugin": "7.18.0", - "@typescript-eslint/parser": "7.18.0", "@vitest/coverage-v8": "2.1.8", + "@vitest/eslint-plugin": "1.1.20", "@vitest/ui": "2.1.8", "config": "3.3.12", "cross-env": "7.0.3", "dotenv": "16.4.7", "dotenv-expand": "11.0.7", - "eslint": "8.57.1", + "eslint": "9.18.0", "eslint-config-prettier": "9.1.0", "eslint-define-config": "2.1.0", "eslint-gitignore": "0.1.0", "eslint-plugin-prettier": "5.2.1", - "eslint-plugin-unicorn": "55.0.0", + "eslint-plugin-unicorn": "56.0.1", + "jiti": "2.4.2", "json5": "2.2.3", "node-pg-migrate": "file:.", "npm-run-all2": "6.2.6", @@ -134,6 +135,7 @@ "tsup": "8.3.5", "tsx": "4.19.2", "typescript": "5.7.3", + "typescript-eslint": "8.19.1", "vitepress": "1.5.0", "vitest": "2.1.8" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 55744bcd..0de5d41e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,18 +15,21 @@ importers: specifier: ~17.7.0 version: 17.7.2 devDependencies: - '@eslint-types/prettier': - specifier: 5.1.3 - version: 5.1.3 - '@eslint-types/typescript-eslint': - specifier: 7.5.0 - version: 7.5.0 - '@eslint-types/unicorn': - specifier: 52.0.0 - version: 52.0.0 + '@eslint/compat': + specifier: 1.2.5 + version: 1.2.5(eslint@9.18.0(jiti@2.4.2)) + '@eslint/js': + specifier: 9.18.0 + version: 9.18.0 + '@stylistic/eslint-plugin': + specifier: 2.12.1 + version: 2.12.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) '@types/config': specifier: 3.3.5 version: 3.3.5 + '@types/eslint__js': + specifier: 8.42.3 + version: 8.42.3 '@types/node': specifier: 18.19.70 version: 18.19.70 @@ -36,15 +39,12 @@ importers: '@types/yargs': specifier: 17.0.33 version: 17.0.33 - '@typescript-eslint/eslint-plugin': - specifier: 7.18.0 - version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3) - '@typescript-eslint/parser': - specifier: 7.18.0 - version: 7.18.0(eslint@8.57.1)(typescript@5.7.3) '@vitest/coverage-v8': specifier: 2.1.8 version: 2.1.8(vitest@2.1.8) + '@vitest/eslint-plugin': + specifier: 1.1.20 + version: 1.1.20(@typescript-eslint/utils@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)(vitest@2.1.8) '@vitest/ui': specifier: 2.1.8 version: 2.1.8(vitest@2.1.8) @@ -61,23 +61,26 @@ importers: specifier: 11.0.7 version: 11.0.7 eslint: - specifier: 8.57.1 - version: 8.57.1 + specifier: 9.18.0 + version: 9.18.0(jiti@2.4.2) eslint-config-prettier: specifier: 9.1.0 - version: 9.1.0(eslint@8.57.1) + version: 9.1.0(eslint@9.18.0(jiti@2.4.2)) eslint-define-config: specifier: 2.1.0 version: 2.1.0 eslint-gitignore: specifier: 0.1.0 - version: 0.1.0(eslint@8.57.1) + version: 0.1.0(eslint@9.18.0(jiti@2.4.2)) eslint-plugin-prettier: specifier: 5.2.1 - version: 5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.2) + version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.18.0(jiti@2.4.2)))(eslint@9.18.0(jiti@2.4.2))(prettier@3.4.2) eslint-plugin-unicorn: - specifier: 55.0.0 - version: 55.0.0(eslint@8.57.1) + specifier: 56.0.1 + version: 56.0.1(eslint@9.18.0(jiti@2.4.2)) + jiti: + specifier: 2.4.2 + version: 2.4.2 json5: specifier: 2.2.3 version: 2.2.3 @@ -107,13 +110,16 @@ importers: version: 10.9.2(@types/node@18.19.70)(typescript@5.7.3) tsup: specifier: 8.3.5 - version: 8.3.5(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3) + version: 8.3.5(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3) tsx: specifier: 4.19.2 version: 4.19.2 typescript: specifier: 5.7.3 version: 5.7.3 + typescript-eslint: + specifier: 8.19.1 + version: 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) vitepress: specifier: 1.5.0 version: 1.5.0(@algolia/client-search@5.19.0)(@types/node@18.19.70)(postcss@8.4.49)(search-insights@2.17.3)(typescript@5.7.3) @@ -692,35 +698,58 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-types/prettier@5.1.3': - resolution: {integrity: sha512-jJHwCAdqj+iw2ahrFrA9FSDrYJSAEShWS6s/X/6fmD8xpdaKUpFqG/ecTnUlO6Iyxhkt3lj79Nfu4MWUpo7k6Q==} + '@eslint/compat@1.2.5': + resolution: {integrity: sha512-5iuG/StT+7OfvhoBHPlmxkPA9om6aDUFgmD4+mWKAGsYt4vCe8rypneG03AuseyRHBmcCLXQtIH5S26tIoggLg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.10.0 + peerDependenciesMeta: + eslint: + optional: true - '@eslint-types/typescript-eslint@7.5.0': - resolution: {integrity: sha512-zKvsPBDq6o0L4p2sRtq8fxOtGc+mm37aZSXLsiD4DIRl2kYUxKNO9CKDTAgmuMYUzih9J7lbLxAomreLrdAiVQ==} + '@eslint/config-array@0.19.1': + resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint-types/unicorn@52.0.0': - resolution: {integrity: sha512-1+Om/IekT0AwlPiARvhbtKsSgVMu3ZAtP99YCzhHkDSnF5f8sQegh8/3ZmMhlCnKipa7/x8qEC7Bn4rbaagnSA==} + '@eslint/core@0.10.0': + resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/eslintrc@3.2.0': + resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@8.57.1': - resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/js@9.18.0': + resolution: {integrity: sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.5': + resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.5': + resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@humanwhocodes/config-array@0.13.0': - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.1': + resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + engines: {node: '>=18.18'} '@iconify-json/simple-icons@1.2.19': resolution: {integrity: sha512-5ntmhLBUEKiakX3quPPXft+WfXIVfDINzTm3djZzzewah9ACxsCVaxoa4QVxlW8PMoF8jndXOqyHYZGCxwxoZw==} @@ -899,6 +928,12 @@ packages: '@shikijs/vscode-textmate@10.0.1': resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==} + '@stylistic/eslint-plugin@2.12.1': + resolution: {integrity: sha512-fubZKIHSPuo07FgRTn6S4Nl0uXPRPYVNpyZzIDGfp7Fny6JjNus6kReLD7NI380JXi4HtUTSOZ34LBuNPO1XLQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.40.0' + '@tsconfig/node10@1.0.11': resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} @@ -914,12 +949,21 @@ packages: '@types/config@3.3.5': resolution: {integrity: sha512-itq2HtXQBrNUKwMNZnb9mBRE3T99VYCdl1gjST9rq+9kFaB1iMMGuDeZnP88qid73DnpAMKH9ZolqDpS1Lz7+w==} + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/eslint__js@8.42.3': + resolution: {integrity: sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==} + '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/linkify-it@5.0.0': resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} @@ -953,63 +997,52 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@typescript-eslint/eslint-plugin@7.18.0': - resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/eslint-plugin@8.19.1': + resolution: {integrity: sha512-tJzcVyvvb9h/PB96g30MpxACd9IrunT7GF9wfA9/0TJ1LxGOJx1TdPzSbBBnNED7K9Ka8ybJsnEpiXPktolTLg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/parser@7.18.0': - resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/parser@8.19.1': + resolution: {integrity: sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/scope-manager@7.18.0': - resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/scope-manager@8.19.1': + resolution: {integrity: sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@7.18.0': - resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/type-utils@8.19.1': + resolution: {integrity: sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/types@7.18.0': - resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/types@8.19.1': + resolution: {integrity: sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@7.18.0': - resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/typescript-estree@8.19.1': + resolution: {integrity: sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@7.18.0': - resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/utils@8.19.1': + resolution: {integrity: sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/visitor-keys@7.18.0': - resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/visitor-keys@8.19.1': + resolution: {integrity: sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.2.1': resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} @@ -1030,6 +1063,19 @@ packages: '@vitest/browser': optional: true + '@vitest/eslint-plugin@1.1.20': + resolution: {integrity: sha512-2eLsgUm+GVOpDfNyH2do//MiNO/WZkXrPi+EjDmXEdUt6Jwnziq4H221L8vJE0aJys+l1FRfSkm4QbaIyDCfBg==} + peerDependencies: + '@typescript-eslint/utils': '>= 8.0' + eslint: '>= 8.57.0' + typescript: '>= 5.0.0' + vitest: '*' + peerDependenciesMeta: + typescript: + optional: true + vitest: + optional: true + '@vitest/expect@2.1.8': resolution: {integrity: sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==} @@ -1202,10 +1248,6 @@ packages: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - array.prototype.flatmap@1.3.3: resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} engines: {node: '>= 0.4'} @@ -1415,14 +1457,6 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dotenv-expand@11.0.7: resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} engines: {node: '>=12'} @@ -1544,29 +1578,37 @@ packages: eslint-config-prettier: optional: true - eslint-plugin-unicorn@55.0.0: - resolution: {integrity: sha512-n3AKiVpY2/uDcGrS3+QsYDkjPfaOrNrsfQxU9nt5nitd9KuvVXrfAvgCO9DYPSfap+Gqjw9EOrXIsBp5tlHZjA==} + eslint-plugin-unicorn@56.0.1: + resolution: {integrity: sha512-FwVV0Uwf8XPfVnKSGpMg7NtlZh0G0gBarCaFcMUOoqPxXryxdYxTRRv4kH6B9TFCVIrjRXG+emcxIk2ayZilog==} engines: {node: '>=18.18'} peerDependencies: eslint: '>=8.56.0' - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@8.2.0: + resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.18.0: + resolution: {integrity: sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} esquery@1.6.0: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} @@ -1624,9 +1666,9 @@ packages: fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} @@ -1640,9 +1682,9 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} flatted@3.3.2: resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} @@ -1657,9 +1699,6 @@ packages: resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -1718,13 +1757,9 @@ packages: engines: {node: 20 || >=22} hasBin: true - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} globals@15.14.0: resolution: {integrity: sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==} @@ -1734,10 +1769,6 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -1806,13 +1837,6 @@ packages: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} @@ -1888,10 +1912,6 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -1965,6 +1985,10 @@ packages: resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} engines: {node: 20 || >=22} + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + joycon@3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} @@ -2186,9 +2210,6 @@ packages: obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - oniguruma-to-es@0.10.0: resolution: {integrity: sha512-zapyOUOCJxt+xhiNRPPMtfJkHGsZ98HHB9qJEkdT8BGytO/+kpe4m1Ngf0MzbzTmhacn11w9yGeDP6tzDhnCdg==} @@ -2235,10 +2256,6 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -2254,10 +2271,6 @@ packages: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -2507,11 +2520,6 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - rimraf@6.0.1: resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} engines: {node: 20 || >=22} @@ -2603,10 +2611,6 @@ packages: resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} engines: {node: '>=18'} - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - sort-object-keys@1.1.3: resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} @@ -2718,9 +2722,6 @@ packages: resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} engines: {node: '>=18'} - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -2768,11 +2769,11 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - ts-api-utils@1.4.3: - resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} - engines: {node: '>=16'} + ts-api-utils@2.0.0: + resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} + engines: {node: '>=18.12'} peerDependencies: - typescript: '>=4.2.0' + typescript: '>=4.8.4' ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} @@ -2822,10 +2823,6 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} @@ -2850,6 +2847,13 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} + typescript-eslint@8.19.1: + resolution: {integrity: sha512-LKPUQpdEMVOeKluHi8md7rwLcoXHhwvWp3x+sJkMuq3gGm9yaYJtPo8sRZSblMFJ5pcOGCAak/scKf1mvZDlQw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + typescript@5.7.3: resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} engines: {node: '>=14.17'} @@ -3039,9 +3043,6 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -3446,25 +3447,35 @@ snapshots: '@esbuild/win32-x64@0.24.2': optional: true - '@eslint-community/eslint-utils@4.4.1(eslint@8.57.1)': + '@eslint-community/eslint-utils@4.4.1(eslint@9.18.0(jiti@2.4.2))': dependencies: - eslint: 8.57.1 + eslint: 9.18.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint-types/prettier@5.1.3': {} + '@eslint/compat@1.2.5(eslint@9.18.0(jiti@2.4.2))': + optionalDependencies: + eslint: 9.18.0(jiti@2.4.2) - '@eslint-types/typescript-eslint@7.5.0': {} + '@eslint/config-array@0.19.1': + dependencies: + '@eslint/object-schema': 2.1.5 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color - '@eslint-types/unicorn@52.0.0': {} + '@eslint/core@0.10.0': + dependencies: + '@types/json-schema': 7.0.15 - '@eslint/eslintrc@2.1.4': + '@eslint/eslintrc@3.2.0': dependencies: ajv: 6.12.6 debug: 4.4.0 - espree: 9.6.1 - globals: 13.24.0 + espree: 10.3.0 + globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -3473,19 +3484,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.57.1': {} + '@eslint/js@9.18.0': {} + + '@eslint/object-schema@2.1.5': {} - '@humanwhocodes/config-array@0.13.0': + '@eslint/plugin-kit@0.2.5': dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.0 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + '@eslint/core': 0.10.0 + levn: 0.4.1 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@2.0.3': {} + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.1': {} '@iconify-json/simple-icons@1.2.19': dependencies: @@ -3641,6 +3660,18 @@ snapshots: '@shikijs/vscode-textmate@10.0.1': {} + '@stylistic/eslint-plugin@2.12.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.18.0(jiti@2.4.2) + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + estraverse: 5.3.0 + picomatch: 4.0.2 + transitivePeerDependencies: + - supports-color + - typescript + '@tsconfig/node10@1.0.11': {} '@tsconfig/node12@1.0.11': {} @@ -3651,12 +3682,23 @@ snapshots: '@types/config@3.3.5': {} + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + + '@types/eslint__js@8.42.3': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree@1.0.6': {} '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 + '@types/json-schema@7.0.15': {} + '@types/linkify-it@5.0.0': {} '@types/markdown-it@14.1.2': @@ -3692,86 +3734,82 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.7.3) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.7.3) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 7.18.0 - eslint: 8.57.1 + '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/type-utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.19.1 + eslint: 9.18.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.4.3(typescript@5.7.3) - optionalDependencies: + ts-api-utils: 2.0.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.3)': + '@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.19.1 debug: 4.4.0 - eslint: 8.57.1 - optionalDependencies: + eslint: 9.18.0(jiti@2.4.2) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.18.0': + '@typescript-eslint/scope-manager@8.19.1': dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/visitor-keys': 8.19.1 - '@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.7.3)': + '@typescript-eslint/type-utils@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.7.3) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) + '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) debug: 4.4.0 - eslint: 8.57.1 - ts-api-utils: 1.4.3(typescript@5.7.3) - optionalDependencies: + eslint: 9.18.0(jiti@2.4.2) + ts-api-utils: 2.0.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@7.18.0': {} + '@typescript-eslint/types@8.19.1': {} - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.19.1(typescript@5.7.3)': dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/visitor-keys': 8.19.1 debug: 4.4.0 - globby: 11.1.0 + fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.4.3(typescript@5.7.3) - optionalDependencies: + ts-api-utils: 2.0.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.7.3)': + '@typescript-eslint/utils@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.7.3) - eslint: 8.57.1 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) + eslint: 9.18.0(jiti@2.4.2) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - - typescript - '@typescript-eslint/visitor-keys@7.18.0': + '@typescript-eslint/visitor-keys@8.19.1': dependencies: - '@typescript-eslint/types': 7.18.0 - eslint-visitor-keys: 3.4.3 + '@typescript-eslint/types': 8.19.1 + eslint-visitor-keys: 4.2.0 '@ungap/structured-clone@1.2.1': {} @@ -3798,6 +3836,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@vitest/eslint-plugin@1.1.20(@typescript-eslint/utils@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)(vitest@2.1.8)': + dependencies: + '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.18.0(jiti@2.4.2) + optionalDependencies: + typescript: 5.7.3 + vitest: 2.1.8(@types/node@18.19.70)(@vitest/ui@2.1.8) + '@vitest/expect@2.1.8': dependencies: '@vitest/spy': 2.1.8 @@ -4005,8 +4051,6 @@ snapshots: call-bound: 1.0.3 is-array-buffer: 3.0.5 - array-union@2.1.0: {} - array.prototype.flatmap@1.3.3: dependencies: call-bind: 1.0.8 @@ -4211,14 +4255,6 @@ snapshots: diff@4.0.2: {} - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - dotenv-expand@11.0.7: dependencies: dotenv: 16.4.7 @@ -4415,38 +4451,39 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@9.1.0(eslint@8.57.1): + eslint-config-prettier@9.1.0(eslint@9.18.0(jiti@2.4.2)): dependencies: - eslint: 8.57.1 + eslint: 9.18.0(jiti@2.4.2) eslint-define-config@2.1.0: {} - eslint-gitignore@0.1.0(eslint@8.57.1): + eslint-gitignore@0.1.0(eslint@9.18.0(jiti@2.4.2)): dependencies: array.prototype.flatmap: 1.3.3 debug: 4.4.0 - eslint: 8.57.1 + eslint: 9.18.0(jiti@2.4.2) fast-glob: 3.3.3 transitivePeerDependencies: - supports-color - eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.2): + eslint-plugin-prettier@5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.18.0(jiti@2.4.2)))(eslint@9.18.0(jiti@2.4.2))(prettier@3.4.2): dependencies: - eslint: 8.57.1 + eslint: 9.18.0(jiti@2.4.2) prettier: 3.4.2 prettier-linter-helpers: 1.0.0 synckit: 0.9.2 optionalDependencies: - eslint-config-prettier: 9.1.0(eslint@8.57.1) + '@types/eslint': 9.6.1 + eslint-config-prettier: 9.1.0(eslint@9.18.0(jiti@2.4.2)) - eslint-plugin-unicorn@55.0.0(eslint@8.57.1): + eslint-plugin-unicorn@56.0.1(eslint@9.18.0(jiti@2.4.2)): dependencies: '@babel/helper-validator-identifier': 7.25.9 - '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) ci-info: 4.1.0 clean-regexp: 1.0.0 core-js-compat: 3.40.0 - eslint: 8.57.1 + eslint: 9.18.0(jiti@2.4.2) esquery: 1.6.0 globals: 15.14.0 indent-string: 4.0.0 @@ -4459,61 +4496,61 @@ snapshots: semver: 7.6.3 strip-indent: 3.0.0 - eslint-scope@7.2.2: + eslint-scope@8.2.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} - eslint@8.57.1: + eslint-visitor-keys@4.2.0: {} + + eslint@9.18.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.1 - '@humanwhocodes/config-array': 0.13.0 + '@eslint/config-array': 0.19.1 + '@eslint/core': 0.10.0 + '@eslint/eslintrc': 3.2.0 + '@eslint/js': 9.18.0 + '@eslint/plugin-kit': 0.2.5 + '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.1 + '@humanwhocodes/retry': 0.4.1 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 debug: 4.4.0 - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 - is-path-inside: 3.0.3 - 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 natural-compare: 1.4.0 optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 + optionalDependencies: + jiti: 2.4.2 transitivePeerDependencies: - supports-color - espree@9.6.1: + espree@10.3.0: dependencies: acorn: 8.14.0 acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 3.4.3 + eslint-visitor-keys: 4.2.0 esquery@1.6.0: dependencies: @@ -4561,9 +4598,9 @@ snapshots: fflate@0.8.2: {} - file-entry-cache@6.0.1: + file-entry-cache@8.0.0: dependencies: - flat-cache: 3.2.0 + flat-cache: 4.0.1 fill-range@7.1.1: dependencies: @@ -4579,11 +4616,10 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - flat-cache@3.2.0: + flat-cache@4.0.1: dependencies: flatted: 3.3.2 keyv: 4.5.4 - rimraf: 3.0.2 flatted@3.3.2: {} @@ -4600,8 +4636,6 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - fs.realpath@1.0.0: {} - fsevents@2.3.3: optional: true @@ -4678,18 +4712,7 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 2.0.0 - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - globals@13.24.0: - dependencies: - type-fest: 0.20.2 + globals@14.0.0: {} globals@15.14.0: {} @@ -4698,15 +4721,6 @@ snapshots: define-properties: 1.2.1 gopd: 1.2.0 - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - gopd@1.2.0: {} graphemer@1.4.0: {} @@ -4770,13 +4784,6 @@ snapshots: indent-string@4.0.0: {} - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - internal-slot@1.1.0: dependencies: es-errors: 1.3.0 @@ -4856,8 +4863,6 @@ snapshots: is-number@7.0.0: {} - is-path-inside@3.0.3: {} - is-plain-obj@4.1.0: {} is-regex@1.2.1: @@ -4936,6 +4941,8 @@ snapshots: dependencies: '@isaacs/cliui': 8.0.2 + jiti@2.4.2: {} + joycon@3.1.1: {} js-tokens@4.0.0: {} @@ -5132,10 +5139,6 @@ snapshots: obuf@1.1.2: {} - once@1.4.0: - dependencies: - wrappy: 1.0.2 - oniguruma-to-es@0.10.0: dependencies: emoji-regex-xs: 1.0.0 @@ -5190,8 +5193,6 @@ snapshots: path-exists@4.0.0: {} - path-is-absolute@1.0.1: {} - path-key@3.1.1: {} path-parse@1.0.7: {} @@ -5206,8 +5207,6 @@ snapshots: lru-cache: 11.0.2 minipass: 7.1.2 - path-type@4.0.0: {} - pathe@1.1.2: {} pathval@2.0.0: {} @@ -5275,10 +5274,11 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-load-config@6.0.1(postcss@8.4.49)(tsx@4.19.2): + postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2): dependencies: lilconfig: 3.1.3 optionalDependencies: + jiti: 2.4.2 postcss: 8.4.49 tsx: 4.19.2 @@ -5413,10 +5413,6 @@ snapshots: rfdc@1.4.1: {} - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - rimraf@6.0.1: dependencies: glob: 11.0.0 @@ -5555,8 +5551,6 @@ snapshots: mrmime: 2.0.0 totalist: 3.0.1 - slash@3.0.0: {} - sort-object-keys@1.1.3: {} sort-package-json@2.12.0: @@ -5687,8 +5681,6 @@ snapshots: glob: 10.4.5 minimatch: 9.0.5 - text-table@0.2.0: {} - thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -5726,7 +5718,7 @@ snapshots: trim-lines@3.0.1: {} - ts-api-utils@1.4.3(typescript@5.7.3): + ts-api-utils@2.0.0(typescript@5.7.3): dependencies: typescript: 5.7.3 @@ -5752,7 +5744,7 @@ snapshots: tslib@2.8.1: {} - tsup@8.3.5(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3): + tsup@8.3.5(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.3): dependencies: bundle-require: 5.1.0(esbuild@0.24.2) cac: 6.7.14 @@ -5762,7 +5754,7 @@ snapshots: esbuild: 0.24.2 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(postcss@8.4.49)(tsx@4.19.2) + postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2) resolve-from: 5.0.0 rollup: 4.30.1 source-map: 0.8.0-beta.0 @@ -5790,8 +5782,6 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-fest@0.20.2: {} - type-fest@0.6.0: {} type-fest@0.8.1: {} @@ -5829,6 +5819,16 @@ snapshots: possible-typed-array-names: 1.0.0 reflect.getprototypeof: 1.0.10 + typescript-eslint@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.18.0(jiti@2.4.2) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + typescript@5.7.3: {} unbox-primitive@1.1.0: @@ -6092,8 +6092,6 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.1.0 - wrappy@1.0.2: {} - xtend@4.0.2: {} y18n@5.0.8: {} diff --git a/src/operations/operators/createOperatorFamily.ts b/src/operations/operators/createOperatorFamily.ts index 5f2a71eb..6ef20ed2 100644 --- a/src/operations/operators/createOperatorFamily.ts +++ b/src/operations/operators/createOperatorFamily.ts @@ -3,6 +3,7 @@ import type { Name, Reversible } from '../generalTypes'; import type { DropOperatorFamilyOptions } from './dropOperatorFamily'; import { dropOperatorFamily } from './dropOperatorFamily'; +// eslint-disable-next-line @typescript-eslint/no-empty-object-type export interface CreateOperatorFamilyOptions {} export type CreateOperatorFamilyFn = ( diff --git a/test/db.spec.ts b/test/db.spec.ts index 7004cf7a..e5019cba 100644 --- a/test/db.spec.ts +++ b/test/db.spec.ts @@ -42,7 +42,7 @@ describe('db', () => { it('should call pg.Client with connection string', () => { db = Db('connection_string'); - expect(Client).toBeCalledWith('connection_string'); + expect(Client).toHaveBeenCalledWith('connection_string'); }); it('should use external client', async () => { @@ -94,32 +94,32 @@ describe('db', () => { expect(hoisted.client.query).toHaveBeenCalledWith('query', undefined); }); - it('should not call client.query if client.connect fails', () => { + it('should not call client.query if client.connect fails', async () => { const error = 'error'; vi.spyOn(hoisted.client, 'connect').mockImplementation((fn) => fn(new Error(error)) ); - expect(() => db.query('query')).rejects.toThrow(error); + await expect(() => db.query('query')).rejects.toThrow(error); expect(hoisted.client.query).not.toHaveBeenCalled(); }); - it('should resolve promise if query throws no error', () => { + it('should resolve promise if query throws no error', async () => { const result = 'result'; vi.spyOn(hoisted.client, 'connect').mockImplementation((fn) => fn()); vi.spyOn(hoisted.client, 'query').mockResolvedValue(result); - expect(db.query('query')).resolves.toBe(result); + await expect(db.query('query')).resolves.toBe(result); }); - it('should reject promise if query throws error', () => { + it('should reject promise if query throws error', async () => { const error = 'error'; vi.spyOn(hoisted.client, 'query').mockRejectedValue(new Error(error)); - expect(() => db.query('query')).rejects.toThrow(error); + await expect(() => db.query('query')).rejects.toThrow(error); expect(hoisted.client.connect).toHaveBeenCalledOnce(); }); }); diff --git a/test/migration.spec.ts b/test/migration.spec.ts index 293c96df..3a3d4045 100644 --- a/test/migration.spec.ts +++ b/test/migration.spec.ts @@ -34,7 +34,7 @@ describe('migration', () => { dbMock.query = queryMock; }); - describe('getMigrationFilePaths', () => { + describe('getNumericPrefix', () => { it('should get timestamp for normal timestamp', () => { const now = Date.now(); diff --git a/test/runner.spec.ts b/test/runner.spec.ts index 2886d262..2c266adc 100644 --- a/test/runner.spec.ts +++ b/test/runner.spec.ts @@ -7,8 +7,8 @@ describe('runner', () => { expect(runner).toBeTypeOf('function'); }); - it('should throw an error when not options passed', () => { - expect( + it('should throw an error when not options passed', async () => { + await expect( // @ts-expect-error: runner needs options runner() ).rejects.toThrow( @@ -20,8 +20,8 @@ describe('runner', () => { it.todo( 'should throw an error when no databaseUrl or dbClient passed', - () => { - expect( + async () => { + await expect( // @ts-expect-error: runner needs options runner({ log: console.log }) ).rejects.toThrow(