From f9186c97d7396402f9eeb55a6555e3c56c6082af Mon Sep 17 00:00:00 2001 From: Ikenna Omekam Date: Fri, 17 Jan 2025 17:01:07 -0600 Subject: [PATCH 1/3] chore(eslint): upgrade to v9 --- .eslintignore | 6 - .eslintrc.cjs | 288 ---------------- eslint.config.mjs | 340 +++++++++++++++++++ package.json | 8 +- packages/cache/package.json | 2 +- packages/casting/package.json | 2 +- packages/cosmic-proto/.eslintignore | 7 - packages/cosmic-swingset/.eslintignore | 6 - packages/cosmic-swingset/tsconfig.json | 1 + packages/eslint-config/eslint-config.cjs | 4 +- packages/eslint-config/package.json | 4 +- packages/swingset-xsnap-supervisor/.eslintrc | 5 - tsconfig.json | 4 +- yarn.lock | 214 ++++++------ 14 files changed, 453 insertions(+), 438 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc.cjs create mode 100644 eslint.config.mjs delete mode 100644 packages/cosmic-proto/.eslintignore delete mode 100644 packages/cosmic-swingset/.eslintignore delete mode 100644 packages/swingset-xsnap-supervisor/.eslintrc diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index aec808745ea..00000000000 --- a/.eslintignore +++ /dev/null @@ -1,6 +0,0 @@ -# also ignored in packages/cosmic-proto/.eslintignore, but IDE's pick up the root config -packages/cosmic-proto/node_modules/ -packages/cosmic-proto/coverage/ -packages/cosmic-proto/dist/ -packages/cosmic-proto/proto/ -packages/cosmic-proto/src/codegen/ diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index 3400a08b855..00000000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,288 +0,0 @@ -/* eslint-env node */ - -const deprecatedForLoanContract = [ - ['currency', 'brand, asset or another descriptor'], - ['blacklist', 'denylist'], - ['whitelist', 'allowlist'], - ['RUN', 'IST', '/RUN/'], -]; -const allDeprecated = [...deprecatedForLoanContract, ['loan', 'debt']]; - -const deprecatedTerminology = Object.fromEntries( - Object.entries({ - all: allDeprecated, - loanContract: deprecatedForLoanContract, - }).map(([category, deprecated]) => [ - category, - deprecated.flatMap(([bad, good, badRgx = `/${bad}/i`]) => - [ - ['Literal', 'value'], - ['TemplateElement', 'value.raw'], - ['Identifier', 'name'], - ].map(([selectorType, field]) => ({ - selector: `${selectorType}[${field}=${badRgx}]`, - message: `Use '${good}' instead of deprecated '${bad}'`, - })), - ), - ]), -); - -/** - * Rules for code that crosses an asyncFlow membrane. - */ -const resumable = [ - { - // all async function expressions, except `onOpen` and `onClose` when they are properties of `connectionHandler` - selector: - 'FunctionExpression[async=true]:not(Property[key.name="connectionHandler"] > ObjectExpression > Property[key.name=/^(onOpen|onClose)$/] > FunctionExpression[async=true])', - message: 'Non-immediate functions must return vows, not promises', - }, - { - selector: 'ArrowFunctionExpression[async=true]', - message: 'Non-immediate functions must return vows, not promises', - }, - { - selector: "Identifier[name='callWhen']", - message: - 'callWhen wraps the function in a promise; instead immediately return a vow', - }, - { - selector: "Identifier[name='heapVowE']", - message: - 'heapVowE shortens vows to promises; instead use `E` from `@endo/far` with `watch` from durable vowTools', - }, - { - selector: "Identifier[name='heapVowTools']", - message: - 'heapVowTools are not durable; instead use `prepareVowTools` with a durable zone', - }, -]; - -module.exports = { - root: true, - parser: '@typescript-eslint/parser', - parserOptions: { - useProjectService: true, - sourceType: 'module', - projectService: { - allowDefaultProject: ['*.js'], - defaultProject: 'tsconfig.json', - }, - tsconfigRootDir: __dirname, - extraFileExtensions: ['.cjs'], - }, - plugins: ['@typescript-eslint', 'prettier', 'require-extensions'], - extends: [ - '@agoric', - 'plugin:ava/recommended', - 'plugin:require-extensions/recommended', - ], - // XXX false positive: Unused eslint-disable directive (no problems were reported from 'max-len') - reportUnusedDisableDirectives: true, - - rules: { - '@typescript-eslint/no-unused-expressions': 'off', // we use `cond || Fail` - '@typescript-eslint/no-empty-object-type': 'warn', - '@typescript-eslint/no-unnecessary-type-constraint': 'warn', - '@typescript-eslint/no-unsafe-function-type': 'warn', - '@typescript-eslint/no-wrapper-object-types': 'warn', - '@typescript-eslint/ban-ts-comment': [ - 'error', - { - // TODO tighten to 'allow-with-description' (42 unexplained atm) - 'ts-expect-error': false, - // TODO make this error (start with `src` sans codegen) - 'ts-nocheck': false, - }, - ], - '@typescript-eslint/no-floating-promises': 'error', - // so that floating-promises can be explicitly permitted with void operator - 'no-void': ['error', { allowAsStatement: true }], - - // We allow disabled tests in master - 'ava/no-skip-test': 'off', - // Contrary to recommendation https://github.com/avajs/ava/blob/main/docs/recipes/typescript.md#typing-tcontext - 'ava/use-test': 'off', - - // The rule is “safe await separator" which implements the architectural - // goal of “clearly separate an async function's synchronous prelude from - // the part that runs in a future turn”. That is our architectural rule. It - // can be trivially satisfied by inserting a non-nested `await null` in an - // appropriate place to ensure the rest of the async function runs in a - // future turn. “sometimes synchronous" is a bug farm for particularly - // pernicious bugs in which you can combine two correct pieces of code to - // have emergent incorrect behavior. It’s absolutely critical for shared - // service code. That means contracts, but it also means kernel components - // that are used by multiple clients. So we enable it throughout the repo - // and aim for no exceptions. - // - // The default is 'warn', but we want to enforce 'error'. - '@jessie.js/safe-await-separator': 'error', - - 'jsdoc/check-tag-names': [ - 'error', - { - // TypeDoc adds tags not otherwise known to JSDoc - // https://typedoc.org/guides/tags/ - definedTags: [ - 'alpha', - 'beta', - 'category', - 'categoryDescription', - 'defaultValue', - 'document', - 'group', - 'groupDescription', - 'internal', - 'privateRemarks', - 'remarks', - ], - }, - ], - - // CI has a separate format check but keep this warn to maintain that "eslint --fix" prettifies - // UNTIL https://github.com/Agoric/agoric-sdk/issues/4339 - 'prettier/prettier': 'warn', - - // Not a risk with our coding style - 'no-use-before-define': 'off', - }, - settings: { - jsdoc: { - mode: 'typescript', - }, - }, - ignorePatterns: [ - 'coverage/**', - '**/output/**', - 'bundles/**', - 'bundle-*', - 'dist/**', - 'examples/**', - 'test262/**', - '*.html', - 'ava*.config.js', - ], - overrides: [ - { - // Tighten rules for exported code. - files: [ - 'packages/*/src/**/*.js', - 'packages/*/tools/**/*.js', - 'packages/*/*.js', - 'packages/wallet/api/src/**/*.js', - ], - rules: { - 'no-restricted-syntax': ['error', ...deprecatedTerminology.all], - }, - }, - { - files: [ - 'packages/**/demo/**/*.js', - 'packages/*/test/**/*.*s', - 'packages/*/test/**/*.test.*s', - 'packages/wallet/api/test/**/*.js', - ], - rules: { - // sometimes used for organizing logic - 'no-lone-blocks': 'off', - - // NOTE: This rule is enabled for the repository in general. We turn it - // off for test code for now. - '@jessie.js/safe-await-separator': 'off', - - // Like `'ava/no-only-test`, but works with @endo/ses-ava - 'no-restricted-properties': [ - 'error', - { - object: 'test', - property: 'only', - message: - 'Do not commit .only tests - they prevent other tests from running', - }, - ], - }, - }, - { - // These tests use EV() instead of E(), which are easy to confuse. - // Help by erroring when E() packages are imported. - files: ['packages/boot/test/**/*.test.*s'], - rules: { - 'no-restricted-imports': [ - 'error', - { paths: ['@endo/eventual-send', '@endo/far'] }, - ], - }, - }, - { - // Modules with exports that must be resumable - files: ['packages/orchestration/src/exos/**'], - rules: { - 'no-restricted-syntax': ['error', ...resumable], - }, - }, - { - // Allow "loan" contracts to mention the word "loan". - files: ['packages/zoe/src/contracts/loan/*.js'], - rules: { - 'no-restricted-syntax': [ - 'error', - ...deprecatedTerminology.loanContract, - ], - }, - }, - { - files: ['*.ts'], - rules: { - 'jsdoc/require-param-type': 'off', - // TS has this covered and eslint gets it wrong - 'no-undef': 'off', - }, - }, - { - files: ['*.d.ts'], - rules: { - // Linter confuses the type declaration with value declaration - 'no-redeclare': 'off', - }, - }, - { - // disable type-aware linting for these files that have can have a .d.ts twin - // because it can't go into tsconfig (because that would cause tsc build to overwrite the .d.ts twin) - files: ['exported.*', 'types-index.*', 'types-ambient.*', 'types.*'], - extends: ['plugin:@typescript-eslint/disable-type-checked'], - }, - { - // disable type-aware linting in HTML - files: ['*.html'], - parserOptions: { - project: false, - }, - }, - { - files: ['a3p-integration/**'], - extends: ['plugin:@typescript-eslint/disable-type-checked'], - parserOptions: { - useProjectService: false, - project: false, - }, - rules: { - '@jessie.js/safe-await-separator': 'off', - }, - }, - { - // Types files have no promises to lint and that linter chokes on the .d.ts twin. - // Maybe due to https://github.com/typescript-eslint/typescript-eslint/issues/7435 - files: ['types*.js'], - rules: { - // Disabled to prevent: - // Error: Error while loading rule '@typescript-eslint/no-floating-promises': You have used a rule which requires parserServices to be generated. You must therefore provide a value for the "parserOptions.project" property for @typescript-eslint/parser. - // Occurred while linting ~agoric-sdk/packages/vats/src/core/types.js - // at Object.getParserServices (~agoric-sdk/node_modules/@typescript-eslint/utils/dist/eslint-utils/getParserServices.js:24:15) - // at create (~agoric-sdk/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-floating-promises.js:77:31) - // at Object.create (~agoric-sdk/node_modules/@typescript-eslint/utils/dist/eslint-utils/RuleCreator.js:38:20) - '@typescript-eslint/no-floating-promises': 'off', - }, - }, - ], -}; diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000000..d6502edeb04 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,340 @@ +import { fixupConfigRules, fixupPluginRules } from '@eslint/compat'; +import typescriptEslint from '@typescript-eslint/eslint-plugin'; +import prettier from 'eslint-plugin-prettier'; +import tsParser from '@typescript-eslint/parser'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import js from '@eslint/js'; +import { FlatCompat } from '@eslint/eslintrc'; +import { createRequire } from 'module'; + +// Workaround for https://github.com/anza-xyz/eslint-plugin-require-extensions/issues/18 +const require = createRequire(import.meta.url); +const requireExtensions = require('eslint-plugin-require-extensions'); + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, +}); + +const deprecatedForLoanContract = [ + ['currency', 'brand, asset or another descriptor'], + ['blacklist', 'denylist'], + ['whitelist', 'allowlist'], + ['RUN', 'IST', '/RUN/'], +]; + +const allDeprecated = [...deprecatedForLoanContract, ['loan', 'debt']]; + +const deprecatedTerminology = Object.fromEntries( + Object.entries({ + all: allDeprecated, + loanContract: deprecatedForLoanContract, + }).map(([category, deprecated]) => [ + category, + deprecated.flatMap(([bad, good, badRgx = `/${bad}/i`]) => + [ + ['Literal', 'value'], + ['TemplateElement', 'value.raw'], + ['Identifier', 'name'], + ].map(([selectorType, field]) => ({ + selector: `${selectorType}[${field}=${badRgx}]`, + message: `Use '${good}' instead of deprecated '${bad}'`, + })), + ), + ]), +); + +export default [ + { + ignores: [ + '**/coverage/', + '**/node_modules/', + '**/dist/', + '**/output/', + '**/build/', + '**/bundles/', + '**/bundle-*', + 'examples/', + 'test262/', + '**/*.html', + '**/ava*.config.js', + '**/.ava*.config.js', + 'packages/cosmic-proto/proto/', + 'packages/cosmic-proto/src/codegen/', + 'packages/cosmic-proto/scripts/', + // Cosmic-swingset specific ignores + 'packages/cosmic-swingset/t[0-9]/', + 'packages/cosmic-swingset/t[0-9].*/', + // a3p-integration specific ignores + 'a3p-integration/agoric-sdk/', + ], + }, + { + // Include both .js and .ts files for casting package + files: ['packages/casting/**/*.{js,ts,mjs,cjs}'], + }, + { + // Include both .js and .ts files for cache package + files: ['packages/cache/**/*.{js,ts,mjs,cjs}'], + }, + ...fixupConfigRules( + compat.extends( + '@agoric', + 'plugin:ava/recommended', + 'plugin:require-extensions/recommended', + ), + ), + { + plugins: { + '@typescript-eslint': typescriptEslint, + prettier, + 'require-extensions': fixupPluginRules(requireExtensions), + }, + + linterOptions: { + reportUnusedDisableDirectives: true, + }, + + languageOptions: { + parser: tsParser, + ecmaVersion: 5, + sourceType: 'module', + + parserOptions: { + useProjectService: true, + + projectService: { + allowDefaultProject: ['*.js'], + defaultProject: 'tsconfig.json', + }, + + tsconfigRootDir: __dirname, + extraFileExtensions: ['.cjs'], + }, + }, + + settings: { + jsdoc: { + mode: 'typescript', + }, + }, + + rules: { + '@typescript-eslint/no-unused-expressions': 'off', + '@typescript-eslint/no-empty-object-type': 'warn', + '@typescript-eslint/no-unnecessary-type-constraint': 'warn', + '@typescript-eslint/no-unsafe-function-type': 'warn', + '@typescript-eslint/no-wrapper-object-types': 'warn', + '@typescript-eslint/ban-ts-comment': [ + 'error', + { + 'ts-expect-error': false, + 'ts-nocheck': false, + }, + ], + + '@typescript-eslint/no-floating-promises': 'error', + + 'no-void': [ + 'error', + { + allowAsStatement: true, + }, + ], + + 'ava/no-skip-test': 'off', + 'ava/use-test': 'off', + '@jessie.js/safe-await-separator': 'error', + + 'jsdoc/check-tag-names': [ + 'error', + { + definedTags: [ + 'alpha', + 'beta', + 'category', + 'categoryDescription', + 'defaultValue', + 'document', + 'group', + 'groupDescription', + 'internal', + 'privateRemarks', + 'remarks', + ], + }, + ], + + 'prettier/prettier': 'warn', + 'no-use-before-define': 'off', + }, + }, + { + // Tighten rules for exported code. + files: [ + 'packages/*/src/**/*.js', + 'packages/*/tools/**/*.js', + 'packages/*/*.js', + 'packages/wallet/api/src/**/*.js', + ], + + rules: { + 'no-restricted-syntax': ['error', ...deprecatedTerminology.all], + }, + }, + { + files: [ + 'packages/**/demo/**/*.js', + 'packages/*/test/**/*.*s', + 'packages/*/test/**/*.test.*s', + 'packages/wallet/api/test/**/*.js', + ], + + rules: { + 'no-lone-blocks': 'off', + '@jessie.js/safe-await-separator': 'off', + + 'no-restricted-properties': [ + 'error', + { + object: 'test', + property: 'only', + message: + 'Do not commit .only tests - they prevent other tests from running', + }, + ], + }, + }, + { + files: ['packages/boot/test/**/*.test.*s'], + + rules: { + 'no-restricted-imports': [ + 'error', + { + paths: ['@endo/eventual-send', '@endo/far'], + }, + ], + }, + }, + { + files: ['packages/orchestration/src/exos/**'], + + rules: { + 'no-restricted-syntax': [ + 'error', + { + selector: + 'FunctionExpression[async=true]:not(Property[key.name="connectionHandler"] > ObjectExpression > Property[key.name=/^(onOpen|onClose)$/] > FunctionExpression[async=true])', + message: 'Non-immediate functions must return vows, not promises', + }, + { + selector: 'ArrowFunctionExpression[async=true]', + message: 'Non-immediate functions must return vows, not promises', + }, + { + selector: "Identifier[name='callWhen']", + message: + 'callWhen wraps the function in a promise; instead immediately return a vow', + }, + { + selector: "Identifier[name='heapVowE']", + message: + 'heapVowE shortens vows to promises; instead use `E` from `@endo/far` with `watch` from durable vowTools', + }, + { + selector: "Identifier[name='heapVowTools']", + message: + 'heapVowTools are not durable; instead use `prepareVowTools` with a durable zone', + }, + ], + }, + }, + { + // Allow "loan" contracts to mention the word "loan". + files: ['packages/zoe/src/contracts/loan/*.js'], + + rules: { + 'no-restricted-syntax': ['error', ...deprecatedTerminology.loanContract], + }, + }, + { + files: ['**/*.ts'], + + rules: { + 'jsdoc/require-param-type': 'off', + 'no-undef': 'off', + }, + }, + { + files: ['**/*.d.ts'], + + rules: { + 'no-redeclare': 'off', + }, + }, + ...compat + .extends('plugin:@typescript-eslint/disable-type-checked') + .map(config => ({ + ...config, + files: [ + '**/exported.*', + '**/types-index.*', + '**/types-ambient.*', + '**/types.*', + ], + })), + { + files: ['**/*.html'], + + languageOptions: { + ecmaVersion: 5, + sourceType: 'script', + + parserOptions: { + project: false, + }, + }, + }, + ...compat + .extends('plugin:@typescript-eslint/disable-type-checked') + .map(config => ({ + ...config, + files: ['a3p-integration/**'], + })), + { + files: ['a3p-integration/**'], + + languageOptions: { + ecmaVersion: 5, + sourceType: 'script', + + parserOptions: { + useProjectService: false, + project: false, + }, + }, + + rules: { + '@jessie.js/safe-await-separator': 'off', + }, + }, + { + files: ['**/types*.js'], + + rules: { + '@typescript-eslint/no-floating-promises': 'off', + }, + }, + { + // Rules specific to swingset-xsnap-supervisor + files: ['packages/swingset-xsnap-supervisor/**/*.js'], + rules: { + 'import/no-extraneous-dependencies': 'off', + }, + }, +]; diff --git a/package.json b/package.json index f289a011b19..b46fd1a19de 100644 --- a/package.json +++ b/package.json @@ -12,13 +12,13 @@ "devDependencies": { "@endo/eslint-plugin": "^2.2.3", "@google-cloud/monitoring": "^4.1.0", - "@jessie.js/eslint-plugin": "^0.4.1", + "@jessie.js/eslint-plugin": "^0.4.2", "@types/express": "^4.17.17", "@types/node": "^22.9.0", "ava": "^5.3.0", "c8": "^10.1.2", "conventional-changelog-conventionalcommits": "^4.6.0", - "eslint": "^8.57.1", + "eslint": "^9.0.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-jessie": "^0.0.6", "eslint-config-prettier": "^9.1.0", @@ -59,8 +59,8 @@ "lerna": "lerna", "link-cli": "yarn run create-agoric-cli", "create-agoric-cli": "node ./scripts/create-agoric-cli.cjs", - "format": "yarn prettier --write .github golang packages scripts a3p-integration multichain-testing", - "lint:format": "yarn prettier --check .github golang packages scripts a3p-integration multichain-testing", + "format": "yarn prettier --write .github golang packages scripts a3p-integration multichain-testing eslint.config.mjs", + "lint:format": "yarn prettier --check .github golang packages scripts a3p-integration multichain-testing eslint.config.mjs", "lint-fix": "yarn lerna run --no-bail lint-fix", "lint": "run-s --continue-on-error lint:*", "lint:packages": "yarn lerna run --no-bail lint", diff --git a/packages/cache/package.json b/packages/cache/package.json index 4467520d79b..d7925464799 100644 --- a/packages/cache/package.json +++ b/packages/cache/package.json @@ -13,7 +13,7 @@ "lint-fix": "yarn lint:eslint --fix", "lint": "run-s --continue-on-error lint:*", "lint:types": "tsc", - "lint:eslint": "eslint --ext .js,.ts ." + "lint:eslint": "eslint ." }, "keywords": [], "author": "Agoric", diff --git a/packages/casting/package.json b/packages/casting/package.json index 1cc342bd405..51cf46863e2 100644 --- a/packages/casting/package.json +++ b/packages/casting/package.json @@ -16,7 +16,7 @@ "lint-fix": "yarn lint:eslint --fix", "lint": "run-s --continue-on-error lint:*", "lint:types": "tsc", - "lint:eslint": "eslint --ext .js,.ts ." + "lint:eslint": "eslint ." }, "keywords": [], "author": "Agoric", diff --git a/packages/cosmic-proto/.eslintignore b/packages/cosmic-proto/.eslintignore deleted file mode 100644 index 7eee12970a7..00000000000 --- a/packages/cosmic-proto/.eslintignore +++ /dev/null @@ -1,7 +0,0 @@ -# keep synchronized with ../../.eslintignore -node_modules/ -coverage/ -dist/ -proto/ -# leading `**` ensures that this pattern still matches relative to project root -**/src/codegen/ diff --git a/packages/cosmic-swingset/.eslintignore b/packages/cosmic-swingset/.eslintignore deleted file mode 100644 index b1cd0b66a26..00000000000 --- a/packages/cosmic-swingset/.eslintignore +++ /dev/null @@ -1,6 +0,0 @@ -/dist -/src/bundles/ -t[0-9]/ -node_modules/ -build/ -t[0-9].*/ diff --git a/packages/cosmic-swingset/tsconfig.json b/packages/cosmic-swingset/tsconfig.json index a4aea10a6de..1925e9caba4 100644 --- a/packages/cosmic-swingset/tsconfig.json +++ b/packages/cosmic-swingset/tsconfig.json @@ -8,5 +8,6 @@ "calc-*.js", "src/**/*.js", "test/**/*.js", + "*.cjs", ], } diff --git a/packages/eslint-config/eslint-config.cjs b/packages/eslint-config/eslint-config.cjs index eb184802d50..e2514fdc844 100644 --- a/packages/eslint-config/eslint-config.cjs +++ b/packages/eslint-config/eslint-config.cjs @@ -31,11 +31,13 @@ module.exports = { 'prefer-regex-literals': 'off', 'no-else-return': 'off', 'no-console': 'off', + 'no-lone-blocks': 'off', 'no-unused-vars': [ 'error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_', + caughtErrors: 'none', // Needed now that in ESLint v9.0.0, varsIgnorePattern no longer applies to errors in catch clauses }, ], 'no-inner-declarations': 'off', @@ -49,7 +51,7 @@ module.exports = { 'default-param-last': 'off', // unaware of TS type annotations 'consistent-return': 'off', // unaware of throws. TS detects more reliably. 'no-fallthrough': 'warn', // unaware of throws. - + 'no-redeclare': ['error', { builtinGlobals: false }], // Allow redeclaration of built-in globals when explicitly declared 'spaced-comment': [ 'error', 'always', diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index ffcf0f8c5a2..3daa99c8795 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -26,9 +26,9 @@ ], "peerDependencies": { "@endo/eslint-plugin": "^2.2.3", - "@jessie.js/eslint-plugin": "^0.4.1", + "@jessie.js/eslint-plugin": "^0.4.2", "typescript-eslint": "^8.17.0", - "eslint": "^8.57.0", + "eslint": "^9.0.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-github": "^5.1.4", "eslint-config-jessie": "^0.0.6", diff --git a/packages/swingset-xsnap-supervisor/.eslintrc b/packages/swingset-xsnap-supervisor/.eslintrc deleted file mode 100644 index 2f2f707c490..00000000000 --- a/packages/swingset-xsnap-supervisor/.eslintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "rules": { - "import/no-extraneous-dependencies": "off" - } -} diff --git a/tsconfig.json b/tsconfig.json index 628996edaba..142e8387c82 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -18,7 +18,7 @@ "noEmit": true }, "include": [ - ".eslintrc.cjs", - "dist" + "eslint.config.mjs", + "dist", ] } diff --git a/yarn.lock b/yarn.lock index 7a8a1ce7d57..1a3a1bc26fd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1812,7 +1812,7 @@ dependencies: eslint-visitor-keys "^3.4.3" -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1": +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": version "4.12.1" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== @@ -1822,22 +1822,23 @@ resolved "https://registry.yarnpkg.com/@eslint/compat/-/compat-1.2.4.tgz#b69b0d76ce73fe66d7f8633c406acea151f5c559" integrity sha512-S8ZdQj/N69YAtuqFt7653jwcvuUj131+6qGLUyDqfDg1OIoBQ66OCuXC473YQfO2AaxITTutiRQiDwoo7ZLYyg== -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== +"@eslint/config-array@^0.19.0": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.1.tgz#734aaea2c40be22bbb1f2a9dac687c57a6a4c984" + integrity sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA== dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" + "@eslint/object-schema" "^2.1.5" + debug "^4.3.1" minimatch "^3.1.2" - strip-json-comments "^3.1.1" -"@eslint/eslintrc@^3.1.0": +"@eslint/core@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.10.0.tgz#23727063c21b335f752dbb3a16450f6f9cbc9091" + integrity sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw== + dependencies: + "@types/json-schema" "^7.0.15" + +"@eslint/eslintrc@^3.1.0", "@eslint/eslintrc@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz#57470ac4e2e283a6bf76044d63281196e370542c" integrity sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w== @@ -1852,16 +1853,29 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.57.1": - version "8.57.1" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" - integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== +"@eslint/js@9.18.0": + version "9.18.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.18.0.tgz#3356f85d18ed3627ab107790b53caf7e1e3d1e84" + integrity sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA== "@eslint/js@^9.14.0": version "9.16.0" resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.16.0.tgz#3df2b2dd3b9163056616886c86e4082f45dbf3f4" integrity sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg== +"@eslint/object-schema@^2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.5.tgz#8670a8f6258a2be5b2c620ff314a1d984c23eb2e" + integrity sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ== + +"@eslint/plugin-kit@^0.2.5": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz#ee07372035539e7847ef834e3f5e7b79f09e3a81" + integrity sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A== + dependencies: + "@eslint/core" "^0.10.0" + levn "^0.4.1" + "@fast-check/ava@^1.1.5": version "1.1.5" resolved "https://registry.yarnpkg.com/@fast-check/ava/-/ava-1.1.5.tgz#b471ce5252a3d62eb9bc316f1b7b0a79a7c8341f" @@ -1911,24 +1925,33 @@ protobufjs "^7.2.5" yargs "^17.7.2" -"@humanwhocodes/config-array@^0.13.0": - version "0.13.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" - integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.6": + version "0.16.6" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" + integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== dependencies: - "@humanwhocodes/object-schema" "^2.0.3" - debug "^4.3.1" - minimatch "^3.0.5" + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.3.0" "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== +"@humanwhocodes/retry@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" + integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== + +"@humanwhocodes/retry@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.1.tgz#9a96ce501bc62df46c4031fbd970e3cc6b10f07b" + integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA== "@hutson/parse-repository-url@^3.0.0": version "3.0.2" @@ -1973,10 +1996,10 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jessie.js/eslint-plugin@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@jessie.js/eslint-plugin/-/eslint-plugin-0.4.1.tgz#d45561b9b24b97fd1f8b71e4c90b59be2c544e22" - integrity sha512-wCoNtFp0ke+h60bq/47Un91deCRiaAjKg3BIMz+xkN2apv6fn6Xk5pb4/NpNi/fK42m0pj8t4F0ApRadte0LZQ== +"@jessie.js/eslint-plugin@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@jessie.js/eslint-plugin/-/eslint-plugin-0.4.2.tgz#5f1deb7c7df06bff9613a636b211008571e661c6" + integrity sha512-7xKyY2zThvoJm9JGgYJylMrlIWYb3/qGK5nU17XZ6VLv9dYxwXzmq//OZJVVn+UqBBL2073+cvx0JDewWR79Yg== dependencies: requireindex "~1.1.0" @@ -2795,7 +2818,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": +"@nodelib/fs.walk@^1.2.3": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -3630,7 +3653,7 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@0.0.39", "@types/estree@1.0.6", "@types/estree@^1.0.0", "@types/estree@^1.0.5": +"@types/estree@*", "@types/estree@0.0.39", "@types/estree@1.0.6", "@types/estree@^1.0.0", "@types/estree@^1.0.5", "@types/estree@^1.0.6": version "1.0.6" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== @@ -3711,7 +3734,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/json-schema@*", "@types/json-schema@^7.0.11": +"@types/json-schema@*", "@types/json-schema@^7.0.11", "@types/json-schema@^7.0.15": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -3994,11 +4017,6 @@ "@typescript-eslint/types" "8.18.2" eslint-visitor-keys "^4.2.0" -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - "@yarnpkg/lockfile@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" @@ -5420,7 +5438,7 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.3, cross-spawn@^7.0.6: version "7.0.6" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== @@ -5763,13 +5781,6 @@ doctrine@^2.1.0: dependencies: esutils "^2.0.2" -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - dot-prop@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" @@ -6316,10 +6327,10 @@ eslint-rule-documentation@>=1.0.0: resolved "https://registry.yarnpkg.com/eslint-rule-documentation/-/eslint-rule-documentation-1.0.23.tgz#4e0886145597a78d24524ec7e0cf18c6fedc23a8" integrity sha512-pWReu3fkohwyvztx/oQWWgld2iad25TfUdi6wvhhaDPIQjHU/pyvlKgXFw1kX31SQK2Nq9MH+vRDWB0ZLy8fYw== -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== +eslint-scope@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442" + integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -6351,55 +6362,51 @@ eslint-visitor-keys@^4.2.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== -eslint@^8.57.1: - version "8.57.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" - integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== +eslint@^9.0.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.18.0.tgz#c95b24de1183e865de19f607fda6518b54827850" + integrity sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.1" - "@humanwhocodes/config-array" "^0.13.0" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.19.0" + "@eslint/core" "^0.10.0" + "@eslint/eslintrc" "^3.2.0" + "@eslint/js" "9.18.0" + "@eslint/plugin-kit" "^0.2.5" + "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" + "@humanwhocodes/retry" "^0.4.1" + "@types/estree" "^1.0.6" + "@types/json-schema" "^7.0.15" ajv "^6.12.4" chalk "^4.0.0" - cross-spawn "^7.0.2" + cross-spawn "^7.0.6" debug "^4.3.2" - 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" - esquery "^1.4.2" + eslint-scope "^8.2.0" + eslint-visitor-keys "^4.2.0" + espree "^10.3.0" + esquery "^1.5.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" glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - 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.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" esm@agoric-labs/esm#Agoric-built: version "3.2.25" resolved "https://codeload.github.com/agoric-labs/esm/tar.gz/3603726ad4636b2f865f463188fcaade6375638e" -espree@^10.0.1: +espree@^10.0.1, espree@^10.3.0: version "10.3.0" resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== @@ -6408,7 +6415,7 @@ espree@^10.0.1: acorn-jsx "^5.3.2" eslint-visitor-keys "^4.2.0" -espree@^9.0.0, espree@^9.6.0, espree@^9.6.1: +espree@^9.0.0: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== @@ -6427,7 +6434,7 @@ espurify@^2.1.1: resolved "https://registry.yarnpkg.com/espurify/-/espurify-2.1.1.tgz#afb043f22fac908d991dd25f7bf40bcf03935b9c" integrity sha512-zttWvnkhcDyGOhSH4vO2qCBILpdCMv/MX8lp4cqgRkQoDRGK2oZxi2GfWhlP2dIXmk7BaKeOTuzbHhyC68o8XQ== -esquery@^1.4.2, esquery@^1.5.0: +esquery@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== @@ -6745,12 +6752,12 @@ figures@^6.1.0: dependencies: is-unicode-supported "^2.0.0" -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== dependencies: - flat-cache "^3.0.4" + flat-cache "^4.0.0" file-uri-to-path@1.0.0: version "1.0.0" @@ -6827,14 +6834,13 @@ find-yarn-workspace-root@^2.0.0: dependencies: micromatch "^4.0.2" -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== dependencies: flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" + keyv "^4.5.4" flat@^5.0.2: version "5.0.2" @@ -7217,13 +7223,6 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - globals@^14.0.0: version "14.0.0" resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" @@ -7967,11 +7966,6 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -8462,7 +8456,7 @@ jws@^4.0.0: jwa "^2.0.0" safe-buffer "^5.0.1" -keyv@^4.5.3: +keyv@^4.5.4: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== @@ -9309,7 +9303,7 @@ minimatch@5.1.0: dependencies: brace-expansion "^2.0.1" -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -11987,11 +11981,6 @@ text-hex@1.0.x: resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" @@ -12202,11 +12191,6 @@ type-fest@^0.18.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - type-fest@^0.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" From 78b053b23d351d3896c888fbdcd70185c1952212 Mon Sep 17 00:00:00 2001 From: Ikenna Omekam Date: Fri, 17 Jan 2025 17:02:04 -0600 Subject: [PATCH 2/3] chore(cosmic-swingset): fix linting by using status instead of code --- packages/cosmic-swingset/check-validator.cjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cosmic-swingset/check-validator.cjs b/packages/cosmic-swingset/check-validator.cjs index 75fa338c706..72f54e75f43 100755 --- a/packages/cosmic-swingset/check-validator.cjs +++ b/packages/cosmic-swingset/check-validator.cjs @@ -22,8 +22,8 @@ if (ret.error) { if (ret.stderr) { process.stderr.write(ret.stderr); } -if (ret.code) { - process.exit(ret.code); +if (ret.status) { + process.exit(ret.status); } const output = ret.stdout.toString('utf-8'); From 6bd3574e6b2e403d6b9de0a4e3b54af1d3461f3b Mon Sep 17 00:00:00 2001 From: Ikenna Omekam Date: Tue, 21 Jan 2025 11:00:28 -0600 Subject: [PATCH 3/3] chore(multichain-testing): adapt to eslint v9 flat config --- multichain-testing/eslint.config.mjs | 46 ++++ multichain-testing/package.json | 28 +- multichain-testing/scripts/fast-usdc-tool.ts | 1 - multichain-testing/tools/e2e-tools.js | 3 +- multichain-testing/tsconfig.json | 8 +- multichain-testing/yarn.lock | 257 ++++++++++--------- 6 files changed, 190 insertions(+), 153 deletions(-) create mode 100644 multichain-testing/eslint.config.mjs diff --git a/multichain-testing/eslint.config.mjs b/multichain-testing/eslint.config.mjs new file mode 100644 index 00000000000..e00ced55f49 --- /dev/null +++ b/multichain-testing/eslint.config.mjs @@ -0,0 +1,46 @@ +import typescriptEslint from '@typescript-eslint/eslint-plugin'; +import globals from 'globals'; +import tsParser from '@typescript-eslint/parser'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import js from '@eslint/js'; +import { FlatCompat } from '@eslint/eslintrc'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, +}); + +export default [ + ...compat.extends( + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'prettier', + ), + { + plugins: { + '@typescript-eslint': typescriptEslint, + }, + + languageOptions: { + globals: { + ...globals.node, + }, + + parser: tsParser, + }, + + rules: { + '@typescript-eslint/no-unused-vars': [ + 'error', + { + argsIgnorePattern: '^_', + varsIgnorePattern: '^_', + }, + ], + }, + }, +]; diff --git a/multichain-testing/package.json b/multichain-testing/package.json index 264df591262..a66ebd41c34 100644 --- a/multichain-testing/package.json +++ b/multichain-testing/package.json @@ -5,7 +5,7 @@ "scripts": { "build": "exit 0", "lint": "yarn tsc && yarn eslint .", - "lint-fix": "yarn lint:eslint --fix", + "lint-fix": "yarn eslint . --fix", "test": "echo 'Run specific test suites:\nyarn test:main (needs `make start`)\nyarn test:fast-usdc (needs `make start FILE=config.fusdc.yaml`)'", "test:main": "ava --config ava.main.config.js", "test:fast-usdc": "ava --config ava.fusdc.config.js", @@ -32,7 +32,7 @@ "@typescript-eslint/eslint-plugin": "^8.17.0", "@typescript-eslint/parser": "^8.17.0", "ava": "^6.2.0", - "eslint": "^8.56.0", + "eslint": "^9.0.0", "eslint-config-prettier": "^9.1.0", "execa": "9.1.0", "fs-extra": "^11.2.0", @@ -91,29 +91,5 @@ "@agoric/zoe": "portal:../packages/zoe", "@agoric/zone": "portal:../packages/zone" }, - "eslintConfig": { - "root": true, - "env": { - "node": true - }, - "parser": "@typescript-eslint/parser", - "plugins": [ - "@typescript-eslint" - ], - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "prettier" - ], - "rules": { - "@typescript-eslint/no-unused-vars": [ - "error", - { - "argsIgnorePattern": "^_", - "varsIgnorePattern": "^_" - } - ] - } - }, "license": "Apache-2.0" } diff --git a/multichain-testing/scripts/fast-usdc-tool.ts b/multichain-testing/scripts/fast-usdc-tool.ts index db51c913a05..f5b962ec445 100755 --- a/multichain-testing/scripts/fast-usdc-tool.ts +++ b/multichain-testing/scripts/fast-usdc-tool.ts @@ -184,7 +184,6 @@ const main = async () => { instancePath: [contractName], callPipe: [['makeDepositInvitation']], }, - // @ts-expect-error 'NatAmount' vs 'AnyAmount' proposal, }); }; diff --git a/multichain-testing/tools/e2e-tools.js b/multichain-testing/tools/e2e-tools.js index bc46cc6fba6..a9ab231d5ad 100644 --- a/multichain-testing/tools/e2e-tools.js +++ b/multichain-testing/tools/e2e-tools.js @@ -25,9 +25,8 @@ const trace = makeTracer('E2ET'); const BLD = '000000ubld'; export const txAbbr = tx => { - // eslint-disable-next-line camelcase const { txhash, code, height, gas_used } = tx; - // eslint-disable-next-line camelcase + return { txhash, code, height, gas_used }; }; diff --git a/multichain-testing/tsconfig.json b/multichain-testing/tsconfig.json index c0b1b588fec..df9da8606db 100644 --- a/multichain-testing/tsconfig.json +++ b/multichain-testing/tsconfig.json @@ -1,8 +1,14 @@ { "extends": "../tsconfig.json", + "compilerOptions": { + "allowImportingTsExtensions": true, + "noUnusedLocals": false, + "noUnusedParameters": false + }, "include": [ "src", "tools", - "test" + "test", + "scripts" ] } diff --git a/multichain-testing/yarn.lock b/multichain-testing/yarn.lock index 8f909306465..4ba72d982e1 100644 --- a/multichain-testing/yarn.lock +++ b/multichain-testing/yarn.lock @@ -1157,34 +1157,71 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.6.1": +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.12.1": version: 4.12.1 resolution: "@eslint-community/regexpp@npm:4.12.1" checksum: 10c0/a03d98c246bcb9109aec2c08e4d10c8d010256538dcb3f56610191607214523d4fb1b00aa81df830b6dffb74c5fa0be03642513a289c567949d3e550ca11cdf6 languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.1.4": - version: 2.1.4 - resolution: "@eslint/eslintrc@npm:2.1.4" +"@eslint/config-array@npm:^0.19.0": + version: 0.19.1 + resolution: "@eslint/config-array@npm:0.19.1" + dependencies: + "@eslint/object-schema": "npm:^2.1.5" + debug: "npm:^4.3.1" + minimatch: "npm:^3.1.2" + checksum: 10c0/43b01f596ddad404473beae5cf95c013d29301c72778d0f5bf8a6699939c8a9a5663dbd723b53c5f476b88b0c694f76ea145d1aa9652230d140fe1161e4a4b49 + languageName: node + linkType: hard + +"@eslint/core@npm:^0.10.0": + version: 0.10.0 + resolution: "@eslint/core@npm:0.10.0" + dependencies: + "@types/json-schema": "npm:^7.0.15" + checksum: 10c0/074018075079b3ed1f14fab9d116f11a8824cdfae3e822badf7ad546962fafe717a31e61459bad8cc59cf7070dc413ea9064ddb75c114f05b05921029cde0a64 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^3.2.0": + version: 3.2.0 + resolution: "@eslint/eslintrc@npm:3.2.0" dependencies: ajv: "npm:^6.12.4" debug: "npm:^4.3.2" - espree: "npm:^9.6.0" - globals: "npm:^13.19.0" + espree: "npm:^10.0.1" + globals: "npm:^14.0.0" ignore: "npm:^5.2.0" import-fresh: "npm:^3.2.1" js-yaml: "npm:^4.1.0" minimatch: "npm:^3.1.2" strip-json-comments: "npm:^3.1.1" - checksum: 10c0/32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 + checksum: 10c0/43867a07ff9884d895d9855edba41acf325ef7664a8df41d957135a81a477ff4df4196f5f74dc3382627e5cc8b7ad6b815c2cea1b58f04a75aced7c43414ab8b + languageName: node + linkType: hard + +"@eslint/js@npm:9.18.0": + version: 9.18.0 + resolution: "@eslint/js@npm:9.18.0" + checksum: 10c0/3938344c5ac7feef4b73fcb30f3c3e753570cea74c24904bb5d07e9c42fcd34fcbc40f545b081356a299e11f360c9c274b348c05fb0113fc3d492e5175eee140 + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.5": + version: 2.1.5 + resolution: "@eslint/object-schema@npm:2.1.5" + checksum: 10c0/5320691ed41ecd09a55aff40ce8e56596b4eb81f3d4d6fe530c50fdd6552d88102d1c1a29d970ae798ce30849752a708772de38ded07a6f25b3da32ebea081d8 languageName: node linkType: hard -"@eslint/js@npm:8.57.0": - version: 8.57.0 - resolution: "@eslint/js@npm:8.57.0" - checksum: 10c0/9a518bb8625ba3350613903a6d8c622352ab0c6557a59fe6ff6178bf882bf57123f9d92aa826ee8ac3ee74b9c6203fe630e9ee00efb03d753962dcf65ee4bd94 +"@eslint/plugin-kit@npm:^0.2.5": + version: 0.2.5 + resolution: "@eslint/plugin-kit@npm:0.2.5" + dependencies: + "@eslint/core": "npm:^0.10.0" + levn: "npm:^0.4.1" + checksum: 10c0/ba9832b8409af618cf61791805fe201dd62f3c82c783adfcec0f5cd391e68b40beaecb47b9a3209e926dbcab65135f410cae405b69a559197795793399f61176 languageName: node linkType: hard @@ -1199,14 +1236,20 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.11.14": - version: 0.11.14 - resolution: "@humanwhocodes/config-array@npm:0.11.14" +"@humanfs/core@npm:^0.19.1": + version: 0.19.1 + resolution: "@humanfs/core@npm:0.19.1" + checksum: 10c0/aa4e0152171c07879b458d0e8a704b8c3a89a8c0541726c6b65b81e84fd8b7564b5d6c633feadc6598307d34564bd53294b533491424e8e313d7ab6c7bc5dc67 + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.6": + version: 0.16.6 + resolution: "@humanfs/node@npm:0.16.6" dependencies: - "@humanwhocodes/object-schema": "npm:^2.0.2" - debug: "npm:^4.3.1" - minimatch: "npm:^3.0.5" - checksum: 10c0/66f725b4ee5fdd8322c737cb5013e19fac72d4d69c8bf4b7feb192fcb83442b035b92186f8e9497c220e58b2d51a080f28a73f7899bc1ab288c3be172c467541 + "@humanfs/core": "npm:^0.19.1" + "@humanwhocodes/retry": "npm:^0.3.0" + checksum: 10c0/8356359c9f60108ec204cbd249ecd0356667359b2524886b357617c4a7c3b6aace0fd5a369f63747b926a762a88f8a25bc066fa1778508d110195ce7686243e1 languageName: node linkType: hard @@ -1217,10 +1260,17 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^2.0.2": - version: 2.0.3 - resolution: "@humanwhocodes/object-schema@npm:2.0.3" - checksum: 10c0/80520eabbfc2d32fe195a93557cef50dfe8c8905de447f022675aaf66abc33ae54098f5ea78548d925aa671cd4ab7c7daa5ad704fe42358c9b5e7db60f80696c +"@humanwhocodes/retry@npm:^0.3.0": + version: 0.3.1 + resolution: "@humanwhocodes/retry@npm:0.3.1" + checksum: 10c0/f0da1282dfb45e8120480b9e2e275e2ac9bbe1cf016d046fdad8e27cc1285c45bb9e711681237944445157b430093412b4446c1ab3fc4bb037861b5904101d3b + languageName: node + linkType: hard + +"@humanwhocodes/retry@npm:^0.4.1": + version: 0.4.1 + resolution: "@humanwhocodes/retry@npm:0.4.1" + checksum: 10c0/be7bb6841c4c01d0b767d9bb1ec1c9359ee61421ce8ba66c249d035c5acdfd080f32d55a5c9e859cdd7868788b8935774f65b2caf24ec0b7bd7bf333791f063b languageName: node linkType: hard @@ -1369,7 +1419,7 @@ __metadata: languageName: node linkType: hard -"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": +"@nodelib/fs.walk@npm:^1.2.3": version: 1.2.8 resolution: "@nodelib/fs.walk@npm:1.2.8" dependencies: @@ -1588,7 +1638,7 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:^1.0.0": +"@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6": version: 1.0.6 resolution: "@types/estree@npm:1.0.6" checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a @@ -1612,7 +1662,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:*": +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.15": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db @@ -1783,13 +1833,6 @@ __metadata: languageName: node linkType: hard -"@ungap/structured-clone@npm:^1.2.0": - version: 1.2.0 - resolution: "@ungap/structured-clone@npm:1.2.0" - checksum: 10c0/8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d - languageName: node - linkType: hard - "@vercel/nft@npm:^0.27.5": version: 0.27.7 resolution: "@vercel/nft@npm:0.27.7" @@ -1860,7 +1903,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.11.0, acorn@npm:^8.13.0, acorn@npm:^8.2.4, acorn@npm:^8.6.0, acorn@npm:^8.9.0": +"acorn@npm:^8.11.0, acorn@npm:^8.13.0, acorn@npm:^8.14.0, acorn@npm:^8.2.4, acorn@npm:^8.6.0": version: 8.14.0 resolution: "acorn@npm:8.14.0" bin: @@ -2497,7 +2540,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, cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" dependencies: @@ -2618,15 +2661,6 @@ __metadata: languageName: node linkType: hard -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: "npm:^2.0.2" - checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 - languageName: node - linkType: hard - "eastasianwidth@npm:^0.2.0": version: 0.2.0 resolution: "eastasianwidth@npm:0.2.0" @@ -2764,17 +2798,17 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^7.2.2": - version: 7.2.2 - resolution: "eslint-scope@npm:7.2.2" +"eslint-scope@npm:^8.2.0": + version: 8.2.0 + resolution: "eslint-scope@npm:8.2.0" dependencies: esrecurse: "npm:^4.3.0" estraverse: "npm:^5.2.0" - checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 + checksum: 10c0/8d2d58e2136d548ac7e0099b1a90d9fab56f990d86eb518de1247a7066d38c908be2f3df477a79cf60d70b30ba18735d6c6e70e9914dca2ee515a729975d70d6 languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": +"eslint-visitor-keys@npm:^3.3.0": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 @@ -2788,62 +2822,63 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8.56.0": - version: 8.57.0 - resolution: "eslint@npm:8.57.0" +"eslint@npm:^9.0.0": + version: 9.18.0 + resolution: "eslint@npm:9.18.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" - "@eslint-community/regexpp": "npm:^4.6.1" - "@eslint/eslintrc": "npm:^2.1.4" - "@eslint/js": "npm:8.57.0" - "@humanwhocodes/config-array": "npm:^0.11.14" + "@eslint-community/regexpp": "npm:^4.12.1" + "@eslint/config-array": "npm:^0.19.0" + "@eslint/core": "npm:^0.10.0" + "@eslint/eslintrc": "npm:^3.2.0" + "@eslint/js": "npm:9.18.0" + "@eslint/plugin-kit": "npm:^0.2.5" + "@humanfs/node": "npm:^0.16.6" "@humanwhocodes/module-importer": "npm:^1.0.1" - "@nodelib/fs.walk": "npm:^1.2.8" - "@ungap/structured-clone": "npm:^1.2.0" + "@humanwhocodes/retry": "npm:^0.4.1" + "@types/estree": "npm:^1.0.6" + "@types/json-schema": "npm:^7.0.15" ajv: "npm:^6.12.4" chalk: "npm:^4.0.0" - cross-spawn: "npm:^7.0.2" + cross-spawn: "npm:^7.0.6" debug: "npm:^4.3.2" - doctrine: "npm:^3.0.0" escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^7.2.2" - eslint-visitor-keys: "npm:^3.4.3" - espree: "npm:^9.6.1" - esquery: "npm:^1.4.2" + eslint-scope: "npm:^8.2.0" + eslint-visitor-keys: "npm:^4.2.0" + espree: "npm:^10.3.0" + esquery: "npm:^1.5.0" esutils: "npm:^2.0.2" fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^6.0.1" + file-entry-cache: "npm:^8.0.0" find-up: "npm:^5.0.0" glob-parent: "npm:^6.0.2" - globals: "npm:^13.19.0" - graphemer: "npm:^1.4.0" ignore: "npm:^5.2.0" imurmurhash: "npm:^0.1.4" is-glob: "npm:^4.0.0" - is-path-inside: "npm:^3.0.3" - js-yaml: "npm:^4.1.0" json-stable-stringify-without-jsonify: "npm:^1.0.1" - levn: "npm:^0.4.1" lodash.merge: "npm:^4.6.2" minimatch: "npm:^3.1.2" natural-compare: "npm:^1.4.0" optionator: "npm:^0.9.3" - strip-ansi: "npm:^6.0.1" - text-table: "npm:^0.2.0" + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true bin: eslint: bin/eslint.js - checksum: 10c0/00bb96fd2471039a312435a6776fe1fd557c056755eaa2b96093ef3a8508c92c8775d5f754768be6b1dddd09fdd3379ddb231eeb9b6c579ee17ea7d68000a529 + checksum: 10c0/7f592ad228b9bd627a24870fdc875bacdab7bf535d4b67316c4cb791e90d0125130a74769f3c407b0c4b7027b3082ef33864a63ee1024552a60a17db60493f15 languageName: node linkType: hard -"espree@npm:^9.6.0, espree@npm:^9.6.1": - version: 9.6.1 - resolution: "espree@npm:9.6.1" +"espree@npm:^10.0.1, espree@npm:^10.3.0": + version: 10.3.0 + resolution: "espree@npm:10.3.0" dependencies: - acorn: "npm:^8.9.0" + acorn: "npm:^8.14.0" acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10c0/272beeaca70d0a1a047d61baff64db04664a33d7cfb5d144f84bc8a5c6194c6c8ebe9cc594093ca53add88baa23e59b01e69e8a0160ab32eac570482e165c462 languageName: node linkType: hard @@ -2857,12 +2892,12 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.2": - version: 1.5.0 - resolution: "esquery@npm:1.5.0" +"esquery@npm:^1.5.0": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" dependencies: estraverse: "npm:^5.1.0" - checksum: 10c0/a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213 + checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2 languageName: node linkType: hard @@ -3020,12 +3055,12 @@ __metadata: languageName: node linkType: hard -"file-entry-cache@npm:^6.0.1": - version: 6.0.1 - resolution: "file-entry-cache@npm:6.0.1" +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0" dependencies: - flat-cache: "npm:^3.0.4" - checksum: 10c0/58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd + flat-cache: "npm:^4.0.0" + checksum: 10c0/9e2b5938b1cd9b6d7e3612bdc533afd4ac17b2fc646569e9a8abbf2eb48e5eb8e316bc38815a3ef6a1b456f4107f0d0f055a614ca613e75db6bf9ff4d72c1638 languageName: node linkType: hard @@ -3078,14 +3113,13 @@ __metadata: languageName: node linkType: hard -"flat-cache@npm:^3.0.4": - version: 3.2.0 - resolution: "flat-cache@npm:3.2.0" +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" dependencies: flatted: "npm:^3.2.9" - keyv: "npm:^4.5.3" - rimraf: "npm:^3.0.2" - checksum: 10c0/b76f611bd5f5d68f7ae632e3ae503e678d205cf97a17c6ab5b12f6ca61188b5f1f7464503efae6dc18683ed8f0b41460beb48ac4b9ac63fe6201296a91ba2f75 + keyv: "npm:^4.5.4" + checksum: 10c0/2c59d93e9faa2523e4fda6b4ada749bed432cfa28c8e251f33b25795e426a1c6dbada777afb1f74fcfff33934fdbdea921ee738fcc33e71adc9d6eca984a1cfc languageName: node linkType: hard @@ -3324,12 +3358,10 @@ __metadata: languageName: node linkType: hard -"globals@npm:^13.19.0": - version: 13.24.0 - resolution: "globals@npm:13.24.0" - dependencies: - type-fest: "npm:^0.20.2" - checksum: 10c0/d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d languageName: node linkType: hard @@ -3664,13 +3696,6 @@ __metadata: languageName: node linkType: hard -"is-path-inside@npm:^3.0.3": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 - languageName: node - linkType: hard - "is-plain-obj@npm:^4.1.0": version: 4.1.0 resolution: "is-plain-obj@npm:4.1.0" @@ -3891,7 +3916,7 @@ __metadata: languageName: node linkType: hard -"keyv@npm:^4.5.3": +"keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" dependencies: @@ -4115,7 +4140,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -4922,7 +4947,7 @@ __metadata: "@typescript-eslint/eslint-plugin": "npm:^8.17.0" "@typescript-eslint/parser": "npm:^8.17.0" ava: "npm:^6.2.0" - eslint: "npm:^8.56.0" + eslint: "npm:^9.0.0" eslint-config-prettier: "npm:^9.1.0" execa: "npm:9.1.0" fs-extra: "npm:^11.2.0" @@ -5373,13 +5398,6 @@ __metadata: languageName: node linkType: hard -"text-table@npm:^0.2.0": - version: 0.2.0 - resolution: "text-table@npm:0.2.0" - checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c - languageName: node - linkType: hard - "time-zone@npm:^1.0.0": version: 1.0.0 resolution: "time-zone@npm:1.0.0" @@ -5469,13 +5487,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 10c0/dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 - languageName: node - linkType: hard - "typescript@npm:5.1.6 - 5.7.x, typescript@npm:^5.4.5, typescript@npm:~5.7.2": version: 5.7.2 resolution: "typescript@npm:5.7.2"